From b9207b437aa7ac4e31e5822f1111170b60fd41d3 Mon Sep 17 00:00:00 2001 From: Johnny Greco Date: Wed, 24 Jun 2026 17:32:46 +0000 Subject: [PATCH 01/22] Add Reachy Mini OpenShell research scaffold --- projects/README.md | 2 + projects/reachy-mini-openshell/.dockerignore | 10 + projects/reachy-mini-openshell/.gitignore | 8 + projects/reachy-mini-openshell/Dockerfile | 40 ++++ projects/reachy-mini-openshell/Makefile | 22 ++ projects/reachy-mini-openshell/README.md | 95 +++++++++ .../docs/research-plan.md | 31 +++ .../openshell/policy.local-sim.yaml | 36 ++++ projects/reachy-mini-openshell/pyproject.toml | 33 +++ .../src/reachy_openshell/__init__.py | 2 + .../src/reachy_openshell/backend.py | 190 ++++++++++++++++++ .../src/reachy_openshell/smoke.py | 108 ++++++++++ 12 files changed, 577 insertions(+) create mode 100644 projects/reachy-mini-openshell/.dockerignore create mode 100644 projects/reachy-mini-openshell/.gitignore create mode 100644 projects/reachy-mini-openshell/Dockerfile create mode 100644 projects/reachy-mini-openshell/Makefile create mode 100644 projects/reachy-mini-openshell/README.md create mode 100644 projects/reachy-mini-openshell/docs/research-plan.md create mode 100644 projects/reachy-mini-openshell/openshell/policy.local-sim.yaml create mode 100644 projects/reachy-mini-openshell/pyproject.toml create mode 100644 projects/reachy-mini-openshell/src/reachy_openshell/__init__.py create mode 100644 projects/reachy-mini-openshell/src/reachy_openshell/backend.py create mode 100644 projects/reachy-mini-openshell/src/reachy_openshell/smoke.py diff --git a/projects/README.md b/projects/README.md index 165208cb..6363ca58 100644 --- a/projects/README.md +++ b/projects/README.md @@ -8,3 +8,5 @@ Current projects: - `python-project-template`: Minimal, production-ready Python project scaffold managed with uv. +- `reachy-mini-openshell`: Reachy Mini simulator/backend research for running + the backend inside an OpenShell runtime. diff --git a/projects/reachy-mini-openshell/.dockerignore b/projects/reachy-mini-openshell/.dockerignore new file mode 100644 index 00000000..75e643c1 --- /dev/null +++ b/projects/reachy-mini-openshell/.dockerignore @@ -0,0 +1,10 @@ +.git +.venv +__pycache__ +*.pyc +*.pyo +.pytest_cache +.ruff_cache +dist +*.egg-info + diff --git a/projects/reachy-mini-openshell/.gitignore b/projects/reachy-mini-openshell/.gitignore new file mode 100644 index 00000000..9c30bb62 --- /dev/null +++ b/projects/reachy-mini-openshell/.gitignore @@ -0,0 +1,8 @@ +.venv/ +__pycache__/ +*.py[cod] +.pytest_cache/ +.ruff_cache/ +dist/ +*.egg-info/ + diff --git a/projects/reachy-mini-openshell/Dockerfile b/projects/reachy-mini-openshell/Dockerfile new file mode 100644 index 00000000..1a83bbcb --- /dev/null +++ b/projects/reachy-mini-openshell/Dockerfile @@ -0,0 +1,40 @@ +FROM ghcr.io/nvidia/openshell-community/sandboxes/base:latest + +USER root +WORKDIR /sandbox/reachy-mini-openshell + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + build-essential \ + pkg-config \ + python3-dev \ + libcairo2-dev \ + libgirepository1.0-dev \ + libglib2.0-dev \ + libgstreamer-plugins-bad1.0-dev \ + libgstreamer-plugins-base1.0-dev \ + libgstreamer1.0-dev \ + libnice10 \ + libportaudio2 \ + libssl-dev \ + gstreamer1.0-alsa \ + gstreamer1.0-nice \ + gstreamer1.0-plugins-bad \ + gstreamer1.0-plugins-good \ + python3-gi \ + python3-gi-cairo \ + && rm -rf /var/lib/apt/lists/* + +COPY pyproject.toml README.md ./ +COPY src ./src + +RUN python3 -m venv /opt/reachy-mini-openshell +ENV PATH="/opt/reachy-mini-openshell/bin:${PATH}" +ENV PYTHONDONTWRITEBYTECODE=1 + +RUN pip install --no-cache-dir ".[backend,sdk]" +RUN chown -R sandbox:sandbox /sandbox/reachy-mini-openshell /opt/reachy-mini-openshell + +USER sandbox + +CMD ["python3", "-m", "reachy_openshell.backend", "--host", "0.0.0.0", "--port", "8080"] diff --git a/projects/reachy-mini-openshell/Makefile b/projects/reachy-mini-openshell/Makefile new file mode 100644 index 00000000..ce34839a --- /dev/null +++ b/projects/reachy-mini-openshell/Makefile @@ -0,0 +1,22 @@ +UV ?= uv +PYTHON ?= python3 + +.PHONY: install install-backend install-sim sim smoke backend + +install: + $(UV) pip install -e ".[backend,sdk]" + +install-backend: + $(UV) pip install -e ".[backend]" + +install-sim: + $(UV) pip install -e ".[backend,sim]" + +sim: + reachy-mini-daemon --sim --scene $${REACHY_SCENE:-minimal} + +smoke: + $(PYTHON) -m reachy_openshell.smoke + +backend: + $(PYTHON) -m reachy_openshell.backend diff --git a/projects/reachy-mini-openshell/README.md b/projects/reachy-mini-openshell/README.md new file mode 100644 index 00000000..9ae54b84 --- /dev/null +++ b/projects/reachy-mini-openshell/README.md @@ -0,0 +1,95 @@ +# Reachy Mini OpenShell Research + +Minimal research scaffold for running a Reachy Mini backend inside an OpenShell sandbox while starting against the Reachy Mini MuJoCo simulator. + +## Current Shape + +- Host process: runs `reachy-mini-daemon --sim`, which starts the simulator and exposes the daemon API on port `8000`. +- OpenShell process: runs this backend in a sandbox and connects to the host daemon through `host.openshell.internal:8000`. +- First backend surface: `GET /health` for daemon reachability and `POST /moves/smoke` for a small head/antenna motion. + +## Local Simulator Quickstart + +On Linux, install the Reachy Mini GStreamer prerequisites before installing the SDK. The upstream guide lists the full package set and notes that Ubuntu 22.04 needs newer GStreamer packages. + +```bash +cd projects/reachy-mini-openshell +uv venv --python 3.12 +source .venv/bin/activate +uv pip install -e ".[backend,sim]" +``` + +Start the simulator: + +```bash +reachy-mini-daemon --sim --scene minimal +``` + +In another terminal: + +```bash +source .venv/bin/activate +python -m reachy_openshell.smoke +python -m reachy_openshell.backend +``` + +Then probe the backend: + +```bash +curl http://127.0.0.1:8080/health +curl -X POST http://127.0.0.1:8080/moves/smoke +``` + +On macOS, the Reachy docs recommend launching the simulator with `mjpython` instead: + +```bash +mjpython -m reachy_mini.daemon.app.main --sim +``` + +## OpenShell Sandbox Path + +For the sandboxed backend to reach a host-level simulator, bind the Reachy daemon to an interface visible from containers: + +```bash +reachy-mini-daemon --sim --scene minimal --fastapi-host 0.0.0.0 --fastapi-port 8000 +``` + +If your installed daemon exposes different flag names, check `reachy-mini-daemon --help`; the important part is that the daemon is reachable from the sandbox at `host.openshell.internal:8000`. + +Build and run the backend in OpenShell: + +```bash +openshell status +openshell sandbox create \ + --name reachy-mini-backend \ + --from . \ + --policy openshell/policy.local-sim.yaml \ + --env REACHY_HOST=host.openshell.internal \ + --env REACHY_PORT=8000 \ + --env REACHY_CONNECTION_MODE=network \ + -- python3 -m reachy_openshell.backend --host 0.0.0.0 --port 8080 +``` + +Expose the backend service: + +```bash +openshell service expose reachy-mini-backend 8080 +``` + +The sandbox image installs the Linux system packages needed by the Reachy SDK before installing the Python package. + +## Layout + +- `src/reachy_openshell/smoke.py`: SDK smoke motion for the simulator or a real robot daemon. +- `src/reachy_openshell/backend.py`: small FastAPI backend for health checks and the smoke motion. +- `openshell/policy.local-sim.yaml`: starter OpenShell policy allowing Python to reach the host simulator daemon. +- `Dockerfile`: OpenShell sandbox image for the backend, based on the OpenShell community base sandbox. + +## References + +- Reachy Mini simulator setup: https://huggingface.co/docs/reachy_mini/en/platforms/simulation/get_started +- Reachy Mini Linux GStreamer prerequisites: https://huggingface.co/docs/reachy_mini/en/SDK/gstreamer-installation +- Reachy Mini SDK API: https://huggingface.co/docs/reachy_mini/en/API/reachymini +- OpenShell overview: https://docs.nvidia.com/openshell/about/overview +- OpenShell sandbox management: https://docs.nvidia.com/openshell/sandboxes/manage-sandboxes +- OpenShell policy reference: https://docs.nvidia.com/openshell/reference/policy-schema diff --git a/projects/reachy-mini-openshell/docs/research-plan.md b/projects/reachy-mini-openshell/docs/research-plan.md new file mode 100644 index 00000000..adce629f --- /dev/null +++ b/projects/reachy-mini-openshell/docs/research-plan.md @@ -0,0 +1,31 @@ +# Research Plan + +## Working Hypothesis + +Keep the simulator on the host for the first spike so MuJoCo can open its viewer normally. Run only the backend in OpenShell. The sandbox reaches the host daemon through `host.openshell.internal:8000`, using a narrow OpenShell network policy. + +## Phase 0: Simulator Bootstrap + +- Install `reachy-mini[mujoco]` locally. +- Start `reachy-mini-daemon --sim --scene minimal`. +- Verify the Python SDK can connect and run the smoke motion. + +## Phase 1: Sandboxed Backend + +- Build the local OpenShell sandbox image from `Dockerfile`. +- Run `python3 -m reachy_openshell.backend` inside the sandbox. +- Confirm `GET /health` reaches the simulator daemon. +- Confirm `POST /moves/smoke` moves the simulated robot. + +## Phase 2: Policy Tightening + +- Capture the exact daemon traffic used by the SDK. +- Replace the current L4 passthrough policy with REST and WebSocket rules if the daemon API remains stable enough. +- Decide whether PyPI access is needed at runtime or only at image build time. + +## Open Questions + +- Should the simulator stay host-side for development, or should a headless simulator move into its own OpenShell sandbox later? +- Which daemon bind flags are stable across Reachy Mini SDK versions and operating systems? +- Do audio and camera paths need to be disabled or mocked for OpenShell-based backend tests? + diff --git a/projects/reachy-mini-openshell/openshell/policy.local-sim.yaml b/projects/reachy-mini-openshell/openshell/policy.local-sim.yaml new file mode 100644 index 00000000..ebff2820 --- /dev/null +++ b/projects/reachy-mini-openshell/openshell/policy.local-sim.yaml @@ -0,0 +1,36 @@ +version: 1 + +filesystem_policy: + include_workdir: true + read_only: + - /usr + - /lib + - /lib64 + - /etc + - /bin + - /sbin + - /opt + read_write: + - /sandbox + - /workspace + - /tmp + +landlock: + compatibility: best_effort + +process: + run_as_user: sandbox + run_as_group: sandbox + +network_policies: + reachy_daemon: + name: reachy-daemon-local-simulator + endpoints: + - host: host.openshell.internal + port: 8000 + binaries: + - path: /usr/bin/python* + - path: /usr/local/bin/python* + - path: /opt/reachy-mini-openshell/bin/python* + - path: /sandbox/**/python* + diff --git a/projects/reachy-mini-openshell/pyproject.toml b/projects/reachy-mini-openshell/pyproject.toml new file mode 100644 index 00000000..07029d0c --- /dev/null +++ b/projects/reachy-mini-openshell/pyproject.toml @@ -0,0 +1,33 @@ +[build-system] +requires = ["hatchling>=1.25"] +build-backend = "hatchling.build" + +[project] +name = "reachy-mini-openshell" +version = "0.1.0" +description = "Research scaffold for running a Reachy Mini backend in OpenShell against a Reachy Mini simulator." +readme = "README.md" +requires-python = ">=3.10" +dependencies = [] + +[project.optional-dependencies] +backend = [ + "fastapi>=0.115,<1", + "uvicorn[standard]>=0.30,<1", +] +sdk = [ + "reachy-mini>=1.8.3,<2", +] +sim = [ + "reachy-mini[mujoco]>=1.8.3,<2", +] +dev = [ + "ruff>=0.8,<1", +] + +[project.scripts] +reachy-backend = "reachy_openshell.backend:main" +reachy-smoke = "reachy_openshell.smoke:main" + +[tool.hatch.build.targets.wheel] +packages = ["src/reachy_openshell"] diff --git a/projects/reachy-mini-openshell/src/reachy_openshell/__init__.py b/projects/reachy-mini-openshell/src/reachy_openshell/__init__.py new file mode 100644 index 00000000..f38884b6 --- /dev/null +++ b/projects/reachy-mini-openshell/src/reachy_openshell/__init__.py @@ -0,0 +1,2 @@ +__version__ = "0.1.0" + diff --git a/projects/reachy-mini-openshell/src/reachy_openshell/backend.py b/projects/reachy-mini-openshell/src/reachy_openshell/backend.py new file mode 100644 index 00000000..39f8c5fc --- /dev/null +++ b/projects/reachy-mini-openshell/src/reachy_openshell/backend.py @@ -0,0 +1,190 @@ +from __future__ import annotations + +import argparse +import asyncio +import os +import sys +import urllib.error +import urllib.request +from dataclasses import asdict, dataclass +from typing import Any + +from . import __version__ + +LOCAL_HOSTS = {"localhost", "127.0.0.1", "::1"} + +try: + from fastapi import FastAPI, HTTPException +except ImportError: # pragma: no cover - exercised only when optional deps are absent. + FastAPI = None # type: ignore[assignment] + HTTPException = None # type: ignore[assignment] + + +@dataclass(frozen=True) +class Settings: + reachy_host: str + reachy_port: int + connection_mode: str + timeout: float + + @classmethod + def from_env(cls) -> "Settings": + host = os.getenv("REACHY_HOST", "localhost") + return cls( + reachy_host=host, + reachy_port=_env_int("REACHY_PORT", 8000), + connection_mode=os.getenv("REACHY_CONNECTION_MODE", _default_connection_mode(host)), + timeout=_env_float("REACHY_TIMEOUT", 5.0), + ) + + @property + def daemon_base_url(self) -> str: + return f"http://{self.reachy_host}:{self.reachy_port}" + + +def _env_int(name: str, default: int) -> int: + raw = os.getenv(name) + if raw is None: + return default + try: + return int(raw) + except ValueError as exc: + raise ValueError(f"{name} must be an integer, got {raw!r}") from exc + + +def _env_float(name: str, default: float) -> float: + raw = os.getenv(name) + if raw is None: + return default + try: + return float(raw) + except ValueError as exc: + raise ValueError(f"{name} must be a number, got {raw!r}") from exc + + +def _default_connection_mode(host: str) -> str: + return "localhost_only" if host in LOCAL_HOSTS else "network" + + +def daemon_status(settings: Settings) -> dict[str, Any]: + url = f"{settings.daemon_base_url}/api/daemon/status" + try: + with urllib.request.urlopen(url, timeout=settings.timeout) as response: + body = response.read(4096).decode("utf-8", errors="replace") + return { + "ok": 200 <= response.status < 500, + "status_code": response.status, + "url": url, + "body": body, + } + except (urllib.error.URLError, TimeoutError, OSError) as exc: + return { + "ok": False, + "url": url, + "error": str(exc), + } + + +def run_smoke_motion(settings: Settings) -> dict[str, Any]: + try: + from reachy_mini import ReachyMini + from reachy_mini.utils import create_head_pose + except ImportError as exc: + raise RuntimeError( + "Reachy Mini SDK is not installed. Install with `uv pip install -e .` " + "or include the `sim` extra for local simulator work." + ) from exc + + with ReachyMini( + host=settings.reachy_host, + port=settings.reachy_port, + connection_mode=settings.connection_mode, + spawn_daemon=False, + timeout=settings.timeout, + ) as mini: + mini.goto_target( + head=create_head_pose(z=20, roll=10, mm=True, degrees=True), + duration=1.0, + ) + mini.goto_target(antennas=[0.6, -0.6], duration=0.3) + mini.goto_target(antennas=[-0.6, 0.6], duration=0.3) + mini.goto_target( + head=create_head_pose(), + antennas=[0.0, 0.0], + duration=1.0, + ) + + return { + "ok": True, + "reachy": asdict(settings), + "motion": "smoke", + } + + +def _create_app() -> Any: + if FastAPI is None: + return None + + api = FastAPI( + title="Reachy Mini OpenShell Backend", + version=__version__, + ) + + @api.get("/health") + def health() -> dict[str, Any]: + settings = Settings.from_env() + status = daemon_status(settings) + return { + "ok": status["ok"], + "reachy": asdict(settings), + "daemon": status, + } + + @api.post("/moves/smoke") + async def smoke_move() -> dict[str, Any]: + settings = Settings.from_env() + try: + return await asyncio.to_thread(run_smoke_motion, settings) + except Exception as exc: # pragma: no cover - depends on live daemon. + raise HTTPException(status_code=502, detail=str(exc)) from exc + + return api + + +app = _create_app() + + +def main(argv: list[str] | None = None) -> int: + if FastAPI is None: + print( + "FastAPI is not installed. Install backend dependencies with " + '`uv pip install -e ".[backend]"`.', + file=sys.stderr, + ) + return 2 + + parser = argparse.ArgumentParser(description="Run the Reachy Mini OpenShell backend.") + parser.add_argument("--host", default=os.getenv("BACKEND_HOST", "0.0.0.0")) + parser.add_argument("--port", type=int, default=_env_int("BACKEND_PORT", 8080)) + parser.add_argument("--reachy-host", default=None) + parser.add_argument("--reachy-port", type=int, default=None) + parser.add_argument("--connection-mode", default=None) + parser.add_argument("--log-level", default=os.getenv("UVICORN_LOG_LEVEL", "info")) + args = parser.parse_args(argv) + + if args.reachy_host is not None: + os.environ["REACHY_HOST"] = args.reachy_host + if args.reachy_port is not None: + os.environ["REACHY_PORT"] = str(args.reachy_port) + if args.connection_mode is not None: + os.environ["REACHY_CONNECTION_MODE"] = args.connection_mode + + import uvicorn + + uvicorn.run(app, host=args.host, port=args.port, log_level=args.log_level) + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) + diff --git a/projects/reachy-mini-openshell/src/reachy_openshell/smoke.py b/projects/reachy-mini-openshell/src/reachy_openshell/smoke.py new file mode 100644 index 00000000..f86a7ac2 --- /dev/null +++ b/projects/reachy-mini-openshell/src/reachy_openshell/smoke.py @@ -0,0 +1,108 @@ +from __future__ import annotations + +import argparse +import os +import sys +from dataclasses import dataclass + +LOCAL_HOSTS = {"localhost", "127.0.0.1", "::1"} + + +@dataclass(frozen=True) +class ReachyTarget: + host: str + port: int + connection_mode: str + timeout: float + + +def _env_int(name: str, default: int) -> int: + raw = os.getenv(name) + if raw is None: + return default + try: + return int(raw) + except ValueError as exc: + raise ValueError(f"{name} must be an integer, got {raw!r}") from exc + + +def _env_float(name: str, default: float) -> float: + raw = os.getenv(name) + if raw is None: + return default + try: + return float(raw) + except ValueError as exc: + raise ValueError(f"{name} must be a number, got {raw!r}") from exc + + +def _default_connection_mode(host: str) -> str: + return "localhost_only" if host in LOCAL_HOSTS else "network" + + +def build_parser() -> argparse.ArgumentParser: + default_host = os.getenv("REACHY_HOST", "localhost") + parser = argparse.ArgumentParser(description="Run a small Reachy Mini SDK smoke motion.") + parser.add_argument("--host", default=default_host) + parser.add_argument("--port", type=int, default=_env_int("REACHY_PORT", 8000)) + parser.add_argument( + "--connection-mode", + choices=["auto", "localhost_only", "network"], + default=os.getenv("REACHY_CONNECTION_MODE", _default_connection_mode(default_host)), + ) + parser.add_argument("--timeout", type=float, default=_env_float("REACHY_TIMEOUT", 5.0)) + return parser + + +def run_motion(target: ReachyTarget) -> None: + try: + from reachy_mini import ReachyMini + from reachy_mini.utils import create_head_pose + except ImportError as exc: + raise RuntimeError( + "Reachy Mini SDK is not installed. Install with `uv pip install -e .` " + "or `uv pip install -e '.[sim]'` for simulator work." + ) from exc + + with ReachyMini( + host=target.host, + port=target.port, + connection_mode=target.connection_mode, + spawn_daemon=False, + timeout=target.timeout, + ) as mini: + print(f"Connected to Reachy Mini daemon at {target.host}:{target.port}") + print("Moving head and antennas...") + mini.goto_target( + head=create_head_pose(z=20, roll=10, mm=True, degrees=True), + duration=1.0, + ) + mini.goto_target(antennas=[0.6, -0.6], duration=0.3) + mini.goto_target(antennas=[-0.6, 0.6], duration=0.3) + mini.goto_target( + head=create_head_pose(), + antennas=[0.0, 0.0], + duration=1.0, + ) + print("Smoke motion complete.") + + +def main(argv: list[str] | None = None) -> int: + args = build_parser().parse_args(argv) + target = ReachyTarget( + host=args.host, + port=args.port, + connection_mode=args.connection_mode, + timeout=args.timeout, + ) + try: + run_motion(target) + except Exception as exc: + print(f"Reachy smoke motion failed: {exc}", file=sys.stderr) + return 1 + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) + From d2d9bc240fbd9dccd561a7dcc3e637390010c74b Mon Sep 17 00:00:00 2001 From: Johnny Greco Date: Wed, 24 Jun 2026 17:41:20 +0000 Subject: [PATCH 02/22] Address Reachy scaffold review findings --- README.md | 4 +- projects/reachy-mini-openshell/README.md | 8 +- .../openshell/policy.local-sim.yaml | 3 - .../src/reachy_openshell/backend.py | 9 +- .../src/reachy_openshell/smoke.py | 7 +- .../tests/test_reachy_constructors.py | 85 +++++++++++++++++++ 6 files changed, 106 insertions(+), 10 deletions(-) create mode 100644 projects/reachy-mini-openshell/tests/test_reachy_constructors.py diff --git a/README.md b/README.md index d30c3344..4d4540b7 100644 --- a/README.md +++ b/README.md @@ -12,8 +12,8 @@ OpenShell as the runtime. - `docs/dev-notes/` contains research engineering updates, release notes, and build logs worth sharing. - `docs/dev-notes/authors.json` contains reusable Dev Notes author metadata. -- `projects/` contains self-contained research projects and a reusable Python - project template. +- `projects/` contains self-contained research projects, including the reusable + Python template and Reachy Mini OpenShell application. - `scripts/render-dev-notes.py` renders Dev Notes cards, post bylines, and navigation entries from post front matter. - `zensical.toml` configures the documentation site. diff --git a/projects/reachy-mini-openshell/README.md b/projects/reachy-mini-openshell/README.md index 9ae54b84..d29ca663 100644 --- a/projects/reachy-mini-openshell/README.md +++ b/projects/reachy-mini-openshell/README.md @@ -7,10 +7,15 @@ Minimal research scaffold for running a Reachy Mini backend inside an OpenShell - Host process: runs `reachy-mini-daemon --sim`, which starts the simulator and exposes the daemon API on port `8000`. - OpenShell process: runs this backend in a sandbox and connects to the host daemon through `host.openshell.internal:8000`. - First backend surface: `GET /health` for daemon reachability and `POST /moves/smoke` for a small head/antenna motion. +- Default SDK media mode: `no_media`, so the motion-only smoke path does not require camera, audio, or WebRTC access. ## Local Simulator Quickstart -On Linux, install the Reachy Mini GStreamer prerequisites before installing the SDK. The upstream guide lists the full package set and notes that Ubuntu 22.04 needs newer GStreamer packages. +Prerequisites: + +- `uv` +- Python 3.10-3.12. Python 3.12 is recommended by the Reachy Mini docs and used below. +- On Linux, install the Reachy Mini GStreamer prerequisites before installing the SDK. The upstream guide lists the full package set and notes that Ubuntu 22.04 needs newer GStreamer packages. ```bash cd projects/reachy-mini-openshell @@ -67,6 +72,7 @@ openshell sandbox create \ --env REACHY_HOST=host.openshell.internal \ --env REACHY_PORT=8000 \ --env REACHY_CONNECTION_MODE=network \ + --env REACHY_MEDIA_BACKEND=no_media \ -- python3 -m reachy_openshell.backend --host 0.0.0.0 --port 8080 ``` diff --git a/projects/reachy-mini-openshell/openshell/policy.local-sim.yaml b/projects/reachy-mini-openshell/openshell/policy.local-sim.yaml index ebff2820..2eb80b63 100644 --- a/projects/reachy-mini-openshell/openshell/policy.local-sim.yaml +++ b/projects/reachy-mini-openshell/openshell/policy.local-sim.yaml @@ -12,7 +12,6 @@ filesystem_policy: - /opt read_write: - /sandbox - - /workspace - /tmp landlock: @@ -32,5 +31,3 @@ network_policies: - path: /usr/bin/python* - path: /usr/local/bin/python* - path: /opt/reachy-mini-openshell/bin/python* - - path: /sandbox/**/python* - diff --git a/projects/reachy-mini-openshell/src/reachy_openshell/backend.py b/projects/reachy-mini-openshell/src/reachy_openshell/backend.py index 39f8c5fc..47824f82 100644 --- a/projects/reachy-mini-openshell/src/reachy_openshell/backend.py +++ b/projects/reachy-mini-openshell/src/reachy_openshell/backend.py @@ -25,6 +25,7 @@ class Settings: reachy_host: str reachy_port: int connection_mode: str + media_backend: str timeout: float @classmethod @@ -34,6 +35,7 @@ def from_env(cls) -> "Settings": reachy_host=host, reachy_port=_env_int("REACHY_PORT", 8000), connection_mode=os.getenv("REACHY_CONNECTION_MODE", _default_connection_mode(host)), + media_backend=os.getenv("REACHY_MEDIA_BACKEND", "no_media"), timeout=_env_float("REACHY_TIMEOUT", 5.0), ) @@ -91,7 +93,7 @@ def run_smoke_motion(settings: Settings) -> dict[str, Any]: from reachy_mini.utils import create_head_pose except ImportError as exc: raise RuntimeError( - "Reachy Mini SDK is not installed. Install with `uv pip install -e .` " + "Reachy Mini SDK is not installed. Install with `uv pip install -e '.[sdk]'` " "or include the `sim` extra for local simulator work." ) from exc @@ -100,6 +102,7 @@ def run_smoke_motion(settings: Settings) -> dict[str, Any]: port=settings.reachy_port, connection_mode=settings.connection_mode, spawn_daemon=False, + media_backend=settings.media_backend, timeout=settings.timeout, ) as mini: mini.goto_target( @@ -169,6 +172,7 @@ def main(argv: list[str] | None = None) -> int: parser.add_argument("--reachy-host", default=None) parser.add_argument("--reachy-port", type=int, default=None) parser.add_argument("--connection-mode", default=None) + parser.add_argument("--media-backend", default=None) parser.add_argument("--log-level", default=os.getenv("UVICORN_LOG_LEVEL", "info")) args = parser.parse_args(argv) @@ -178,6 +182,8 @@ def main(argv: list[str] | None = None) -> int: os.environ["REACHY_PORT"] = str(args.reachy_port) if args.connection_mode is not None: os.environ["REACHY_CONNECTION_MODE"] = args.connection_mode + if args.media_backend is not None: + os.environ["REACHY_MEDIA_BACKEND"] = args.media_backend import uvicorn @@ -187,4 +193,3 @@ def main(argv: list[str] | None = None) -> int: if __name__ == "__main__": raise SystemExit(main()) - diff --git a/projects/reachy-mini-openshell/src/reachy_openshell/smoke.py b/projects/reachy-mini-openshell/src/reachy_openshell/smoke.py index f86a7ac2..b49d6e59 100644 --- a/projects/reachy-mini-openshell/src/reachy_openshell/smoke.py +++ b/projects/reachy-mini-openshell/src/reachy_openshell/smoke.py @@ -13,6 +13,7 @@ class ReachyTarget: host: str port: int connection_mode: str + media_backend: str timeout: float @@ -50,6 +51,7 @@ def build_parser() -> argparse.ArgumentParser: choices=["auto", "localhost_only", "network"], default=os.getenv("REACHY_CONNECTION_MODE", _default_connection_mode(default_host)), ) + parser.add_argument("--media-backend", default=os.getenv("REACHY_MEDIA_BACKEND", "no_media")) parser.add_argument("--timeout", type=float, default=_env_float("REACHY_TIMEOUT", 5.0)) return parser @@ -60,7 +62,7 @@ def run_motion(target: ReachyTarget) -> None: from reachy_mini.utils import create_head_pose except ImportError as exc: raise RuntimeError( - "Reachy Mini SDK is not installed. Install with `uv pip install -e .` " + "Reachy Mini SDK is not installed. Install with `uv pip install -e '.[sdk]'` " "or `uv pip install -e '.[sim]'` for simulator work." ) from exc @@ -69,6 +71,7 @@ def run_motion(target: ReachyTarget) -> None: port=target.port, connection_mode=target.connection_mode, spawn_daemon=False, + media_backend=target.media_backend, timeout=target.timeout, ) as mini: print(f"Connected to Reachy Mini daemon at {target.host}:{target.port}") @@ -93,6 +96,7 @@ def main(argv: list[str] | None = None) -> int: host=args.host, port=args.port, connection_mode=args.connection_mode, + media_backend=args.media_backend, timeout=args.timeout, ) try: @@ -105,4 +109,3 @@ def main(argv: list[str] | None = None) -> int: if __name__ == "__main__": raise SystemExit(main()) - diff --git a/projects/reachy-mini-openshell/tests/test_reachy_constructors.py b/projects/reachy-mini-openshell/tests/test_reachy_constructors.py new file mode 100644 index 00000000..8aa5005a --- /dev/null +++ b/projects/reachy-mini-openshell/tests/test_reachy_constructors.py @@ -0,0 +1,85 @@ +from __future__ import annotations + +import sys +import types +import unittest +from contextlib import contextmanager, redirect_stdout +from io import StringIO + +from reachy_openshell import backend, smoke + + +class FakeReachyMini: + calls: list[dict[str, object]] = [] + + def __init__(self, **kwargs: object) -> None: + self.calls.append(kwargs) + + def __enter__(self) -> "FakeReachyMini": + return self + + def __exit__(self, *_args: object) -> None: + return None + + def goto_target(self, **_kwargs: object) -> None: + return None + + +@contextmanager +def fake_reachy_modules(): + original = { + name: sys.modules.get(name) + for name in ("reachy_mini", "reachy_mini.utils") + } + + reachy_module = types.ModuleType("reachy_mini") + reachy_module.ReachyMini = FakeReachyMini + utils_module = types.ModuleType("reachy_mini.utils") + utils_module.create_head_pose = lambda **kwargs: {"head_pose": kwargs} + + sys.modules["reachy_mini"] = reachy_module + sys.modules["reachy_mini.utils"] = utils_module + FakeReachyMini.calls = [] + + try: + yield + finally: + for name, module in original.items(): + if module is None: + sys.modules.pop(name, None) + else: + sys.modules[name] = module + + +class ReachyConstructorTests(unittest.TestCase): + def test_backend_smoke_motion_disables_media_by_default(self) -> None: + settings = backend.Settings( + reachy_host="host.openshell.internal", + reachy_port=8000, + connection_mode="network", + media_backend="no_media", + timeout=5.0, + ) + + with fake_reachy_modules(): + backend.run_smoke_motion(settings) + + self.assertEqual(FakeReachyMini.calls[0]["media_backend"], "no_media") + + def test_smoke_cli_disables_media_by_default(self) -> None: + target = smoke.ReachyTarget( + host="localhost", + port=8000, + connection_mode="localhost_only", + media_backend="no_media", + timeout=5.0, + ) + + with fake_reachy_modules(), redirect_stdout(StringIO()): + smoke.run_motion(target) + + self.assertEqual(FakeReachyMini.calls[0]["media_backend"], "no_media") + + +if __name__ == "__main__": + unittest.main() From d106850778f424e5884b371e00ae62232d47a48e Mon Sep 17 00:00:00 2001 From: Johnny Greco Date: Wed, 24 Jun 2026 17:50:49 +0000 Subject: [PATCH 03/22] Tighten Reachy runtime defaults --- projects/reachy-mini-openshell/.dockerignore | 1 - projects/reachy-mini-openshell/.gitignore | 1 - projects/reachy-mini-openshell/Dockerfile | 2 +- projects/reachy-mini-openshell/README.md | 2 +- .../docs/research-plan.md | 1 - .../src/reachy_openshell/__init__.py | 1 - .../src/reachy_openshell/backend.py | 2 +- .../src/reachy_openshell/smoke.py | 20 +++++++------ .../tests/test_reachy_constructors.py | 28 +++++++++---------- 9 files changed, 29 insertions(+), 29 deletions(-) diff --git a/projects/reachy-mini-openshell/.dockerignore b/projects/reachy-mini-openshell/.dockerignore index 75e643c1..d6db44c1 100644 --- a/projects/reachy-mini-openshell/.dockerignore +++ b/projects/reachy-mini-openshell/.dockerignore @@ -7,4 +7,3 @@ __pycache__ .ruff_cache dist *.egg-info - diff --git a/projects/reachy-mini-openshell/.gitignore b/projects/reachy-mini-openshell/.gitignore index 9c30bb62..34e42671 100644 --- a/projects/reachy-mini-openshell/.gitignore +++ b/projects/reachy-mini-openshell/.gitignore @@ -5,4 +5,3 @@ __pycache__/ .ruff_cache/ dist/ *.egg-info/ - diff --git a/projects/reachy-mini-openshell/Dockerfile b/projects/reachy-mini-openshell/Dockerfile index 1a83bbcb..b7be69a1 100644 --- a/projects/reachy-mini-openshell/Dockerfile +++ b/projects/reachy-mini-openshell/Dockerfile @@ -37,4 +37,4 @@ RUN chown -R sandbox:sandbox /sandbox/reachy-mini-openshell /opt/reachy-mini-ope USER sandbox -CMD ["python3", "-m", "reachy_openshell.backend", "--host", "0.0.0.0", "--port", "8080"] +CMD ["python3", "-m", "reachy_openshell.backend", "--host", "127.0.0.1", "--port", "8080"] diff --git a/projects/reachy-mini-openshell/README.md b/projects/reachy-mini-openshell/README.md index d29ca663..9dfae05f 100644 --- a/projects/reachy-mini-openshell/README.md +++ b/projects/reachy-mini-openshell/README.md @@ -73,7 +73,7 @@ openshell sandbox create \ --env REACHY_PORT=8000 \ --env REACHY_CONNECTION_MODE=network \ --env REACHY_MEDIA_BACKEND=no_media \ - -- python3 -m reachy_openshell.backend --host 0.0.0.0 --port 8080 + -- python3 -m reachy_openshell.backend --host 127.0.0.1 --port 8080 ``` Expose the backend service: diff --git a/projects/reachy-mini-openshell/docs/research-plan.md b/projects/reachy-mini-openshell/docs/research-plan.md index adce629f..6e06d210 100644 --- a/projects/reachy-mini-openshell/docs/research-plan.md +++ b/projects/reachy-mini-openshell/docs/research-plan.md @@ -28,4 +28,3 @@ Keep the simulator on the host for the first spike so MuJoCo can open its viewer - Should the simulator stay host-side for development, or should a headless simulator move into its own OpenShell sandbox later? - Which daemon bind flags are stable across Reachy Mini SDK versions and operating systems? - Do audio and camera paths need to be disabled or mocked for OpenShell-based backend tests? - diff --git a/projects/reachy-mini-openshell/src/reachy_openshell/__init__.py b/projects/reachy-mini-openshell/src/reachy_openshell/__init__.py index f38884b6..3dc1f76b 100644 --- a/projects/reachy-mini-openshell/src/reachy_openshell/__init__.py +++ b/projects/reachy-mini-openshell/src/reachy_openshell/__init__.py @@ -1,2 +1 @@ __version__ = "0.1.0" - diff --git a/projects/reachy-mini-openshell/src/reachy_openshell/backend.py b/projects/reachy-mini-openshell/src/reachy_openshell/backend.py index 47824f82..c9f97acf 100644 --- a/projects/reachy-mini-openshell/src/reachy_openshell/backend.py +++ b/projects/reachy-mini-openshell/src/reachy_openshell/backend.py @@ -167,7 +167,7 @@ def main(argv: list[str] | None = None) -> int: return 2 parser = argparse.ArgumentParser(description="Run the Reachy Mini OpenShell backend.") - parser.add_argument("--host", default=os.getenv("BACKEND_HOST", "0.0.0.0")) + parser.add_argument("--host", default=os.getenv("BACKEND_HOST", "127.0.0.1")) parser.add_argument("--port", type=int, default=_env_int("BACKEND_PORT", 8080)) parser.add_argument("--reachy-host", default=None) parser.add_argument("--reachy-port", type=int, default=None) diff --git a/projects/reachy-mini-openshell/src/reachy_openshell/smoke.py b/projects/reachy-mini-openshell/src/reachy_openshell/smoke.py index b49d6e59..5933427c 100644 --- a/projects/reachy-mini-openshell/src/reachy_openshell/smoke.py +++ b/projects/reachy-mini-openshell/src/reachy_openshell/smoke.py @@ -49,13 +49,23 @@ def build_parser() -> argparse.ArgumentParser: parser.add_argument( "--connection-mode", choices=["auto", "localhost_only", "network"], - default=os.getenv("REACHY_CONNECTION_MODE", _default_connection_mode(default_host)), + default=os.getenv("REACHY_CONNECTION_MODE"), ) parser.add_argument("--media-backend", default=os.getenv("REACHY_MEDIA_BACKEND", "no_media")) parser.add_argument("--timeout", type=float, default=_env_float("REACHY_TIMEOUT", 5.0)) return parser +def target_from_args(args: argparse.Namespace) -> ReachyTarget: + return ReachyTarget( + host=args.host, + port=args.port, + connection_mode=args.connection_mode or _default_connection_mode(args.host), + media_backend=args.media_backend, + timeout=args.timeout, + ) + + def run_motion(target: ReachyTarget) -> None: try: from reachy_mini import ReachyMini @@ -92,13 +102,7 @@ def run_motion(target: ReachyTarget) -> None: def main(argv: list[str] | None = None) -> int: args = build_parser().parse_args(argv) - target = ReachyTarget( - host=args.host, - port=args.port, - connection_mode=args.connection_mode, - media_backend=args.media_backend, - timeout=args.timeout, - ) + target = target_from_args(args) try: run_motion(target) except Exception as exc: diff --git a/projects/reachy-mini-openshell/tests/test_reachy_constructors.py b/projects/reachy-mini-openshell/tests/test_reachy_constructors.py index 8aa5005a..59547309 100644 --- a/projects/reachy-mini-openshell/tests/test_reachy_constructors.py +++ b/projects/reachy-mini-openshell/tests/test_reachy_constructors.py @@ -1,10 +1,12 @@ from __future__ import annotations +import os import sys import types import unittest from contextlib import contextmanager, redirect_stdout from io import StringIO +from unittest.mock import patch from reachy_openshell import backend, smoke @@ -53,13 +55,8 @@ def fake_reachy_modules(): class ReachyConstructorTests(unittest.TestCase): def test_backend_smoke_motion_disables_media_by_default(self) -> None: - settings = backend.Settings( - reachy_host="host.openshell.internal", - reachy_port=8000, - connection_mode="network", - media_backend="no_media", - timeout=5.0, - ) + with patch.dict(os.environ, {}, clear=True): + settings = backend.Settings.from_env() with fake_reachy_modules(): backend.run_smoke_motion(settings) @@ -67,19 +64,22 @@ def test_backend_smoke_motion_disables_media_by_default(self) -> None: self.assertEqual(FakeReachyMini.calls[0]["media_backend"], "no_media") def test_smoke_cli_disables_media_by_default(self) -> None: - target = smoke.ReachyTarget( - host="localhost", - port=8000, - connection_mode="localhost_only", - media_backend="no_media", - timeout=5.0, - ) + with patch.dict(os.environ, {}, clear=True): + target = smoke.target_from_args(smoke.build_parser().parse_args([])) with fake_reachy_modules(), redirect_stdout(StringIO()): smoke.run_motion(target) self.assertEqual(FakeReachyMini.calls[0]["media_backend"], "no_media") + def test_smoke_cli_uses_network_mode_for_non_local_cli_host(self) -> None: + with patch.dict(os.environ, {}, clear=True): + target = smoke.target_from_args( + smoke.build_parser().parse_args(["--host", "host.openshell.internal"]) + ) + + self.assertEqual(target.connection_mode, "network") + if __name__ == "__main__": unittest.main() From 7215d5e914e78ac52494758649bd002e90c77209 Mon Sep 17 00:00:00 2001 From: Johnny Greco Date: Wed, 24 Jun 2026 17:14:57 -0400 Subject: [PATCH 04/22] Refactor Reachy OpenShell around conversation app --- projects/reachy-mini-openshell/.dockerignore | 9 - projects/reachy-mini-openshell/.env.example | 8 + projects/reachy-mini-openshell/.gitignore | 57 +- projects/reachy-mini-openshell/Dockerfile | 40 - projects/reachy-mini-openshell/LICENSE | 201 +++++ projects/reachy-mini-openshell/Makefile | 22 - projects/reachy-mini-openshell/README.md | 110 +-- .../docs/research-plan.md | 30 - projects/reachy-mini-openshell/index.html | 42 + .../openshell/policy.local-sim.yaml | 33 - projects/reachy-mini-openshell/pyproject.toml | 84 +- .../reachy_mini_conversation_app/__init__.py | 1 + .../reachy_mini_conversation_app/__main__.py | 5 + .../audio/__init__.py | 1 + .../audio/head_wobbler.py | 181 ++++ .../audio/speech_tapper.py | 268 ++++++ .../camera_worker.py | 241 +++++ .../reachy_mini_conversation_app/config.py | 73 ++ .../reachy_mini_conversation_app/console.py | 419 +++++++++ .../dance_emotion_moves.py | 86 ++ .../goto_queue_move.py | 68 ++ .../images/reachymini_avatar.png | Bin 0 -> 1228716 bytes .../images/user_avatar.png | Bin 0 -> 1111878 bytes .../src/reachy_mini_conversation_app/main.py | 255 ++++++ .../src/reachy_mini_conversation_app/moves.py | 849 ++++++++++++++++++ .../openai_realtime.py | 811 +++++++++++++++++ .../profiles/__init__.py | 1 + .../__init__.py | 1 + .../instructions.txt | 3 + .../sweep_look.py | 115 +++ .../tools.txt | 5 + .../reachy_mini_conversation_app/prompts.py | 47 + .../static/index.html | 54 ++ .../static/main.js | 136 +++ .../static/style.css | 210 +++++ .../tools/__init__.py | 1 + .../tools/background_tool_manager.py | 412 +++++++++ .../tools/camera.py | 68 ++ .../tools/core_tools.py | 213 +++++ .../tools/dance.py | 86 ++ .../tools/do_nothing.py | 30 + .../tools/head_tracking.py | 31 + .../tools/move_head.py | 79 ++ .../tools/play_emotion.py | 84 ++ .../tools/stop_dance.py | 31 + .../tools/stop_emotion.py | 31 + .../tools/task_cancel.py | 74 ++ .../tools/task_status.py | 104 +++ .../tools/tool_constants.py | 17 + .../src/reachy_mini_conversation_app/utils.py | 123 +++ .../vision/__init__.py | 1 + .../vision/processors.py | 331 +++++++ .../vision/yolo_head_tracker.py | 148 +++ .../src/reachy_openshell/__init__.py | 1 - .../src/reachy_openshell/backend.py | 195 ---- .../src/reachy_openshell/smoke.py | 115 --- projects/reachy-mini-openshell/style.css | 113 +++ .../tests/audio/test_head_wobbler.py | 110 +++ .../reachy-mini-openshell/tests/conftest.py | 15 + .../tests/test_openai_realtime.py | 544 +++++++++++ .../tests/test_reachy_constructors.py | 85 -- .../tools/test_background_tool_manager.py | 545 +++++++++++ .../tests/vision/test_processors.py | 498 ++++++++++ 63 files changed, 7916 insertions(+), 635 deletions(-) delete mode 100644 projects/reachy-mini-openshell/.dockerignore create mode 100644 projects/reachy-mini-openshell/.env.example delete mode 100644 projects/reachy-mini-openshell/Dockerfile create mode 100644 projects/reachy-mini-openshell/LICENSE delete mode 100644 projects/reachy-mini-openshell/Makefile delete mode 100644 projects/reachy-mini-openshell/docs/research-plan.md create mode 100644 projects/reachy-mini-openshell/index.html delete mode 100644 projects/reachy-mini-openshell/openshell/policy.local-sim.yaml create mode 100644 projects/reachy-mini-openshell/src/reachy_mini_conversation_app/__init__.py create mode 100644 projects/reachy-mini-openshell/src/reachy_mini_conversation_app/__main__.py create mode 100644 projects/reachy-mini-openshell/src/reachy_mini_conversation_app/audio/__init__.py create mode 100644 projects/reachy-mini-openshell/src/reachy_mini_conversation_app/audio/head_wobbler.py create mode 100644 projects/reachy-mini-openshell/src/reachy_mini_conversation_app/audio/speech_tapper.py create mode 100644 projects/reachy-mini-openshell/src/reachy_mini_conversation_app/camera_worker.py create mode 100644 projects/reachy-mini-openshell/src/reachy_mini_conversation_app/config.py create mode 100644 projects/reachy-mini-openshell/src/reachy_mini_conversation_app/console.py create mode 100644 projects/reachy-mini-openshell/src/reachy_mini_conversation_app/dance_emotion_moves.py create mode 100644 projects/reachy-mini-openshell/src/reachy_mini_conversation_app/goto_queue_move.py create mode 100644 projects/reachy-mini-openshell/src/reachy_mini_conversation_app/images/reachymini_avatar.png create mode 100644 projects/reachy-mini-openshell/src/reachy_mini_conversation_app/images/user_avatar.png create mode 100644 projects/reachy-mini-openshell/src/reachy_mini_conversation_app/main.py create mode 100644 projects/reachy-mini-openshell/src/reachy_mini_conversation_app/moves.py create mode 100644 projects/reachy-mini-openshell/src/reachy_mini_conversation_app/openai_realtime.py create mode 100644 projects/reachy-mini-openshell/src/reachy_mini_conversation_app/profiles/__init__.py create mode 100644 projects/reachy-mini-openshell/src/reachy_mini_conversation_app/profiles/_reachy_mini_conversation_app_locked_profile/__init__.py create mode 100644 projects/reachy-mini-openshell/src/reachy_mini_conversation_app/profiles/_reachy_mini_conversation_app_locked_profile/instructions.txt create mode 100644 projects/reachy-mini-openshell/src/reachy_mini_conversation_app/profiles/_reachy_mini_conversation_app_locked_profile/sweep_look.py create mode 100644 projects/reachy-mini-openshell/src/reachy_mini_conversation_app/profiles/_reachy_mini_conversation_app_locked_profile/tools.txt create mode 100644 projects/reachy-mini-openshell/src/reachy_mini_conversation_app/prompts.py create mode 100644 projects/reachy-mini-openshell/src/reachy_mini_conversation_app/static/index.html create mode 100644 projects/reachy-mini-openshell/src/reachy_mini_conversation_app/static/main.js create mode 100644 projects/reachy-mini-openshell/src/reachy_mini_conversation_app/static/style.css create mode 100644 projects/reachy-mini-openshell/src/reachy_mini_conversation_app/tools/__init__.py create mode 100644 projects/reachy-mini-openshell/src/reachy_mini_conversation_app/tools/background_tool_manager.py create mode 100644 projects/reachy-mini-openshell/src/reachy_mini_conversation_app/tools/camera.py create mode 100644 projects/reachy-mini-openshell/src/reachy_mini_conversation_app/tools/core_tools.py create mode 100644 projects/reachy-mini-openshell/src/reachy_mini_conversation_app/tools/dance.py create mode 100644 projects/reachy-mini-openshell/src/reachy_mini_conversation_app/tools/do_nothing.py create mode 100644 projects/reachy-mini-openshell/src/reachy_mini_conversation_app/tools/head_tracking.py create mode 100644 projects/reachy-mini-openshell/src/reachy_mini_conversation_app/tools/move_head.py create mode 100644 projects/reachy-mini-openshell/src/reachy_mini_conversation_app/tools/play_emotion.py create mode 100644 projects/reachy-mini-openshell/src/reachy_mini_conversation_app/tools/stop_dance.py create mode 100644 projects/reachy-mini-openshell/src/reachy_mini_conversation_app/tools/stop_emotion.py create mode 100644 projects/reachy-mini-openshell/src/reachy_mini_conversation_app/tools/task_cancel.py create mode 100644 projects/reachy-mini-openshell/src/reachy_mini_conversation_app/tools/task_status.py create mode 100644 projects/reachy-mini-openshell/src/reachy_mini_conversation_app/tools/tool_constants.py create mode 100644 projects/reachy-mini-openshell/src/reachy_mini_conversation_app/utils.py create mode 100644 projects/reachy-mini-openshell/src/reachy_mini_conversation_app/vision/__init__.py create mode 100644 projects/reachy-mini-openshell/src/reachy_mini_conversation_app/vision/processors.py create mode 100644 projects/reachy-mini-openshell/src/reachy_mini_conversation_app/vision/yolo_head_tracker.py delete mode 100644 projects/reachy-mini-openshell/src/reachy_openshell/__init__.py delete mode 100644 projects/reachy-mini-openshell/src/reachy_openshell/backend.py delete mode 100644 projects/reachy-mini-openshell/src/reachy_openshell/smoke.py create mode 100644 projects/reachy-mini-openshell/style.css create mode 100644 projects/reachy-mini-openshell/tests/audio/test_head_wobbler.py create mode 100644 projects/reachy-mini-openshell/tests/conftest.py create mode 100644 projects/reachy-mini-openshell/tests/test_openai_realtime.py delete mode 100644 projects/reachy-mini-openshell/tests/test_reachy_constructors.py create mode 100644 projects/reachy-mini-openshell/tests/tools/test_background_tool_manager.py create mode 100644 projects/reachy-mini-openshell/tests/vision/test_processors.py diff --git a/projects/reachy-mini-openshell/.dockerignore b/projects/reachy-mini-openshell/.dockerignore deleted file mode 100644 index d6db44c1..00000000 --- a/projects/reachy-mini-openshell/.dockerignore +++ /dev/null @@ -1,9 +0,0 @@ -.git -.venv -__pycache__ -*.pyc -*.pyo -.pytest_cache -.ruff_cache -dist -*.egg-info diff --git a/projects/reachy-mini-openshell/.env.example b/projects/reachy-mini-openshell/.env.example new file mode 100644 index 00000000..12cf25b2 --- /dev/null +++ b/projects/reachy-mini-openshell/.env.example @@ -0,0 +1,8 @@ +OPENAI_API_KEY= +MODEL_NAME="gpt-realtime" + +# Used only with --local-vision. +LOCAL_VISION_MODEL=HuggingFaceTB/SmolVLM2-2.2B-Instruct + +HF_HOME=./cache +HF_TOKEN= diff --git a/projects/reachy-mini-openshell/.gitignore b/projects/reachy-mini-openshell/.gitignore index 34e42671..2451acc1 100644 --- a/projects/reachy-mini-openshell/.gitignore +++ b/projects/reachy-mini-openshell/.gitignore @@ -1,7 +1,58 @@ -.venv/ +# Python __pycache__/ *.py[cod] -.pytest_cache/ -.ruff_cache/ +*$py.class +*.so + +# Virtual environments +.venv/ +venv/ +ENV/ +env/ + +# Environment variables +.env + +# Build and distribution +build/ dist/ *.egg-info/ +.eggs/ + +# Testing +.pytest_cache/ +.coverage +.hypothesis/ +htmlcov/ +coverage.xml +*.cover + +# Linting and formatting +.ruff_cache/ +.mypy_cache/ + +# IDE +.vscode/ +.idea/ +*.swp +*.swo + +# Security +*.key +*.pem +*.crt +*.csr + +# Temporary files +tmp/ +*.log +cache/ + +# macOS +.DS_Store + +# Linux +*~ +.directory +.Trash-* +.nfs* diff --git a/projects/reachy-mini-openshell/Dockerfile b/projects/reachy-mini-openshell/Dockerfile deleted file mode 100644 index b7be69a1..00000000 --- a/projects/reachy-mini-openshell/Dockerfile +++ /dev/null @@ -1,40 +0,0 @@ -FROM ghcr.io/nvidia/openshell-community/sandboxes/base:latest - -USER root -WORKDIR /sandbox/reachy-mini-openshell - -RUN apt-get update \ - && apt-get install -y --no-install-recommends \ - build-essential \ - pkg-config \ - python3-dev \ - libcairo2-dev \ - libgirepository1.0-dev \ - libglib2.0-dev \ - libgstreamer-plugins-bad1.0-dev \ - libgstreamer-plugins-base1.0-dev \ - libgstreamer1.0-dev \ - libnice10 \ - libportaudio2 \ - libssl-dev \ - gstreamer1.0-alsa \ - gstreamer1.0-nice \ - gstreamer1.0-plugins-bad \ - gstreamer1.0-plugins-good \ - python3-gi \ - python3-gi-cairo \ - && rm -rf /var/lib/apt/lists/* - -COPY pyproject.toml README.md ./ -COPY src ./src - -RUN python3 -m venv /opt/reachy-mini-openshell -ENV PATH="/opt/reachy-mini-openshell/bin:${PATH}" -ENV PYTHONDONTWRITEBYTECODE=1 - -RUN pip install --no-cache-dir ".[backend,sdk]" -RUN chown -R sandbox:sandbox /sandbox/reachy-mini-openshell /opt/reachy-mini-openshell - -USER sandbox - -CMD ["python3", "-m", "reachy_openshell.backend", "--host", "127.0.0.1", "--port", "8080"] diff --git a/projects/reachy-mini-openshell/LICENSE b/projects/reachy-mini-openshell/LICENSE new file mode 100644 index 00000000..261eeb9e --- /dev/null +++ b/projects/reachy-mini-openshell/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/projects/reachy-mini-openshell/Makefile b/projects/reachy-mini-openshell/Makefile deleted file mode 100644 index ce34839a..00000000 --- a/projects/reachy-mini-openshell/Makefile +++ /dev/null @@ -1,22 +0,0 @@ -UV ?= uv -PYTHON ?= python3 - -.PHONY: install install-backend install-sim sim smoke backend - -install: - $(UV) pip install -e ".[backend,sdk]" - -install-backend: - $(UV) pip install -e ".[backend]" - -install-sim: - $(UV) pip install -e ".[backend,sim]" - -sim: - reachy-mini-daemon --sim --scene $${REACHY_SCENE:-minimal} - -smoke: - $(PYTHON) -m reachy_openshell.smoke - -backend: - $(PYTHON) -m reachy_openshell.backend diff --git a/projects/reachy-mini-openshell/README.md b/projects/reachy-mini-openshell/README.md index 9dfae05f..de3e35db 100644 --- a/projects/reachy-mini-openshell/README.md +++ b/projects/reachy-mini-openshell/README.md @@ -1,101 +1,53 @@ -# Reachy Mini OpenShell Research +--- +title: Reachy OpenShell +emoji: 🤖 +colorFrom: purple +colorTo: gray +sdk: static +pinned: false +tags: + - reachy_mini + - reachy_mini_python_app +--- -Minimal research scaffold for running a Reachy Mini backend inside an OpenShell sandbox while starting against the Reachy Mini MuJoCo simulator. +# Reachy OpenShell -## Current Shape +Reachy OpenShell is a locked-profile fork of the Reachy Mini conversation app +for OpenShell research. -- Host process: runs `reachy-mini-daemon --sim`, which starts the simulator and exposes the daemon API on port `8000`. -- OpenShell process: runs this backend in a sandbox and connects to the host daemon through `host.openshell.internal:8000`. -- First backend surface: `GET /health` for daemon reachability and `POST /moves/smoke` for a small head/antenna motion. -- Default SDK media mode: `no_media`, so the motion-only smoke path does not require camera, audio, or WebRTC access. +## Customize -## Local Simulator Quickstart +The app is locked to: -Prerequisites: - -- `uv` -- Python 3.10-3.12. Python 3.12 is recommended by the Reachy Mini docs and used below. -- On Linux, install the Reachy Mini GStreamer prerequisites before installing the SDK. The upstream guide lists the full package set and notes that Ubuntu 22.04 needs newer GStreamer packages. - -```bash -cd projects/reachy-mini-openshell -uv venv --python 3.12 -source .venv/bin/activate -uv pip install -e ".[backend,sim]" -``` - -Start the simulator: - -```bash -reachy-mini-daemon --sim --scene minimal -``` - -In another terminal: - -```bash -source .venv/bin/activate -python -m reachy_openshell.smoke -python -m reachy_openshell.backend +```text +src/reachy_mini_conversation_app/profiles/_reachy_mini_conversation_app_locked_profile ``` -Then probe the backend: +That folder is the customization surface: -```bash -curl http://127.0.0.1:8080/health -curl -X POST http://127.0.0.1:8080/moves/smoke -``` - -On macOS, the Reachy docs recommend launching the simulator with `mjpython` instead: - -```bash -mjpython -m reachy_mini.daemon.app.main --sim -``` +- `instructions.txt`: system prompt for the assistant +- `tools.txt`: explicit tool allow-list +- Python files in that folder: profile-local tools -## OpenShell Sandbox Path +## Run Locally -For the sandboxed backend to reach a host-level simulator, bind the Reachy daemon to an interface visible from containers: +Start the Reachy Mini daemon first. For the simulator baseline: ```bash -reachy-mini-daemon --sim --scene minimal --fastapi-host 0.0.0.0 --fastapi-port 8000 +reachy-mini-daemon --sim --scene minimal --headless --no-media --fastapi-host 127.0.0.1 --fastapi-port 8000 --dataset-update-interval 0 ``` -If your installed daemon exposes different flag names, check `reachy-mini-daemon --help`; the important part is that the daemon is reachable from the sandbox at `host.openshell.internal:8000`. - -Build and run the backend in OpenShell: +Then run the conversation app: ```bash -openshell status -openshell sandbox create \ - --name reachy-mini-backend \ - --from . \ - --policy openshell/policy.local-sim.yaml \ - --env REACHY_HOST=host.openshell.internal \ - --env REACHY_PORT=8000 \ - --env REACHY_CONNECTION_MODE=network \ - --env REACHY_MEDIA_BACKEND=no_media \ - -- python3 -m reachy_openshell.backend --host 127.0.0.1 --port 8080 +python -m reachy_mini_conversation_app --gradio --no-camera ``` -Expose the backend service: +The app also installs a console script: ```bash -openshell service expose reachy-mini-backend 8080 +reachy-mini-conversation-app --gradio --no-camera ``` -The sandbox image installs the Linux system packages needed by the Reachy SDK before installing the Python package. - -## Layout - -- `src/reachy_openshell/smoke.py`: SDK smoke motion for the simulator or a real robot daemon. -- `src/reachy_openshell/backend.py`: small FastAPI backend for health checks and the smoke motion. -- `openshell/policy.local-sim.yaml`: starter OpenShell policy allowing Python to reach the host simulator daemon. -- `Dockerfile`: OpenShell sandbox image for the backend, based on the OpenShell community base sandbox. - -## References - -- Reachy Mini simulator setup: https://huggingface.co/docs/reachy_mini/en/platforms/simulation/get_started -- Reachy Mini Linux GStreamer prerequisites: https://huggingface.co/docs/reachy_mini/en/SDK/gstreamer-installation -- Reachy Mini SDK API: https://huggingface.co/docs/reachy_mini/en/API/reachymini -- OpenShell overview: https://docs.nvidia.com/openshell/about/overview -- OpenShell sandbox management: https://docs.nvidia.com/openshell/sandboxes/manage-sandboxes -- OpenShell policy reference: https://docs.nvidia.com/openshell/reference/policy-schema +Simulation mode auto-enables Gradio; `--gradio` is included here so the expected +browser interface is explicit. diff --git a/projects/reachy-mini-openshell/docs/research-plan.md b/projects/reachy-mini-openshell/docs/research-plan.md deleted file mode 100644 index 6e06d210..00000000 --- a/projects/reachy-mini-openshell/docs/research-plan.md +++ /dev/null @@ -1,30 +0,0 @@ -# Research Plan - -## Working Hypothesis - -Keep the simulator on the host for the first spike so MuJoCo can open its viewer normally. Run only the backend in OpenShell. The sandbox reaches the host daemon through `host.openshell.internal:8000`, using a narrow OpenShell network policy. - -## Phase 0: Simulator Bootstrap - -- Install `reachy-mini[mujoco]` locally. -- Start `reachy-mini-daemon --sim --scene minimal`. -- Verify the Python SDK can connect and run the smoke motion. - -## Phase 1: Sandboxed Backend - -- Build the local OpenShell sandbox image from `Dockerfile`. -- Run `python3 -m reachy_openshell.backend` inside the sandbox. -- Confirm `GET /health` reaches the simulator daemon. -- Confirm `POST /moves/smoke` moves the simulated robot. - -## Phase 2: Policy Tightening - -- Capture the exact daemon traffic used by the SDK. -- Replace the current L4 passthrough policy with REST and WebSocket rules if the daemon API remains stable enough. -- Decide whether PyPI access is needed at runtime or only at image build time. - -## Open Questions - -- Should the simulator stay host-side for development, or should a headless simulator move into its own OpenShell sandbox later? -- Which daemon bind flags are stable across Reachy Mini SDK versions and operating systems? -- Do audio and camera paths need to be disabled or mocked for OpenShell-based backend tests? diff --git a/projects/reachy-mini-openshell/index.html b/projects/reachy-mini-openshell/index.html new file mode 100644 index 00000000..d241f1fc --- /dev/null +++ b/projects/reachy-mini-openshell/index.html @@ -0,0 +1,42 @@ + + + + + + Reachy OpenShell + + + +
+
+
+
Reachy Mini App
+

Reachy OpenShell

+

A conversation app for Reachy Mini robot.

+
+ +
+
+
+

Getting Started

+

Installation

+
+
+

Install this app on your Reachy Mini using the app store, or run it locally:

+
uv sync
+reachy-mini-daemon --sim --scene minimal --headless --no-media
+python -m reachy_mini_conversation_app --gradio --no-camera
+
+ +
+
+
+

Configuration

+

OpenAI API Key

+
+
+

This app requires an OpenAI API key for voice conversations. Set it via the web interface or environment variable.

+
+
+ + diff --git a/projects/reachy-mini-openshell/openshell/policy.local-sim.yaml b/projects/reachy-mini-openshell/openshell/policy.local-sim.yaml deleted file mode 100644 index 2eb80b63..00000000 --- a/projects/reachy-mini-openshell/openshell/policy.local-sim.yaml +++ /dev/null @@ -1,33 +0,0 @@ -version: 1 - -filesystem_policy: - include_workdir: true - read_only: - - /usr - - /lib - - /lib64 - - /etc - - /bin - - /sbin - - /opt - read_write: - - /sandbox - - /tmp - -landlock: - compatibility: best_effort - -process: - run_as_user: sandbox - run_as_group: sandbox - -network_policies: - reachy_daemon: - name: reachy-daemon-local-simulator - endpoints: - - host: host.openshell.internal - port: 8000 - binaries: - - path: /usr/bin/python* - - path: /usr/local/bin/python* - - path: /opt/reachy-mini-openshell/bin/python* diff --git a/projects/reachy-mini-openshell/pyproject.toml b/projects/reachy-mini-openshell/pyproject.toml index 07029d0c..6ddc6313 100644 --- a/projects/reachy-mini-openshell/pyproject.toml +++ b/projects/reachy-mini-openshell/pyproject.toml @@ -1,33 +1,71 @@ [build-system] -requires = ["hatchling>=1.25"] -build-backend = "hatchling.build" +requires = [ "setuptools",] +build-backend = "setuptools.build_meta" [project] -name = "reachy-mini-openshell" -version = "0.1.0" -description = "Research scaffold for running a Reachy Mini backend in OpenShell against a Reachy Mini simulator." +name = "reachy_mini_conversation_app" +version = "0.3.0" +description = "OpenShell-oriented fork of the Reachy Mini conversation app." readme = "README.md" requires-python = ">=3.10" -dependencies = [] +dependencies = [ "aiortc>=1.13.0", "fastrtc>=0.0.34", "gradio==5.50.1.dev1", "huggingface-hub==1.3.0", "opencv-python>=4.12.0.88", "python-dotenv", "openai>=2.1", "reachy_mini_dances_library", "reachy_mini_toolbox", "reachy-mini>=1.5.0", "eclipse-zenoh~=1.7.0", "gradio_client>=1.13.3",] +[[project.authors]] +name = "Pollen Robotics" +email = "contact@pollen-robotics.com" + +[dependency-groups] +dev = [ "pytest", "pytest-asyncio", "ruff==0.12.0", "mypy==1.18.2", "pre-commit", "types-requests", "python-semantic-release>=10.5.3",] [project.optional-dependencies] -backend = [ - "fastapi>=0.115,<1", - "uvicorn[standard]>=0.30,<1", -] -sdk = [ - "reachy-mini>=1.8.3,<2", -] -sim = [ - "reachy-mini[mujoco]>=1.8.3,<2", -] -dev = [ - "ruff>=0.8,<1", -] +local_vision = [ "torch>=2.1", "transformers==5.0.0rc2", "num2words",] +yolo_vision = [ "ultralytics", "supervision",] +mediapipe_vision = [ "mediapipe==0.10.14",] +all_vision = [ "torch>=2.1", "transformers==5.0.0rc2", "num2words", "ultralytics", "supervision", "mediapipe==0.10.14",] [project.scripts] -reachy-backend = "reachy_openshell.backend:main" -reachy-smoke = "reachy_openshell.smoke:main" +reachy-mini-conversation-app = "reachy_mini_conversation_app.main:main" + +[tool.setuptools] +include-package-data = true + +[tool.ruff] +line-length = 119 +exclude = [ ".venv", "dist", "build", "**/__pycache__", "*.egg-info", ".mypy_cache", ".pytest_cache",] + +[tool.mypy] +python_version = "3.12" +files = [ "src/",] +ignore_missing_imports = true +strict = true +show_error_codes = true +warn_unused_ignores = true + +[project.entry-points.reachy_mini_apps] +reachy_mini_conversation_app = "reachy_mini_conversation_app.main:ReachyMiniConversationApp" + +[tool.setuptools.package-dir] +"" = "src" + +[tool.setuptools.package-data] +reachy_mini_conversation_app = [ "images/*", "static/*", "profiles/**/*.py", "profiles/**/*.txt",] + +[tool.ruff.lint] +select = [ "E", "F", "W", "I", "C4", "D",] +ignore = [ "E501", "D100", "D203", "D213",] + +[tool.ruff.format] +quote-style = "double" +indent-style = "space" +skip-magic-trailing-comma = false +line-ending = "auto" + +[tool.setuptools.packages.find] +where = [ "src",] -[tool.hatch.build.targets.wheel] -packages = ["src/reachy_openshell"] +[tool.ruff.lint.isort] +length-sort = true +lines-after-imports = 2 +no-lines-before = [ "standard-library", "local-folder",] +known-local-folder = [ "reachy_mini_conversation_app",] +known-first-party = [ "reachy_mini", "reachy_mini_dances_library", "reachy_mini_toolbox",] +split-on-trailing-comma = true diff --git a/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/__init__.py b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/__init__.py new file mode 100644 index 00000000..60dc15c4 --- /dev/null +++ b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/__init__.py @@ -0,0 +1 @@ +"""Nothing (for ruff).""" diff --git a/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/__main__.py b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/__main__.py new file mode 100644 index 00000000..e5091e7b --- /dev/null +++ b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/__main__.py @@ -0,0 +1,5 @@ +from reachy_mini_conversation_app.main import main + + +if __name__ == "__main__": + main() diff --git a/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/audio/__init__.py b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/audio/__init__.py new file mode 100644 index 00000000..60dc15c4 --- /dev/null +++ b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/audio/__init__.py @@ -0,0 +1 @@ +"""Nothing (for ruff).""" diff --git a/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/audio/head_wobbler.py b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/audio/head_wobbler.py new file mode 100644 index 00000000..805d1cdb --- /dev/null +++ b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/audio/head_wobbler.py @@ -0,0 +1,181 @@ +"""Moves head given audio samples.""" + +import time +import queue +import base64 +import logging +import threading +from typing import Tuple +from collections.abc import Callable + +import numpy as np +from numpy.typing import NDArray + +from reachy_mini_conversation_app.audio.speech_tapper import HOP_MS, SwayRollRT + + +SAMPLE_RATE = 24000 +MOVEMENT_LATENCY_S = 0.2 # seconds between audio and robot movement +logger = logging.getLogger(__name__) + + +class HeadWobbler: + """Converts audio deltas (base64) into head movement offsets.""" + + def __init__(self, set_speech_offsets: Callable[[Tuple[float, float, float, float, float, float]], None]) -> None: + """Initialize the head wobbler.""" + self._apply_offsets = set_speech_offsets + self._base_ts: float | None = None + self._hops_done: int = 0 + + self.audio_queue: "queue.Queue[Tuple[int, int, NDArray[np.int16]]]" = queue.Queue() + self.sway = SwayRollRT() + + # Synchronization primitives + self._state_lock = threading.Lock() + self._sway_lock = threading.Lock() + self._generation = 0 + + self._stop_event = threading.Event() + self._thread: threading.Thread | None = None + + def feed(self, delta_b64: str) -> None: + """Thread-safe: push audio into the consumer queue.""" + buf = np.frombuffer(base64.b64decode(delta_b64), dtype=np.int16).reshape(1, -1) + with self._state_lock: + generation = self._generation + self.audio_queue.put((generation, SAMPLE_RATE, buf)) + + def start(self) -> None: + """Start the head wobbler loop in a thread.""" + self._stop_event.clear() + self._thread = threading.Thread(target=self.working_loop, daemon=True) + self._thread.start() + logger.debug("Head wobbler started") + + def stop(self) -> None: + """Stop the head wobbler loop.""" + self._stop_event.set() + if self._thread is not None: + self._thread.join() + logger.debug("Head wobbler stopped") + + def working_loop(self) -> None: + """Convert audio deltas into head movement offsets.""" + hop_dt = HOP_MS / 1000.0 + + logger.debug("Head wobbler thread started") + while not self._stop_event.is_set(): + queue_ref = self.audio_queue + try: + chunk_generation, sr, chunk = queue_ref.get_nowait() # (gen, sr, data) + except queue.Empty: + # avoid while to never exit + time.sleep(MOVEMENT_LATENCY_S) + continue + + try: + with self._state_lock: + current_generation = self._generation + if chunk_generation != current_generation: + continue + + if self._base_ts is None: + with self._state_lock: + if self._base_ts is None: + self._base_ts = time.monotonic() + + pcm = np.asarray(chunk).squeeze(0) + with self._sway_lock: + results = self.sway.feed(pcm, sr) + + i = 0 + while i < len(results): + with self._state_lock: + if self._generation != current_generation: + break + base_ts = self._base_ts + hops_done = self._hops_done + + if base_ts is None: + base_ts = time.monotonic() + with self._state_lock: + if self._base_ts is None: + self._base_ts = base_ts + hops_done = self._hops_done + + target = base_ts + MOVEMENT_LATENCY_S + hops_done * hop_dt + now = time.monotonic() + + if now - target >= hop_dt: + lag_hops = int((now - target) / hop_dt) + drop = min(lag_hops, len(results) - i - 1) + if drop > 0: + with self._state_lock: + self._hops_done += drop + hops_done = self._hops_done + i += drop + continue + + if target > now: + time.sleep(target - now) + with self._state_lock: + if self._generation != current_generation: + break + + r = results[i] + offsets = ( + r["x_mm"] / 1000.0, + r["y_mm"] / 1000.0, + r["z_mm"] / 1000.0, + r["roll_rad"], + r["pitch_rad"], + r["yaw_rad"], + ) + + with self._state_lock: + if self._generation != current_generation: + break + + self._apply_offsets(offsets) + + with self._state_lock: + self._hops_done += 1 + i += 1 + finally: + queue_ref.task_done() + logger.debug("Head wobbler thread exited") + + ''' + def drain_audio_queue(self) -> None: + """Empty the audio queue.""" + try: + while True: + self.audio_queue.get_nowait() + except QueueEmpty: + pass + ''' + + def reset(self) -> None: + """Reset the internal state.""" + with self._state_lock: + self._generation += 1 + self._base_ts = None + self._hops_done = 0 + + # Drain any queued audio chunks from previous generations + drained_any = False + while True: + try: + _, _, _ = self.audio_queue.get_nowait() + except queue.Empty: + break + else: + drained_any = True + self.audio_queue.task_done() + + with self._sway_lock: + self.sway.reset() + + if drained_any: + logger.debug("Head wobbler queue drained during reset") diff --git a/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/audio/speech_tapper.py b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/audio/speech_tapper.py new file mode 100644 index 00000000..3f4a2f16 --- /dev/null +++ b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/audio/speech_tapper.py @@ -0,0 +1,268 @@ +from __future__ import annotations +import math +from typing import Any, Dict, List +from itertools import islice +from collections import deque + +import numpy as np +from numpy.typing import NDArray + + +# Tunables +SR = 16_000 +FRAME_MS = 20 +HOP_MS = 50 + +SWAY_MASTER = 1.5 +SENS_DB_OFFSET = +4.0 +VAD_DB_ON = -35.0 +VAD_DB_OFF = -45.0 +VAD_ATTACK_MS = 40 +VAD_RELEASE_MS = 250 +ENV_FOLLOW_GAIN = 0.65 + +SWAY_F_PITCH = 2.2 +SWAY_A_PITCH_DEG = 4.5 +SWAY_F_YAW = 0.6 +SWAY_A_YAW_DEG = 7.5 +SWAY_F_ROLL = 1.3 +SWAY_A_ROLL_DEG = 2.25 +SWAY_F_X = 0.35 +SWAY_A_X_MM = 4.5 +SWAY_F_Y = 0.45 +SWAY_A_Y_MM = 3.75 +SWAY_F_Z = 0.25 +SWAY_A_Z_MM = 2.25 + +SWAY_DB_LOW = -46.0 +SWAY_DB_HIGH = -18.0 +LOUDNESS_GAMMA = 0.9 +SWAY_ATTACK_MS = 50 +SWAY_RELEASE_MS = 250 + +# Derived +FRAME = int(SR * FRAME_MS / 1000) +HOP = int(SR * HOP_MS / 1000) +ATTACK_FR = max(1, int(VAD_ATTACK_MS / HOP_MS)) +RELEASE_FR = max(1, int(VAD_RELEASE_MS / HOP_MS)) +SWAY_ATTACK_FR = max(1, int(SWAY_ATTACK_MS / HOP_MS)) +SWAY_RELEASE_FR = max(1, int(SWAY_RELEASE_MS / HOP_MS)) + + +def _rms_dbfs(x: NDArray[np.float32]) -> float: + """Root-mean-square in dBFS for float32 mono array in [-1,1].""" + # numerically stable rms (avoid overflow) + x = x.astype(np.float32, copy=False) + rms = np.sqrt(np.mean(x * x, dtype=np.float32) + 1e-12, dtype=np.float32) + return float(20.0 * math.log10(float(rms) + 1e-12)) + + +def _loudness_gain(db: float, offset: float = SENS_DB_OFFSET) -> float: + """Normalize dB into [0,1] with gamma; clipped to [0,1].""" + t = (db + offset - SWAY_DB_LOW) / (SWAY_DB_HIGH - SWAY_DB_LOW) + if t < 0.0: + t = 0.0 + elif t > 1.0: + t = 1.0 + return t**LOUDNESS_GAMMA if LOUDNESS_GAMMA != 1.0 else t + + +def _to_float32_mono(x: NDArray[Any]) -> NDArray[np.float32]: + """Convert arbitrary PCM array to float32 mono in [-1,1]. + + Accepts shapes: (N,), (1,N), (N,1), (C,N), (N,C). + """ + a = np.asarray(x) + if a.ndim == 0: + return np.zeros(0, dtype=np.float32) + + # If 2D, decide which axis is channels (prefer small first dim) + if a.ndim == 2: + # e.g., (channels, samples) if channels is small (<=8) + if a.shape[0] <= 8 and a.shape[0] <= a.shape[1]: + a = np.mean(a, axis=0) + else: + a = np.mean(a, axis=1) + elif a.ndim > 2: + a = np.mean(a.reshape(a.shape[0], -1), axis=0) + + # Now 1D, cast/scale + if np.issubdtype(a.dtype, np.floating): + return a.astype(np.float32, copy=False) + # integer PCM + info = np.iinfo(a.dtype) + scale = float(max(-info.min, info.max)) + return a.astype(np.float32) / (scale if scale != 0.0 else 1.0) + + +def _resample_linear(x: NDArray[np.float32], sr_in: int, sr_out: int) -> NDArray[np.float32]: + """Lightweight linear resampler for short buffers.""" + if sr_in == sr_out or x.size == 0: + return x + # guard tiny sizes + n_out = int(round(x.size * sr_out / sr_in)) + if n_out <= 1: + return np.zeros(0, dtype=np.float32) + t_in = np.linspace(0.0, 1.0, num=x.size, dtype=np.float32, endpoint=True) + t_out = np.linspace(0.0, 1.0, num=n_out, dtype=np.float32, endpoint=True) + return np.interp(t_out, t_in, x).astype(np.float32, copy=False) + + +class SwayRollRT: + """Feed audio chunks → per-hop sway outputs. + + Usage: + rt = SwayRollRT() + rt.feed(pcm_int16_or_float, sr) -> List[dict] + """ + + def __init__(self, rng_seed: int = 7): + """Initialize state.""" + self._seed = int(rng_seed) + self.samples: deque[float] = deque(maxlen=10 * SR) # sliding window for VAD/env + self.carry: NDArray[np.float32] = np.zeros(0, dtype=np.float32) + + self.vad_on = False + self.vad_above = 0 + self.vad_below = 0 + + self.sway_env = 0.0 + self.sway_up = 0 + self.sway_down = 0 + + rng = np.random.default_rng(self._seed) + self.phase_pitch = float(rng.random() * 2 * math.pi) + self.phase_yaw = float(rng.random() * 2 * math.pi) + self.phase_roll = float(rng.random() * 2 * math.pi) + self.phase_x = float(rng.random() * 2 * math.pi) + self.phase_y = float(rng.random() * 2 * math.pi) + self.phase_z = float(rng.random() * 2 * math.pi) + self.t = 0.0 + + def reset(self) -> None: + """Reset state (VAD/env/buffers/time) but keep initial phases/seed.""" + self.samples.clear() + self.carry = np.zeros(0, dtype=np.float32) + self.vad_on = False + self.vad_above = 0 + self.vad_below = 0 + self.sway_env = 0.0 + self.sway_up = 0 + self.sway_down = 0 + self.t = 0.0 + + def feed(self, pcm: NDArray[Any], sr: int | None) -> List[Dict[str, float]]: + """Stream in PCM chunk. Returns a list of sway dicts, one per hop (HOP_MS). + + Args: + pcm: np.ndarray, shape (N,) or (C,N)/(N,C); int or float. + sr: sample rate of `pcm` (None -> assume SR). + + """ + sr_in = SR if sr is None else int(sr) + x = _to_float32_mono(pcm) + if x.size == 0: + return [] + if sr_in != SR: + x = _resample_linear(x, sr_in, SR) + if x.size == 0: + return [] + + # append to carry and consume fixed HOP chunks + if self.carry.size: + self.carry = np.concatenate([self.carry, x]) + else: + self.carry = x + + out: List[Dict[str, float]] = [] + + while self.carry.size >= HOP: + hop = self.carry[:HOP] + remaining: NDArray[np.float32] = self.carry[HOP:] + self.carry = remaining + + # keep sliding window for VAD/env computation + # (deque accepts any iterable; list() for small HOP is fine) + self.samples.extend(hop.tolist()) + if len(self.samples) < FRAME: + self.t += HOP_MS / 1000.0 + continue + + frame = np.fromiter( + islice(self.samples, len(self.samples) - FRAME, len(self.samples)), + dtype=np.float32, + count=FRAME, + ) + db = _rms_dbfs(frame) + + # VAD with hysteresis + attack/release + if db >= VAD_DB_ON: + self.vad_above += 1 + self.vad_below = 0 + if not self.vad_on and self.vad_above >= ATTACK_FR: + self.vad_on = True + elif db <= VAD_DB_OFF: + self.vad_below += 1 + self.vad_above = 0 + if self.vad_on and self.vad_below >= RELEASE_FR: + self.vad_on = False + + if self.vad_on: + self.sway_up = min(SWAY_ATTACK_FR, self.sway_up + 1) + self.sway_down = 0 + else: + self.sway_down = min(SWAY_RELEASE_FR, self.sway_down + 1) + self.sway_up = 0 + + up = self.sway_up / SWAY_ATTACK_FR + down = 1.0 - (self.sway_down / SWAY_RELEASE_FR) + target = up if self.vad_on else down + self.sway_env += ENV_FOLLOW_GAIN * (target - self.sway_env) + # clamp + if self.sway_env < 0.0: + self.sway_env = 0.0 + elif self.sway_env > 1.0: + self.sway_env = 1.0 + + loud = _loudness_gain(db) * SWAY_MASTER + env = self.sway_env + self.t += HOP_MS / 1000.0 + + # oscillators + pitch = ( + math.radians(SWAY_A_PITCH_DEG) + * loud + * env + * math.sin(2 * math.pi * SWAY_F_PITCH * self.t + self.phase_pitch) + ) + yaw = ( + math.radians(SWAY_A_YAW_DEG) + * loud + * env + * math.sin(2 * math.pi * SWAY_F_YAW * self.t + self.phase_yaw) + ) + roll = ( + math.radians(SWAY_A_ROLL_DEG) + * loud + * env + * math.sin(2 * math.pi * SWAY_F_ROLL * self.t + self.phase_roll) + ) + x_mm = SWAY_A_X_MM * loud * env * math.sin(2 * math.pi * SWAY_F_X * self.t + self.phase_x) + y_mm = SWAY_A_Y_MM * loud * env * math.sin(2 * math.pi * SWAY_F_Y * self.t + self.phase_y) + z_mm = SWAY_A_Z_MM * loud * env * math.sin(2 * math.pi * SWAY_F_Z * self.t + self.phase_z) + + out.append( + { + "pitch_rad": pitch, + "yaw_rad": yaw, + "roll_rad": roll, + "pitch_deg": math.degrees(pitch), + "yaw_deg": math.degrees(yaw), + "roll_deg": math.degrees(roll), + "x_mm": x_mm, + "y_mm": y_mm, + "z_mm": z_mm, + }, + ) + + return out diff --git a/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/camera_worker.py b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/camera_worker.py new file mode 100644 index 00000000..e625c009 --- /dev/null +++ b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/camera_worker.py @@ -0,0 +1,241 @@ +"""Camera worker thread with frame buffering and face tracking. + +Ported from main_works.py camera_worker() function to provide: +- 30Hz+ camera polling with thread-safe frame buffering +- Face tracking integration with smooth interpolation +- Latest frame always available for tools +""" + +import time +import logging +import threading +from typing import Any, List, Tuple + +import numpy as np +from numpy.typing import NDArray +from scipy.spatial.transform import Rotation as R + +from reachy_mini import ReachyMini +from reachy_mini.utils.interpolation import linear_pose_interpolation + + +logger = logging.getLogger(__name__) + + +class CameraWorker: + """Thread-safe camera worker with frame buffering and face tracking.""" + + def __init__(self, reachy_mini: ReachyMini, head_tracker: Any = None) -> None: + """Initialize.""" + self.reachy_mini = reachy_mini + self.head_tracker = head_tracker + + # Thread-safe frame storage + self.latest_frame: NDArray[np.uint8] | None = None + self.frame_lock = threading.Lock() + self._stop_event = threading.Event() + self._thread: threading.Thread | None = None + + # Face tracking state + self.is_head_tracking_enabled = True + self.face_tracking_offsets: List[float] = [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + ] # x, y, z, roll, pitch, yaw + self.face_tracking_lock = threading.Lock() + + # Face tracking timing variables (same as main_works.py) + self.last_face_detected_time: float | None = None + self.interpolation_start_time: float | None = None + self.interpolation_start_pose: NDArray[np.float32] | None = None + self.face_lost_delay = 2.0 # seconds to wait before starting interpolation + self.interpolation_duration = 1.0 # seconds to interpolate back to neutral + + # Track state changes + self.previous_head_tracking_state = self.is_head_tracking_enabled + + def get_latest_frame(self) -> NDArray[np.uint8] | None: + """Get the latest frame (thread-safe).""" + with self.frame_lock: + if self.latest_frame is None: + return None + # Return a copy in original BGR format (OpenCV native) + return self.latest_frame.copy() + + def get_face_tracking_offsets( + self, + ) -> Tuple[float, float, float, float, float, float]: + """Get current face tracking offsets (thread-safe).""" + with self.face_tracking_lock: + offsets = self.face_tracking_offsets + return (offsets[0], offsets[1], offsets[2], offsets[3], offsets[4], offsets[5]) + + def set_head_tracking_enabled(self, enabled: bool) -> None: + """Enable/disable head tracking.""" + self.is_head_tracking_enabled = enabled + logger.info(f"Head tracking {'enabled' if enabled else 'disabled'}") + + def start(self) -> None: + """Start the camera worker loop in a thread.""" + self._stop_event.clear() + self._thread = threading.Thread(target=self.working_loop, daemon=True) + self._thread.start() + logger.debug("Camera worker started") + + def stop(self) -> None: + """Stop the camera worker loop.""" + self._stop_event.set() + if self._thread is not None: + self._thread.join() + + logger.debug("Camera worker stopped") + + def working_loop(self) -> None: + """Enable the camera worker loop. + + Ported from main_works.py camera_worker() with same logic. + """ + logger.debug("Starting camera working loop") + + # Initialize head tracker if available + neutral_pose = np.eye(4) # Neutral pose (identity matrix) + self.previous_head_tracking_state = self.is_head_tracking_enabled + + while not self._stop_event.is_set(): + try: + current_time = time.time() + + # Get frame from robot + frame = self.reachy_mini.media.get_frame() + + if frame is not None: + # Thread-safe frame storage + with self.frame_lock: + self.latest_frame = frame # .copy() + + # Check if face tracking was just disabled + if self.previous_head_tracking_state and not self.is_head_tracking_enabled: + # Face tracking was just disabled - start interpolation to neutral + self.last_face_detected_time = current_time # Trigger the face-lost logic + self.interpolation_start_time = None # Will be set by the face-lost interpolation + self.interpolation_start_pose = None + + # Update tracking state + self.previous_head_tracking_state = self.is_head_tracking_enabled + + # Handle face tracking if enabled and head tracker available + if self.is_head_tracking_enabled and self.head_tracker is not None: + eye_center, _ = self.head_tracker.get_head_position(frame) + + if eye_center is not None: + # Face detected - immediately switch to tracking + self.last_face_detected_time = current_time + self.interpolation_start_time = None # Stop any interpolation + + # Convert normalized coordinates to pixel coordinates + h, w, _ = frame.shape + eye_center_norm = (eye_center + 1) / 2 + eye_center_pixels = [ + eye_center_norm[0] * w, + eye_center_norm[1] * h, + ] + + # Get the head pose needed to look at the target, but don't perform movement + target_pose = self.reachy_mini.look_at_image( + eye_center_pixels[0], + eye_center_pixels[1], + duration=0.0, + perform_movement=False, + ) + + # Extract translation and rotation from the target pose directly + translation = target_pose[:3, 3] + rotation = R.from_matrix(target_pose[:3, :3]).as_euler("xyz", degrees=False) + + # Scale down translation and rotation because smaller FOV + translation *= 0.6 + rotation *= 0.6 + + # Thread-safe update of face tracking offsets (use pose as-is) + with self.face_tracking_lock: + self.face_tracking_offsets = [ + translation[0], + translation[1], + translation[2], # x, y, z + rotation[0], + rotation[1], + rotation[2], # roll, pitch, yaw + ] + + # No face detected while tracking enabled - set face lost timestamp + elif self.last_face_detected_time is None or self.last_face_detected_time == current_time: + # Only update if we haven't already set a face lost time + # (current_time check prevents overriding the disable-triggered timestamp) + pass + + # Handle smooth interpolation (works for both face-lost and tracking-disabled cases) + if self.last_face_detected_time is not None: + time_since_face_lost = current_time - self.last_face_detected_time + + if time_since_face_lost >= self.face_lost_delay: + # Start interpolation if not already started + if self.interpolation_start_time is None: + self.interpolation_start_time = current_time + # Capture current pose as start of interpolation + with self.face_tracking_lock: + current_translation = self.face_tracking_offsets[:3] + current_rotation_euler = self.face_tracking_offsets[3:] + # Convert to 4x4 pose matrix + pose_matrix = np.eye(4, dtype=np.float32) + pose_matrix[:3, 3] = current_translation + pose_matrix[:3, :3] = R.from_euler( + "xyz", + current_rotation_euler, + ).as_matrix() + self.interpolation_start_pose = pose_matrix + + # Calculate interpolation progress (t from 0 to 1) + elapsed_interpolation = current_time - self.interpolation_start_time + t = min(1.0, elapsed_interpolation / self.interpolation_duration) + + # Interpolate between current pose and neutral pose + interpolated_pose = linear_pose_interpolation( + self.interpolation_start_pose, + neutral_pose, + t, + ) + + # Extract translation and rotation from interpolated pose + translation = interpolated_pose[:3, 3] + rotation = R.from_matrix(interpolated_pose[:3, :3]).as_euler("xyz", degrees=False) + + # Thread-safe update of face tracking offsets + with self.face_tracking_lock: + self.face_tracking_offsets = [ + translation[0], + translation[1], + translation[2], # x, y, z + rotation[0], + rotation[1], + rotation[2], # roll, pitch, yaw + ] + + # If interpolation is complete, reset timing + if t >= 1.0: + self.last_face_detected_time = None + self.interpolation_start_time = None + self.interpolation_start_pose = None + # else: Keep current offsets (within 2s delay period) + + # Small sleep to prevent excessive CPU usage (same as main_works.py) + time.sleep(0.04) + + except Exception as e: + logger.error(f"Camera worker error: {e}") + time.sleep(0.1) # Longer sleep on error + + logger.debug("Camera worker thread exited") diff --git a/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/config.py b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/config.py new file mode 100644 index 00000000..fe10c9fd --- /dev/null +++ b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/config.py @@ -0,0 +1,73 @@ +import os +import sys +import logging +from pathlib import Path + +from dotenv import find_dotenv, load_dotenv + + +LOCKED_PROFILE = "_reachy_mini_conversation_app_locked_profile" +DEFAULT_PROFILES_DIRECTORY = Path(__file__).parent / "profiles" + +logger = logging.getLogger(__name__) + + +def _env_flag(name: str, default: bool = False) -> bool: + """Parse a boolean environment flag.""" + raw = os.getenv(name) + if raw is None: + return default + + value = raw.strip().lower() + if value in {"1", "true", "yes", "on"}: + return True + if value in {"0", "false", "no", "off"}: + return False + + logger.warning("Invalid boolean value for %s=%r, using default=%s", name, raw, default) + return default + + +_profile_path = DEFAULT_PROFILES_DIRECTORY / LOCKED_PROFILE +_instructions_file = _profile_path / "instructions.txt" +if not _profile_path.is_dir(): + print(f"Error: locked profile '{LOCKED_PROFILE}' does not exist in {DEFAULT_PROFILES_DIRECTORY}", file=sys.stderr) + sys.exit(1) +if not _instructions_file.is_file(): + print(f"Error: locked profile '{LOCKED_PROFILE}' has no instructions.txt", file=sys.stderr) + sys.exit(1) + +_skip_dotenv = _env_flag("REACHY_MINI_SKIP_DOTENV", default=False) + +if _skip_dotenv: + logger.info("Skipping .env loading because REACHY_MINI_SKIP_DOTENV is set") +else: + # Locate .env file (search upward from current working directory) + dotenv_path = find_dotenv(usecwd=True) + + if dotenv_path: + # Load .env and override environment variables + load_dotenv(dotenv_path=dotenv_path, override=True) + logger.info(f"Configuration loaded from {dotenv_path}") + else: + logger.warning("No .env file found, using environment variables") + + +class Config: + """Configuration class for the conversation app.""" + + OPENAI_API_KEY = os.getenv("OPENAI_API_KEY") + MODEL_NAME = os.getenv("MODEL_NAME", "gpt-realtime") + HF_HOME = os.getenv("HF_HOME", "./cache") + LOCAL_VISION_MODEL = os.getenv("LOCAL_VISION_MODEL", "HuggingFaceTB/SmolVLM2-2.2B-Instruct") + HF_TOKEN = os.getenv("HF_TOKEN") + + logger.debug(f"Model: {MODEL_NAME}, HF_HOME: {HF_HOME}, Vision Model: {LOCAL_VISION_MODEL}") + logger.debug(f"Locked profile: {LOCKED_PROFILE}") + + def __init__(self) -> None: + """Initialize the configuration.""" + logger.info("Using locked profile '%s' from %s", LOCKED_PROFILE, DEFAULT_PROFILES_DIRECTORY) + + +config = Config() diff --git a/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/console.py b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/console.py new file mode 100644 index 00000000..57103578 --- /dev/null +++ b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/console.py @@ -0,0 +1,419 @@ +"""Bidirectional local audio stream with optional settings UI. + +In headless mode, there is no Gradio UI. If the OpenAI API key is not +available via environment/.env, we expose a minimal settings page via the +Reachy Mini Apps settings server to let non-technical users enter it. + +The settings UI is served from this package's ``static/`` folder and offers a +single password field to set ``OPENAI_API_KEY``. Once set, we persist it to the +app instance's ``.env`` file (if available) and proceed to start streaming. +""" + +import os +import sys +import time +import asyncio +import logging +from typing import List, Optional +from pathlib import Path + +from fastrtc import AdditionalOutputs, audio_to_float32 +from scipy.signal import resample + +from reachy_mini import ReachyMini +from reachy_mini.media.media_manager import MediaBackend +from reachy_mini_conversation_app.config import config +from reachy_mini_conversation_app.openai_realtime import OpenaiRealtimeHandler + + +try: + # FastAPI is provided by the Reachy Mini Apps runtime + from fastapi import FastAPI, Response + from pydantic import BaseModel + from fastapi.responses import FileResponse, JSONResponse + from starlette.staticfiles import StaticFiles +except Exception: # pragma: no cover - only loaded when settings_app is used + FastAPI = object # type: ignore + FileResponse = object # type: ignore + JSONResponse = object # type: ignore + StaticFiles = object # type: ignore + BaseModel = object # type: ignore + + +logger = logging.getLogger(__name__) + + +class LocalStream: + """LocalStream using Reachy Mini's recorder/player.""" + + def __init__( + self, + handler: OpenaiRealtimeHandler, + robot: ReachyMini, + *, + settings_app: Optional[FastAPI] = None, + instance_path: Optional[str] = None, + ): + """Initialize the stream with an OpenAI realtime handler and pipelines. + + - ``settings_app``: the Reachy Mini Apps FastAPI to attach settings endpoints. + - ``instance_path``: directory where per-instance ``.env`` should be stored. + """ + self.handler = handler + self._robot = robot + self._stop_event = asyncio.Event() + self._tasks: List[asyncio.Task[None]] = [] + # Allow the handler to flush the player queue when appropriate. + self.handler._clear_queue = self.clear_audio_queue + self._settings_app: Optional[FastAPI] = settings_app + self._instance_path: Optional[str] = instance_path + self._settings_initialized = False + self._asyncio_loop = None + + # ---- Settings UI (only when API key is missing) ---- + def _read_env_lines(self, env_path: Path) -> list[str]: + """Load env file contents or a template as a list of lines.""" + inst = env_path.parent + try: + if env_path.exists(): + try: + return env_path.read_text(encoding="utf-8").splitlines() + except Exception: + return [] + template_text = None + ex = inst / ".env.example" + if ex.exists(): + try: + template_text = ex.read_text(encoding="utf-8") + except Exception: + template_text = None + if template_text is None: + try: + cwd_example = Path.cwd() / ".env.example" + if cwd_example.exists(): + template_text = cwd_example.read_text(encoding="utf-8") + except Exception: + template_text = None + if template_text is None: + packaged = Path(__file__).parent / ".env.example" + if packaged.exists(): + try: + template_text = packaged.read_text(encoding="utf-8") + except Exception: + template_text = None + return template_text.splitlines() if template_text else [] + except Exception: + return [] + + def _persist_api_key(self, key: str) -> None: + """Persist API key to environment and instance ``.env`` if possible. + + Behavior: + - Always sets ``OPENAI_API_KEY`` in process env and in-memory config. + - Writes/updates ``/.env``: + * If ``.env`` exists, replaces/append OPENAI_API_KEY line. + * Else, copies template from ``/.env.example`` when present, + otherwise falls back to the packaged template + ``reachy_mini_conversation_app/.env.example``. + * Ensures the resulting file contains the full template plus the key. + - Loads the written ``.env`` into the current process environment. + """ + k = (key or "").strip() + if not k: + return + # Update live process env and config so consumers see it immediately + try: + os.environ["OPENAI_API_KEY"] = k + except Exception: # best-effort + pass + try: + config.OPENAI_API_KEY = k + except Exception: + pass + + if not self._instance_path: + return + try: + inst = Path(self._instance_path) + env_path = inst / ".env" + lines = self._read_env_lines(env_path) + replaced = False + for i, ln in enumerate(lines): + if ln.strip().startswith("OPENAI_API_KEY="): + lines[i] = f"OPENAI_API_KEY={k}" + replaced = True + break + if not replaced: + lines.append(f"OPENAI_API_KEY={k}") + final_text = "\n".join(lines) + "\n" + env_path.write_text(final_text, encoding="utf-8") + logger.info("Persisted OPENAI_API_KEY to %s", env_path) + + # Load the newly written .env into this process to ensure downstream imports see it + try: + from dotenv import load_dotenv + + load_dotenv(dotenv_path=str(env_path), override=True) + except Exception: + pass + except Exception as e: + logger.warning("Failed to persist OPENAI_API_KEY: %s", e) + + def _init_settings_ui_if_needed(self) -> None: + """Attach minimal settings UI to the settings app. + + Always mounts the UI when a settings_app is provided so that users + see a confirmation message even if the API key is already configured. + """ + if self._settings_initialized: + return + if self._settings_app is None: + return + + static_dir = Path(__file__).parent / "static" + index_file = static_dir / "index.html" + + if hasattr(self._settings_app, "mount"): + try: + # Serve /static/* assets + self._settings_app.mount("/static", StaticFiles(directory=str(static_dir)), name="static") + except Exception: + pass + + class ApiKeyPayload(BaseModel): + openai_api_key: str + + # GET / -> index.html + @self._settings_app.get("/") + def _root() -> FileResponse: + return FileResponse(str(index_file)) + + # GET /favicon.ico -> optional, avoid noisy 404s on some browsers + @self._settings_app.get("/favicon.ico") + def _favicon() -> Response: + return Response(status_code=204) + + # GET /status -> whether key is set + @self._settings_app.get("/status") + def _status() -> JSONResponse: + has_key = bool(config.OPENAI_API_KEY and str(config.OPENAI_API_KEY).strip()) + return JSONResponse({"has_key": has_key}) + + # GET /ready -> whether backend finished loading tools + @self._settings_app.get("/ready") + def _ready() -> JSONResponse: + try: + mod = sys.modules.get("reachy_mini_conversation_app.tools.core_tools") + ready = bool(getattr(mod, "_TOOLS_INITIALIZED", False)) if mod else False + except Exception: + ready = False + return JSONResponse({"ready": ready}) + + # POST /openai_api_key -> set/persist key + @self._settings_app.post("/openai_api_key") + def _set_key(payload: ApiKeyPayload) -> JSONResponse: + key = (payload.openai_api_key or "").strip() + if not key: + return JSONResponse({"ok": False, "error": "empty_key"}, status_code=400) + self._persist_api_key(key) + return JSONResponse({"ok": True}) + + # POST /validate_api_key -> validate key without persisting it + @self._settings_app.post("/validate_api_key") + async def _validate_key(payload: ApiKeyPayload) -> JSONResponse: + key = (payload.openai_api_key or "").strip() + if not key: + return JSONResponse({"valid": False, "error": "empty_key"}, status_code=400) + + # Try to validate by checking if we can fetch the models + try: + import httpx + + headers = {"Authorization": f"Bearer {key}", "Content-Type": "application/json"} + async with httpx.AsyncClient(timeout=10.0) as client: + response = await client.get("https://api.openai.com/v1/models", headers=headers) + if response.status_code == 200: + return JSONResponse({"valid": True}) + elif response.status_code == 401: + return JSONResponse({"valid": False, "error": "invalid_api_key"}, status_code=401) + else: + return JSONResponse( + {"valid": False, "error": "validation_failed"}, status_code=response.status_code + ) + except Exception as e: + logger.warning(f"API key validation failed: {e}") + return JSONResponse({"valid": False, "error": "validation_error"}, status_code=500) + + self._settings_initialized = True + + def launch(self) -> None: + """Start the recorder/player and run the async processing loops. + + If the OpenAI key is missing, expose a tiny settings UI via the + Reachy Mini settings server to collect it before starting streams. + """ + self._stop_event.clear() + + # Try to load an existing instance .env first (covers subsequent runs) + if self._instance_path: + try: + from dotenv import load_dotenv + + env_path = Path(self._instance_path) / ".env" + if env_path.exists(): + load_dotenv(dotenv_path=str(env_path), override=True) + new_key = os.getenv("OPENAI_API_KEY", "").strip() + if new_key: + try: + config.OPENAI_API_KEY = new_key + except Exception: + pass + except Exception: + pass # Instance .env loading is optional; continue with defaults + + # If key is still missing, try to download one from HuggingFace + if not (config.OPENAI_API_KEY and str(config.OPENAI_API_KEY).strip()): + logger.info("OPENAI_API_KEY not set, attempting to download from HuggingFace...") + try: + from gradio_client import Client + client = Client("HuggingFaceM4/gradium_setup", verbose=False) + key, status = client.predict(api_name="/claim_b_key") + if key and key.strip(): + logger.info("Successfully downloaded API key from HuggingFace") + # Persist it immediately + self._persist_api_key(key) + except Exception as e: + logger.warning(f"Failed to download API key from HuggingFace: {e}") + + # Always expose settings UI if a settings app is available + # (do this AFTER loading/downloading the key so status endpoint sees the right value) + self._init_settings_ui_if_needed() + + # If key is still missing -> wait until provided via the settings UI + if not (config.OPENAI_API_KEY and str(config.OPENAI_API_KEY).strip()): + logger.warning("OPENAI_API_KEY not found. Open the app settings page to enter it.") + # Poll until the key becomes available (set via the settings UI) + try: + while not (config.OPENAI_API_KEY and str(config.OPENAI_API_KEY).strip()): + time.sleep(0.2) + except KeyboardInterrupt: + logger.info("Interrupted while waiting for API key.") + return + + # Start media after key is set/available + self._robot.media.start_recording() + self._robot.media.start_playing() + time.sleep(1) # give some time to the pipelines to start + + async def runner() -> None: + self._asyncio_loop = asyncio.get_running_loop() # type: ignore[assignment] + self._tasks = [ + asyncio.create_task(self.handler.start_up(), name="openai-handler"), + asyncio.create_task(self.record_loop(), name="stream-record-loop"), + asyncio.create_task(self.play_loop(), name="stream-play-loop"), + ] + try: + await asyncio.gather(*self._tasks) + except asyncio.CancelledError: + logger.info("Tasks cancelled during shutdown") + finally: + # Ensure handler connection is closed + await self.handler.shutdown() + + asyncio.run(runner()) + + def close(self) -> None: + """Stop the stream and underlying media pipelines. + + This method: + - Stops audio recording and playback first + - Sets the stop event to signal async loops to terminate + - Cancels all pending async tasks (openai-handler, record-loop, play-loop) + """ + logger.info("Stopping LocalStream...") + + # Stop media pipelines FIRST before cancelling async tasks + # This ensures clean shutdown before PortAudio cleanup + try: + self._robot.media.stop_recording() + except Exception as e: + logger.debug(f"Error stopping recording (may already be stopped): {e}") + + try: + self._robot.media.stop_playing() + except Exception as e: + logger.debug(f"Error stopping playback (may already be stopped): {e}") + + # Now signal async loops to stop + self._stop_event.set() + + # Cancel all running tasks + for task in self._tasks: + if not task.done(): + task.cancel() + + def clear_audio_queue(self) -> None: + """Flush the player's appsrc to drop any queued audio immediately.""" + logger.info("User intervention: flushing player queue") + if self._robot.media.backend == MediaBackend.GSTREAMER: + # Directly flush gstreamer audio pipe + self._robot.media.audio.clear_player() + elif self._robot.media.backend == MediaBackend.DEFAULT or self._robot.media.backend == MediaBackend.DEFAULT_NO_VIDEO: + self._robot.media.audio.clear_output_buffer() + self.handler.output_queue = asyncio.Queue() + + async def record_loop(self) -> None: + """Read mic frames from the recorder and forward them to the handler.""" + input_sample_rate = self._robot.media.get_input_audio_samplerate() + logger.debug(f"Audio recording started at {input_sample_rate} Hz") + + while not self._stop_event.is_set(): + audio_frame = self._robot.media.get_audio_sample() + if audio_frame is not None: + await self.handler.receive((input_sample_rate, audio_frame)) + await asyncio.sleep(0) # avoid busy loop + + async def play_loop(self) -> None: + """Fetch outputs from the handler: log text and play audio frames.""" + while not self._stop_event.is_set(): + handler_output = await self.handler.emit() + + if isinstance(handler_output, AdditionalOutputs): + for msg in handler_output.args: + content = msg.get("content", "") + if isinstance(content, str): + logger.info( + "role=%s content=%s", + msg.get("role"), + content if len(content) < 500 else content[:500] + "…", + ) + + elif isinstance(handler_output, tuple): + input_sample_rate, audio_data = handler_output + output_sample_rate = self._robot.media.get_output_audio_samplerate() + + # Reshape if needed + if audio_data.ndim == 2: + # Scipy channels last convention + if audio_data.shape[1] > audio_data.shape[0]: + audio_data = audio_data.T + # Multiple channels -> Mono channel + if audio_data.shape[1] > 1: + audio_data = audio_data[:, 0] + + # Cast if needed + audio_frame = audio_to_float32(audio_data) + + # Resample if needed + if input_sample_rate != output_sample_rate: + audio_frame = resample( + audio_frame, + int(len(audio_frame) * output_sample_rate / input_sample_rate), + ) + + self._robot.media.push_audio_sample(audio_frame) + + else: + logger.debug("Ignoring output type=%s", type(handler_output).__name__) + + await asyncio.sleep(0) # yield to event loop diff --git a/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/dance_emotion_moves.py b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/dance_emotion_moves.py new file mode 100644 index 00000000..d2d7028d --- /dev/null +++ b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/dance_emotion_moves.py @@ -0,0 +1,86 @@ +"""Dance and emotion moves for the movement queue system. + +This module implements dance moves and emotions as Move objects that can be queued +and executed sequentially by the MovementManager. +""" + +from __future__ import annotations +import logging + +import numpy as np +from numpy.typing import NDArray + +from reachy_mini.motion.move import Move +from reachy_mini.motion.recorded_move import RecordedMoves +from reachy_mini_dances_library.dance_move import DanceMove + + +logger = logging.getLogger(__name__) + + +class DanceQueueMove(Move): # type: ignore + """Wrapper for dance moves to work with the movement queue system.""" + + def __init__(self, move_name: str): + """Initialize a DanceQueueMove.""" + self.dance_move = DanceMove(move_name) + self.move_name = move_name + + @property + def duration(self) -> float: + """Duration property required by official Move interface.""" + return float(self.dance_move.duration) + + def evaluate(self, t: float) -> tuple[NDArray[np.float64] | None, NDArray[np.float64] | None, float | None]: + """Evaluate dance move at time t.""" + try: + # Get the pose from the dance move + head_pose, antennas, body_yaw = self.dance_move.evaluate(t) + + # Convert to numpy array if antennas is tuple and return in official Move format + if isinstance(antennas, tuple): + antennas = np.array([antennas[0], antennas[1]]) + + return (head_pose, antennas, body_yaw) + + except Exception as e: + logger.error(f"Error evaluating dance move '{self.move_name}' at t={t}: {e}") + # Return neutral pose on error + from reachy_mini.utils import create_head_pose + + neutral_head_pose = create_head_pose(0, 0, 0, 0, 0, 0, degrees=True) + return (neutral_head_pose, np.array([0.0, 0.0], dtype=np.float64), 0.0) + + +class EmotionQueueMove(Move): # type: ignore + """Wrapper for emotion moves to work with the movement queue system.""" + + def __init__(self, emotion_name: str, recorded_moves: RecordedMoves): + """Initialize an EmotionQueueMove.""" + self.emotion_move = recorded_moves.get(emotion_name) + self.emotion_name = emotion_name + + @property + def duration(self) -> float: + """Duration property required by official Move interface.""" + return float(self.emotion_move.duration) + + def evaluate(self, t: float) -> tuple[NDArray[np.float64] | None, NDArray[np.float64] | None, float | None]: + """Evaluate emotion move at time t.""" + try: + # Get the pose from the emotion move + head_pose, antennas, body_yaw = self.emotion_move.evaluate(t) + + # Convert to numpy array if antennas is tuple and return in official Move format + if isinstance(antennas, tuple): + antennas = np.array([antennas[0], antennas[1]]) + + return (head_pose, antennas, body_yaw) + + except Exception as e: + logger.error(f"Error evaluating emotion '{self.emotion_name}' at t={t}: {e}") + # Return neutral pose on error + from reachy_mini.utils import create_head_pose + + neutral_head_pose = create_head_pose(0, 0, 0, 0, 0, 0, degrees=True) + return (neutral_head_pose, np.array([0.0, 0.0], dtype=np.float64), 0.0) diff --git a/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/goto_queue_move.py b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/goto_queue_move.py new file mode 100644 index 00000000..64801597 --- /dev/null +++ b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/goto_queue_move.py @@ -0,0 +1,68 @@ +"""Queued goto move for direct head, antenna, and body-yaw targets.""" + +from __future__ import annotations +import logging +from typing import Tuple + +import numpy as np +from numpy.typing import NDArray + +from reachy_mini.motion.move import Move + + +logger = logging.getLogger(__name__) + + +class GotoQueueMove(Move): # type: ignore[misc] + """Interpolate from a current pose to a target pose.""" + + def __init__( + self, + target_head_pose: NDArray[np.float32], + start_head_pose: NDArray[np.float32] | None = None, + target_antennas: Tuple[float, float] = (0, 0), + start_antennas: Tuple[float, float] | None = None, + target_body_yaw: float = 0, + start_body_yaw: float | None = None, + duration: float = 1.0, + ): + """Initialize a queued goto move.""" + self._duration = duration + self.target_head_pose = target_head_pose + self.start_head_pose = start_head_pose + self.target_antennas = target_antennas + self.start_antennas = start_antennas or (0, 0) + self.target_body_yaw = target_body_yaw + self.start_body_yaw = start_body_yaw or 0 + + @property + def duration(self) -> float: + """Duration required by the Move interface.""" + return self._duration + + def evaluate(self, t: float) -> tuple[NDArray[np.float64] | None, NDArray[np.float64] | None, float | None]: + """Evaluate the move at elapsed time t.""" + try: + from reachy_mini.utils import create_head_pose + from reachy_mini.utils.interpolation import linear_pose_interpolation + + t_clamped = max(0, min(1, t / self.duration)) + start_pose = self.start_head_pose + if start_pose is None: + start_pose = create_head_pose(0, 0, 0, 0, 0, 0, degrees=True) + + head_pose = linear_pose_interpolation(start_pose, self.target_head_pose, t_clamped) + antennas = np.array( + [ + self.start_antennas[0] + (self.target_antennas[0] - self.start_antennas[0]) * t_clamped, + self.start_antennas[1] + (self.target_antennas[1] - self.start_antennas[1]) * t_clamped, + ], + dtype=np.float64, + ) + body_yaw = self.start_body_yaw + (self.target_body_yaw - self.start_body_yaw) * t_clamped + return (head_pose, antennas, body_yaw) + except Exception as e: + logger.error("Error evaluating goto move at t=%s: %s", t, e) + target_head_pose_f64 = self.target_head_pose.astype(np.float64) + target_antennas_array = np.array([self.target_antennas[0], self.target_antennas[1]], dtype=np.float64) + return (target_head_pose_f64, target_antennas_array, self.target_body_yaw) diff --git a/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/images/reachymini_avatar.png b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/images/reachymini_avatar.png new file mode 100644 index 0000000000000000000000000000000000000000..2ed3249419fe85f096003f4ade6dcb713f53701e GIT binary patch literal 1228716 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

RZhh9HEVz|yXRBCQ9GaP7|+xf)7NUGRqfM4UJ zX+FB6Ehh4OO6a=r1T=rmC-g)1?Obc9G(O~W#?7zDETRe7PnrMkp=1VQ_!W1hpvqWQ zGIS!vFka7a?SsUzBBtP?!e)=pj*nvE*QU0wu`7tAG!r5p34;}XIEzKb#!0UZY2f%Q z-}In|wX*?Y_p#;Ft8JmOe4niR^NwM`3hs$p3u0U?6Mf(gw`7+YR8 znCM)gI+rR+f{_5 ziL_;r9?cI&NEHq-GZ1N$!y4914ejg1gCXZUB&I-0!aU$knh+qo!UGG(NIG(-%YEfL z$Z&J*v^U~p&dJQk|Ni-xFl5zBOKf+kO^r}WpK!pPG)N?7>yqnYRMpCTiwZhShbP;k z+E!8F4T9YwkVr42eW-Lq8kT3JNdSleS-O$BeBHFwfUgOI&pyn9abImHM|STOKX#NY zurr8yyPbWS?TF=9+S!SDON^^{Xz9BbTEn>w)gJ&cxVJSpO3mq>$1;^M1qk7MDd%Em zpvf^KXskAcx4|vpob?`(9WZGns%RGf)4**bZ@NDzdfUlZhBqqHw1DbqD!-RC>hKaO z+Q5y-_u^Hqk@3|qfB6HNY!b>)KESIcG?YVG(?oc~9Sao+riS|Bn#%nCx<4xZ(O2T2fzlIFribyLp!FK)Xqt-_`D*S)b*e&0oMIu75yHfAT(M1+~B|6Pxpoa=wlI%9THMJ^n69Z9#FH;qfTl6;jec zKqDy5e-=%!jp)CUjE;EK^YeBQqaQ1Co*izT{Eb3}2*HAydXzADsVE@OT@=v}sN>5_UFpAaq67bKyhy#6TLPHJ+*UW!p@z|0FweUTUt*-AWs{+c7O7MkqI zazadxQ^J)orw}!U2u9Xi#fsK3gI1*$kpg98B#*0A4K?nBOv6|nxUVAi?v%(%l$-M& z&ZZ6Ls|?9sGe{K|^m3*ybE(`oZeqhKRyLw)%mm{!IZQ=EvAo#&^OjvfkcR)x$s=11?F~i^XsdQ%0sW0ZjbB+1tf|E3QV?tR^8te>+96o3C>;vUYwTOuIpG# zj)XIAmsH56HRa2Tng->(r;FCM^*bnLWJ@Z zOHS-eJEl4jYGn&UIlRL>4gRq6W|RIHB?s{;dznoZB>gGOV5W^dZm39HFnQAF$Oyp_&Ug81x~O z%8zfliV;yFHMHc-hQg(vsB6Q0Ntuj<_d3cG2sI)?|#ywXT1+d*%uQT31 zP7IJucKE49UP!K%W2s1UY+LM#ZoL6^hAScYvPoq8UGZ@+7;FaIc?;f~b$K7-y~q8; zM$PgrF*v0rZrEzxlkQMQPSZ^tVqF9C57D`-^hn%~|1mIC`t(5*bGPvpt53E$m`Z|K zMnvBbG{FHg1uYZ=D_(uj{Z5~iTN}U0!>RM{P1Z%#6Jp4*H7Ey$o`uBC)r%^qSdS(#*%~8R<#MPxjSJbOuMtc4FLT0%ay(o1PQi z@>4zIzSqDDU-B>N(Dsi=a^g2*rrVtmaUXbmhFJyx6S?x=A>fuLG!ML>k^Wv-->9-% zn25kp*`x@}=la+?=&Eo%E_)`;19?+b;`WshRrcRWOwcco5rRvn@Wj80lt!m9x`Mtj zIF6>!0PXe(Qe7vnBr4N)Xk9vA$^_wACl?Ijx_ajqK^xb)! z^rKRiv{DMQ#*pZQHbVD&#wez_*BK-HM;^pPmf+k%PZ4g;MPAlL0|FeQnJAJ5^1*>p zyd{=0Y9=-<9R^=u?s1E<6*qoPem1fgIgsbTyAB3+c18LgRbDKDh~YBzrt7lX{1;tAmLWFT{U7J+3o|d1s(l}hBwpQUOzd~;zNR`DHgi7j9`Z_srTuSm_f@gVKc07XE$zY9f8&=39h zpP+5t0ch_av{=0&43w5gK6Tu&gun!2`t#jlBwCDBMpHDP)wmHQ*pyHzWEV8e$Ca+FP`NYE0iKM|$RGM@%IKDL8FB9zvX6PmkB zWc;neP5Dg>dpwyhA2rU%1V@^cWo-f0c<}URwCTu$@3L{{!jg7TJ^(V^(U2&ISm6| zep~6ZZU1_6k9C8hWTkKH`%>~p<7aU&Y|kaUH#!l?$QKrY*qMaOsIk8&&dBYHu$87p zi(AeAiL~Ba^@`Y@NB$n)JF*b z=S2CJ#>27&;#_&fz3f>Un!sdRagJ+FNLPs`(}~En(D0Z(Nn&|H0WkrioHlTI(56NV z7s{u_=_C_HoJqUWU%f7G2EZpWns7v6E-4PKYUK)3+>WLZEhP6GpSW>Zz+Wxd4^k(u_H|;PKgJCU!%ojQ^2MXn#O0|QRF=> z`!4n?MV`Z7p;d~i6R6w+Qw`bBtrw&g3;AA^9$L1}v`BYwjPJAn@D5e6BT3FkR>)tK z)GnvMJILTx;keXp*qo3Y8yLaK*6-4=0G_hbu}Klhz3nfEzKB80^V`Ihj#YMplcQtXFu6U%S4)jWZd=bph(8i3+y=n%HavKbjAp$>rm?MAdf zO!XE-aq?!P7)n00fvrw56yG+S+z(pqsEu2Slx9r9kWb55QgU2ZFdY8xpMNqkk?wGM z22m8El8lnGg-hktrp)5CQcKX`(B9jT`YKTTeMgZ*WC=<2Q;3U{+iaXGPVUL7tU|aJ zQTZ1{CpvR03D^e>6BSD2K4pDKd)f}^&0_YMd_*?rcSwx-M>) znnndAxP8na?4wc6GjTk!`K09c&3{u*McVL)irhFN{07?!F8=cvT4UB;u`>=gnSXb@ z5+^7Qk2SjLQ}cIsF5D@;JZ<%~5BrsD(*fvvM<{rl6-Res?|Xl^ed4g@vE9O_+pChX zqZ7Hxw{VU!FtG~XOGnjRAr|{mT)w_CSYMpQ3Y{`Ba|@fW5x3nIP~UGC)>+@CpVl93 zWP$}bSLtk^^Sxo(FZ)rlO!UM^5gd5w!2{iSItJ$)VPoJQ`nhdTUvYgamP_RYyMy#( zs^Nf$L_1%CAM#cvtt%{a21xnMHMA*7e`h79>y#huQ>MCY%eX}2)HDpZl7UP==jAYl zl^Mhz+?$;r;KGOTEnQ3Y1;T$*kI3)I<*Q=on~1H@n2k9f;Zy-+qf;oQdwXm1nNyLT zTFv+FHDOl8=ET^Z&mQv&es(y41tu%m&sdwmiTH`%E;znba|?X){S*3 zyk-O+z!i_Qv6NL|ZHi9xxgs%5yEU`OeQKHx^^@n)^zTnfkk)2)^#J~M8@J1j8|R5g zZcyoGV>@VEp?$}j9Y@{)BT1yEdNx`+-CuS`1_{(Jqz)fo1Rq!WtLWAnuQJ9|m(>K3 z%!u||N4(aWs7K^$BehL%NnLvCag}WuJ`T&BN!-gXtXmLg2vMX=tJ*|V$T&D0Qt?ST|8Nzjk2tnU-OID>s z-f68G%MsZmcUs9@rknCkWo?}c_>x(Wa0HjxC0IN&pxLznBoH|2<5A7na3{|bmIdM{ zE+^mJQEVy7y?E|yUY_lu<3BkBt!-N--17V?l@OYgj5anOK+K?Fh1CSz0*(a4EHwz) z>0aaNwsPs3Xm>+X5*gKNX*bbWhEkd0BdKJ-S{RBH;k z!kr+XyidxmgG_*2HSq-Rbpg~hE=nKIK;8FjhcJAna{@kfXR{9H;aH_PJ#>{l!+S0nm8_=Cl_1=jPB zuU-InDT_E)Ahc|ALc(jq06S%xX_lT#r(0{glQ$g~1$8Sz-Z?O%&PMKCNah$_B1e;5 z%8BAA=7NlK(%1MZ!_ckGVt21?i>Gjcyzlv<$w|~#JkL^^n^iigSMQEB^-UnXgO9Dv z6>Wn3q{)33$?-9y&a4UV3&`v2C>k0`IoF-o8Py6Zbj%f*vF#H!sBIlQfx|IUkFB}`g zT1B-YyH~4&ZzSZ{wNK-vi7V(#)hwR~P?T#F1WDdBNS=|?uLn0)2ly)i!R1S<6I{O+ObW|56s$xqit5Z4+ zP2HKAVCEeWUFG6q6?`);zzYXl^n8m-Ar|?ag)~bcmi#3?9P-ymA}^QsE!4mctr&+~ zhzP8>2jLFM=X`wLt-~-GG?;L*~HycifhDvJPD=1(nW$d1Y zJ56h%%5D$}5l7$PpY-VdH|ThN9WYp$)ra>vg-Ah$jLTgWXO6HH2#JPs)T| z2pjM-Vd{CR{01C@goyTpt&A*(M#qE3rU^)l&-Zl-dRRKO~*-P`yoI;oKt*P zmfdC-0Zhe*i6T`>_|~?!+1EnSF*@WGd;1ndEIi4`7>H%jEMTAct04!LK*>m1rDA%( z`pH$YhVY$iy`m?TGGOAeb; znNdX)h(*CDjpan)T#W{<3uoGS0^X_sO%pp`{q~=R{`(X1`wYrHaM!Mt#p|XfFXiXNUO<@KB+vC0sC!oF>Ma6(Zr?-mAP(2xjO0?F@O+FeO@_XGee|Ol_yW zi87}F6|Hu-n^}IAKhR)umL%_eiN6W+BO$A44_So^0qR?>+%1n%9A4EY`r%!K9+E#b z;A}B^|3u{`{^rX*);fqj*Z%}06$bcH7BwCjTbmL-PbTF}PJ--Pcc#M`iC3jWxx%dr z08Q*4E>1JjKwz3fk^#$yw!9-u8yC2;9N!7A@l|T3w|cOEXk}lM2?Nkb)wK0|PqlMI$4>Ml4}+OpfmihGngp3S(bXx@raJQD8ZWQrlUY}1)<4Nn@koP z8B_71;~e>3W1f0G{Uz{egj;ZRQY($bXf3Y><34_ zJ3%lYtMmx2;}wG#?v!o|y|fl?6_$U|5^)m7V9g>OATb%~(Ln znjD;IPjG6=7BJfZ|A4G|C*{p1ta0!rpXN3>hoi1AA-V6Gg-dl@K-``Ha?#s6O_9d> zlU(rNrIR0Sm0SP3i2FP5D9?%1yLHNKLnqJj(qwH9reYfj8G^}A`@*-6vxT}X0g#xJ zLVsjt_6%GMrY>?R4glU=!aVK%gI491!Q`Xr6+vvy19^P`Ll-wlBs9*VHP%HAX%m!a ztz6(kc{dic@M;krO<^>9Kz7M>im^Osi4vEWzU5c?tSux?qK=}wQ%6T@qQEO2sBKTn z5zWT_GucYc$~R)%VJ5PI0{9w|_x)Wx*D?E4n-W`5gZ0|1^?M2=d71}=4zPon&bp{l z2@3|p; zC3f8?nPZsN)=VvUT85uCRAJ)HKi=e`+mC}{$LAHVH_xh&CighqyJto$O7uJ-I+ZTbUopIWIqvO|b&_#D0ig zbdEN2mG;(ftv&hs%M?5dQ z@A+EZVUINx@+e!^dhlF3*JI4^lh9Z26{sHB7%~YBkX+5Jg+>yAlS_Dk#NX5^Ghjiq(ibU;&8hW$tdF0 z6~0r@laoF*QBGgm8J-U7*YKP+H2o$s0{l;A2c^hy)Y|O^(=Vgyglw*iOU~hPJqEKd zuYAtB0Elbbcca!4R3tGK5w}FF?*)A$X580>sR3rBy+3$ zl%#o1tuEYm6|obcpX+2Pq&YPI#N|(l8W8Tc^RN^aU9^+ zcoWrLP*uXZ}xH7^v7iqV^`X;QZqHtg171`Y{_kCS`kjDlOyqw9m zye;KQv1`g!rljF9$L>sg{e6MPSLpB}bL> z*|;#BT1?)?RNwm7NJd3E_djR;kTII%rU%HW`))pRl-mG2JQ;|^&7-v<#nmVz3YUJ??!Z;j?2`N-#cDh>lg;^RClj#YU?kqzvK54 zCg{8Oae5BXdJ-9mdBJ0u=hj~>2kI$-294oWR`3qrFtk8uvW)*#5|QGgBF5I8n`TqM zeo9?m_AVM7@JbladZ(RagosNOQ_nktvG9pcJeF4ylV9JWkD5zi1NlKbG2&|@tD_Co zLb4|m6)xbKEC&IrHBkz=;K{ZDtDGxnYy`aBm;S~3*}`O070$XL;sLf)ytAq2Q0GYI3B`yJ0!el3mT(U9p7{cU?eo zT*LNvrE=kTebifh=K}F9<(m*pGd|pHROFJhO~^a=G(&5%w*bzIgp*dam z;&80@JJFp}KwWt!(hd0b00}P-Ga3}|%XSZRUDOHPbXx>5A%s4s!Upw*vw=4F*!JeDg+!?cMwm4%eawZODCq0eO1KKcQmV%lXSG-477#u9 z_frM_HEAG1HxtpwRPX6XZt%Aid*f#Vf>QKcyCwDE0n`^uL`L!7>WK>s}95L zv^A1Ij7r@jMBWIkw&Qia=I3((B+|$4iE$_W=#7a@3&qf1z8Vv?bv4+Syg1ecX=fA- z=AYtzlYl0tv=FoO`I^^NP&6fCLUj!;bV#AwMz_9RPH5&1a}|I9@HPBxd&OHq6n(78 zex*8TFGMem4!nQ>-cTZ`>F*F{xuguIZVK#F0VzmZ;3kH`IH5WaQCGthFD`D(_H87k zwNea{P-g*is*VnAoo^XxXHqC;o<0=L-WFkHX3Zx|#|KnGvzLAS1lI9zqI_+5{8dIJ zo0`4DXBy_Q?76;ap`A2AH_DHoQt)-D2$-6^qeNgd_7%@DnH*o{Nfh_mjfh#4OU5Hl za)jLn;Gs3O!p)glPLF(Rhqllx&$8_Gno1;tjxK4k-jw_29$t%T_q6dO69M^p;Vg)B z7j#QqsBWJZ%?Gn}T}et#0H8DnmxVHl%0QZfo`?`9p}a?!lfL(ijlHcuJ6bevvL!CU z0^>rG<0q<>ShFtD^xIsjj|TW0s8R*ZUw4(_(t^lQ5b`T8bvYU^1v$%$gk>0H`6%83 z=7e*Vq96o`sk>SF<(mP@sVRT@Wj5tGMz`JKA%7`NsDLm}8~u0XixKDUo;`rJw&;Iq z!WsXMN{uSJBwJ=hgj#P`CAgNj;?b31C#WH@o_)j0_+}tvA`8cFJ&(#_DZ^Wt&o&$# zO0Hv(Wo~d=ipV2oE2O!}TfTp^(YZB73G-V&;|`H1KPG?4IDU)pqMmRn(!hTR(B`40 z^lPSzGh=GIR9M{$lgk_Z6K=5g?@Qjm?m7y!Z zmEP-35t8~^Vjq03KNQ0}iMyUM(_~tcZYR+MI^UNeq<-!JJG-0HaH58??goJtN4ew| z86IkVgNd7-i$fM4bghyWgXeTweNhO|PEv1ro z@?HC3;SPySf<_3VNJzuro6ncZuO_V{r1SmHUO+5CSehLq8xPtS_|5NVb5=5;N0j2Yoz%&R0&``_f`P?&IkRrw(*CoFz+0FCCx3B1XT5hK{ ziF17$CbtFevSVp)O&Osi*KI4Iyk^VzxfQu!+^P2n9ypD6-yn;-m{#q}jc*Oy$tYyS z2bz_89ukO(%Ll9*=!|mZNYgrq#y7e+a#$DRbfY$2tXt-Tjb;tCp{fy0Ywnqu=6jMr z8(N%E>ePEl%(=BST$4H%tWH($5SF4IafLujPYvTHDPBa|6PG;oBxqh(53(Pv6kr)Fdyg1;My2 zNAye+=X z&y(H&3ogen_TZucb;kKyxXzZ04Q|ESjDB)}xg&J#+o7Cr_vPO1_1(X|+@#>=gz+(t)$LV242Qd(ob=oiE!rC_?7z4?{7Nx1`4 z8wvCiO{@4~xPghI^~qxmd3V5QakJ^A%CNbFeQCx}&+R&+e+bzW5>H>Wm5~qMJA=dy z!Xj$6nKnk!78=&FlCd3uy4$$kV?~<%QGjQzKu5J}oap`tFpnT*;-!7FNfyB8toCsQ zuF5?FP{{W7_%)Cl(2%-3ST3?np8J?XzmgPnr5m>~mm7FzZVGO5o<#;9>sI)q(Ag2Z zCbpH{R4#Gz%@0=#|2y>kI#jE9Q{{sY8 zcgHMB=GI=~^hL)AoJ*ivRgIk{@{er}9g@0!&#H1ne`zBCd?6BJ@qlZ^Y4>rc;3Hfj z$I%;P+@0D+VztR+dQYHxqs8Jr&;0eMpciKR2s*#sB#~>%{+(Q2w9aljJk5>bge2D~ z*o;F$jdlReW}YiKFXzPBzejkg4V#Fi@kRyGne>bu^_p)G*{J{)=;V7+{v{*?aOa|o zRy6&goK%cW1o%qC94B60;`S-K86jB?y^wT$kZF21q55_SoH4TqWpz@3)8UaPDle3Q zCKuHJ4Xx7S`6Uy3RZXdzQnhnA5qyR+PBPA81&Q;t6{r5&|A0FTUUw3@UZx5d<``OX zYlN22Lsm1%o&yMTW^&qZ(^A%;R$6n7RnTh~@DLQ{q>X3*#cwrBiqzT>1LD+ocu0hQ zPV~_oyG)fZcWvgeQt?@cMN;?$-l5{O$?8`1VZb;{*e$#1!_IlQJTawmdF-@70^ZIv}6Woi~vpnN)|9+t9AtIzVbgK@c%S;hd< z?OBDaDv(RckMyiaFy-I4u zTCw2V<4&INEZ^aDiWM7^R>>{Y+z=88SQ+B7IjRe~{-zY3wn6$}ZwsXCY0&?5k4^6| z2(mPhT#>Q~i*p?qlx;u!j~ih`lPT%CmN^flh6)TRfbW~{rw+YL(0660A$2m?os$>O zBNRR6Fm?TUXf7%e5A}ljvIY0erZFLOo&bJ$BUy;p>Fj8Z&X9^>N9uNZtI2~yKNgz5 zYan*(C;2+HeUYXK&KhxCE6z-VI&*X`|DWhfjWt`sI75W+K~Se(fD>~mni&8M-i_aj zA?ti^9JdpaGEqf{T=)_j;AV8m2YH-WD(kpDZ0~-+II5+bj*Y)u3B5dQxyPEK!S#vRG7FA4W7S zFe+*%3_Pi_@?vJ_hU@(CnuAp&Ay~W$4C|tYb{=jDN>V1St8xB*P4fm1%f=>joKhLJ zw9E>%GG*W3l-r33amaFBL~Sr|D94m$T_iVU=h{y$krYE|_~z@u$(>I`5_ zo^KM2Nko+1F~L+aX$?7z>%8Eroa~t-!kYwN!Zt>N4XHao%+K65c>$mq_z%7+TkT6@5V%MLCrl7pt~YzeYE z8A}YL@oje>f!XV_UQv(|=?Fg~#BdTbJJ8vbSCq;k4#>bC`KF(}$=Idv@MF3pKKB_eRYO(@QI zu8JPE)FzRA9qKxWh`gew*dO`e#cVLA^&EJ%R&Bf37V5W)8#(~(4dojrdh1%6zG+wt zLdp{0T`(Jm@;NXw{z0k%V<9CD96<#^5Gcq$PKtZyR& zC%><`bxL2wh=!Nq(btHVU*x3gvXjc~hbneO`r{|`dZkF|qKSrITg(V?=Bqf7`6oys zdKb?o-ps9~{gv`i_d10d*u@AwW5G@sWtSZN`3eQOMDvxy z7A-^qO^4)S1luSSGu6;J#`(lI;oXgBF#z~r(h$t|YE~&&aDaDW%v?cQGCcP*{{x9~ zP;OD_9i4`la2@u+X1)?prg>#)H(X!AJ_Y+28M92-R{FQ$olb9UfRt;uB6`jp+c3&E z`4&(UkcZ1`Uu`BDG!_q=L;_yKW{Vs{r}y6Pib-5f?$`kp6=ho-wmMI90d=)6K?q~c z_F#a88$2#z28gaJZNZyLP}9L1n^<}0Li4$RE6eO}%N0#8{j6EJnfqRrY$6;nh!{eq zHdd;Iy3n)Z*5%KwOyif>iai1yR36#vjpXfMM@^!Tv{#TB@ZCViy%IgQHCZO_^Bj($ z+g@~-rdZ+z`#)K*!;S?wDB}{fW_6___8BvU$r*O6Od|L>4+w>35>hA#QZcoW|BX6!U@{3Xz58sB zsh$p)I9srgAY}INl7mU>=Am`PTKUs0vQyn$k!BJB5$_usNCwyfLhhQLxfdcLU7vD> zlj55My0%2A^#fB{lixY^duxtR5R$$KZTs;7?_HH~Ivvl5+B*uGiyXu9K3;A}M>P3` z>LU*2GeDXM3wDLlu|1P7sH3Yn2z-I?HoXNdfAmZ{EuL?bMlGZ#;}jW!xyic0GN+E0 z9Z2q!LsgdDN<%>#S22=%F|x=mf+#_plTOEppG>X{_mlp5p7&HSKu0VRobLOIGtTWh z(XOn#A*0F#KUL$%@jY}b8HOjBDcGOiX1aJ|Y$x)|uT6~LFw78b2C0!ffT?M7MQ79o zLE%ipiX%I+8w1*Ts%WWv*9Yh(ViewTIR$mxI*uV11` zO#B<$*@#aLP(w85fjPe9GIW@&IGvnihtV$ya9QAp%qr34t;WG>qeoE1ptxf?Z5!Ah zdg#pQU+`*VA});PF^Pk^ey5_DZ@6Eswks41=xk5P$4E|wC!2A+oN~Da(iCf@*8hKM zdO0Ny@RpG3Y9%XNhQ;W>0n4U5+SfLirf!$d5fHGv+8Z$ zM&c5+4JF?*hC-)4VslQuUD?2jjxdPH3~&e6N>As0%%0+d zJJ}V`HWexGMr71hBj>;(* zNz-nmJDU=m(Q?_`vN~<(1BiQai_LI$ZLH=s!uE-s%YDS=)U^IUuzr9ydc1&*@Ye*d zjd(jbF5h`BLu}Bol}QhLZXiKHKtGoUb;V-wLXX0^=t+ak%(&b*6taZZgeCOFKJrNo z>vI2{7Vr(8ihM`yIveF5!h6Z7mRKRufVB2tI~6Hmzn&v83(P}XjmY7}c#)$G;K{Qg zz6rNn_Ww`S-@JUkZC!rQ7;|0wobx>Ok`z@+Ec9=%>sv!aeCY_WWkb@kp$+XQg6T-W zMi9z|X#|uCn1D^CKn1~`9T7o9fKECmU1Z(XWg^u2MHEG8(rLSJ1~E$FJ4$ z7cqDVFTTmNyX!?)(3)nO8JEnqv7blfahIh2x|%Pv6J_5tR+MWq@yzZ_7whE|Xv_55 zXjqh7y(`|dXQ3pW={E-ArHpvwCy48zzD{p}SL*;3V;eHa&gb&`G)}RJ42Ecy7ugf< zArE+6s zn;tn@G@_s$vKq(~BB1*m%YeonSv4-CV$+sCRwcD5$?iqU9MsaBc0t{%TZ4talGGja zZ5kuy8&6LQ(IQ~wYLcmgj#B+-ISjtDccv}371hUJ25KLT4p|g?NLpR0OS#lqLYUyFXABGC7oBDqb{#JrY~JGFT>8eQ<9zDjhvR zTW(0SxqWl_M~A>Q=|e={DvhRgO08ZwM_BAI)ewS#nIwWvi7{S~S~ga`6QJY8e^rXwe=r_?tQ}&4CH&3#Ed14g%u|KYZjl z6MJne110qAf?=fA)Fo@b>PF+yiQs)6F6GlP?lFqLTsR!q!pBAqz+>P#ScW(Gih}A6 z+T+qwkmjXKcxNtJ@N-nk*m0%T0n+X#g06lp0IIDr!j{kA6>;bydDnoPFe4j@I%#cG zz5ryewYF!*S8BC-+Hd*xn{=AZF6}I-Vd72g3VPN;Zdel7(cU+W5c%?NrFh$QLJ4Az zZ?7ng5OJcH;uHp4?%+XE@OWR}q!uA82e>Qle@Aa-U=QaA((Dt?v8ykSIP_M4Wv2!6 zMGrR+_p`EI9^<1& zMhTBw-r2?+Fm9Mnjo6$*!kS)^3TFiRc3nZAzJbHCB&HF~@|cM8Xdyg}tu0 zq_sT<43B>Z6Nsx)omf1@REfjNsOeU!uqURwqlk~`qJgOeU!fT|o*|!4B5F$8NPbfC z8*RJazoy=4Wx;MnL+|@Vskb<4(#hX*Ak%nzpHNeD1V&&y? zV1yIIAE$$u!C^qWp6BDEcU_~{QDP2Qo24}^sO+E+;6;TGn2=?QLOo$a<(!~5pY)C$ zHU93*rZokCorJ1PN6e^ljEgpI+0KeG2nJ@t!D}2dh!+X$4cOfZNFKgPGD-?2tCUkq6GPbcDre z7Y&A<678I57~2hdt|!f9W$4%^kAYxwJN%g@p5m!J#$lJ4tH29 zEWVK`l9H@tem!RECD?XG$CI3Tus$S;XwbiSrp|z4vGI4j-lnW2F_PRo6M5c8(%A|! zV4b*Bi&(}}$hEzKn_8C19m9~QX6Z8X^j*;vF(49(YHa&QZJj7gr|}P#ru*pi@kBDO zYFZ5ApE~3kMXH$hKPdsFGR7ca2PBQHtZCBp>3tj2&3+tnDFbN{tDE%#yl?DG> zS)=i825oLZZSkRRwqLX2ZdeWTpWYT3rT&DKPrwcxR8C#16vKpUjhQA$48u|*H{U!d z>nh9NZC6i?dvt29PnR-toKAvIq{6AhX#kAwnsx*DTsJn8bRLnv^QCl)8<#p5I^%8? z(nz9VXK2wNhJNJ>6)`$dysoWW)tx8d;T;vgAUA+Y7m4G>qe*~wI_`j7V+W^bXDv17 z>r#Hm6|d?Wju8o>S?&e3x6P5Ut92UF)^)ki=DrH@1DKC?$EM>uQ9-pq4z?@Wd@UuN zjX}q>+wz^P+4VS_fRx7V5|b80G1^>oB2PNJiD~=+xxQFrx#F9RN#nx|!L*c>I@;Jk z7lDN2@K0JMhoq*NL`g|IfS55zJ=tX5oZ@^psx<%{i$Ten9o**+r$TBslE(7R&%v$- zz)cRYc2_P)>e!yT^5qImQRd6P{`PyckE2c{Q{7kfCDLVQwW+5%WZgC{Dak!Yb(uns z$pm4(W-olYB6#e%j87MIRJ~$_XB1TKJZAoHN1a`A`=&qGv2eJw4fp{vdU>w6M{H_a zwu%C|ql9P(?```L?hg!|Y2d(aV%kqbphERjOV#DdW}*(2rjDa58U^-fYwx*S6UmFh zDH(`u+y<-~UDnvt)qIIm5+cIdCLHg6aX0TfSRtq`4#a7TD6aanGeh$=r?B=*zN)oO zWo@CBHKLkyDTV3m9sJlw(&bB|qyQ(Zzp>Kpr#M1S>~4zJ-p1oQRUKWwXLM>brw#3X zaC6w$oHI4tobeh&EZ3FPQ_-Lez>#KIx~2j1Vf$?LPU~%ZOFTDJN9pC}j2)>Ddy8{Z z%gQMBc$`s)c){~>>M&>og{N|T52I<+2gv3m5aPuw#n}f$NsZlp*ljFFgHN5v4=6iB z8lp_^Z}`XZF&)iEQNrSL&*6>2*LhrYT_nL#6_DCbBROX%L?kPr*U9+Yf+ zC)llwPUd)9d7(>#P#TRckiSamYJ8f6Ttl0uCYLLz>FoRn1TKH%E<$`@gJWoU3gT-r zO_b{!`bsQ&)2V8;d)g=W;I&1hgz6m2fPv(-8`@*2N$SDGLcri1*-Sw-UgO;IU5mSk zDq=q&oY8|ZdxgmzuzX&2f%v)18YkXXTzjyE(7v+-!O7dxNNQZ$9fGjT;+1H*>=~V@ zIiG;Lc*I**`Xz@mss1p9FbOZ}xyReCshRujO-QV0hb5VjE20Ck#*t7;vCxv3N5QkN zH@L$)8;Az5Q_RPG(Ub67qnn-pr=?u#%i?7UCF2Cg5v|xQQe5g6>jN>_A!#=p)^c_O z%3Yb$O4Lr#5bU1ie23bHe- zAr~NoTGm}u6+71gA`LCyY4cZkVPdDR=Xp{%d!&<=_>r#o^8`lQ>SVTBkC3kC&ebEI z!AA|VNUAb*Cq7Ih3Muk5zFw!9q?%P?*{S(iXV4);IVrHW^IX|BTO|R&y_y9+U|ZuJ z>u|0TWU8bp-@&#)^AjV;%cN_aM>&#z{r&f_pY~Drt-)pR{o=s##hhD~+G|KC3;)d2 zwCmvD8OM};PzAQD5@2~_u;PWQZ?atnahdcz(j@7_Gkk{6%K`Mh2To=HUFkk zMyGPnR8`*|`;6u!s^x}o%&birTdZ&7n0;A!RSMWk815NEXl5xHkW`-dBg}2oI0{zf zM2Q(>?KHJ(q|)2O(kYU$HR?^Yp5pnFUGlf#40@S+o~j6G`HiiqsoCkeiG7_B6{lz9 znVvcoJr(bNyC$5>%SHHZb@D?fB~VL_4#+Xpqcbe?-TduRHx_(m6H})i;p5U!Rvj~z zOnCJ-=cJtKjHwHBM4tBpEL$G@)Iy$BkqH3yF7U-DNIgRqqDPnBwY9p$RH>u=uf3rv zOM!CzWVxryM>I)l&2eaw)v3?S>o&Q#WExeNA#!Xn71t4F{S-N7G9Ir)z;C?d*@_$7 zR5d%kSaHD5qypDizQr>ebzCDU`L>x`Mys8Y!V6s?!r?pD2=3tniA^ZAgB*{b-68c3 zOF1*6ler(RCUB|V^CVI@>Ecd;4(Dt^sWu(wgzT$eBr3t9fkLTGRI>1f2q@X(CPufq z6Qf@(CZ5wgr**#NY?d2mmU#lSNjhVFjmG(+vt*g}mLd!S4bXyj^@J!-#U5^QQEZNH zvbWN)kv~Gq!c-SmVUjaZDF)T9C1lRmWq9ay#BWDIp9JK0z)cT$+_g?YYi$H?)Pau^ zQemMx(W67FjAniMChX2UL_>h-jI#M9gxSh707hb4Qa}-MvorIFix|Psf!g5)68DE4 zJk-v_GM`Ql`eF0n`v9_9f$(GS`H`>>-f*+T*0wYzmG}wsv7aX{PB{k|zG1A#c*3Tn zgxBmGDJ^xubl>y?Sft;4kp+~;16ZpEArpyedb*4p#rJSNmF z7Oq!VZjm*c9cI&ym3W>`Y_Fmk$c@G%Aq3+!Ei~`F_nvW4<&!_dZQbQ(_j765J}bbS z86EobgxeI?OC##C?kre(kAC=wKo`AtA;%*h`eIS!LYgBmCde5YgPgMpUSw!e1 z2NL@m*mNSYo07Um=fqT_q+6;yDS|>X?5G@{oIhm(D)skthlKayE=v(7>|uG#h-Y54 zG)t8awHQes358GHxJzbr4Hg)FR4Fg9m(~cWoRY%Q%pIF$^vzGeZw_vx zcQmROxK-29=8TQ_Qir}~PKSGD+{Nr?YnV$oy)B7j1XAhU2S7QR7v19)+Fiy1PAbre zZgqm9$eBwWR^xK$R2$B-LQQNwrzBLwvmN~|L6j9hf)$NTZNWL@SV)A%xi}IA(eFXd?|ye3kW@=^)iaM?JuKTBa8Ijl1IgHVOoK? zO#;kdHw)0K21%q{<*F@B>wwTZ;S6h(MxsdYlO9af zeKvz_{fuJ*gV{U>Wtj|Vq4LBiv6z0fMpap+6XuNoJKO+(PF2dDneG`+ACQ-)mwDG@ zY!B$(d9t0koW+b%cXWyt7r+uyk|6ZtE6el=2)fj+Ftn$ zEF}yLTm!vv3)Kl14%AmFKSACod8M}m8ufIXKgKbVF>brt2EB|&UzP9cJ7Dxjq$RBToCsFN4p2T!)&A<8&Ua630hk28zvZK+!^ zMDwvq!V8d7&CS)Q*JmN^gvbSlI0-7N>PsNyAh+DtLRL(L)fD%uNL4JoB_HZ)IVWZG zA`t0+0!;J8Gqc$Qo#DDmgYl%sXTtpplvD323X8kAVyRjO4Nd{aM3 z?d&o(fKO>8#N>7^cM6|DzTh3JgIc6*B0c^S!Cdv2VrXbA_EuxMu9<4)Z3YLDtHIbs z*w=*;PVWsi`Ektjrktd{r^cbXqD9<8e^U0oVjfnA{CLTC<#$WCRBn}~U>-7=EcYd= zJyL#IG7x>LA+y;WGf*_I5f3kYuGH!jtcw=~~FFRTg}& zBlkzH>9R3hLw}W=8)U^>zqZCFtEs?G1{mn>bgc5?XQVj}H4J0v371cb$KT13=F4+} zSkkfq;l+2TVKab+PFHH@8cY#KCp)v{?Bwt^ls&qW(qH4g752L)Xl2xDW~R#LA~#T|hSm)w`+4hi73PF>n5o~-VykXSjx zHij4XcP5t{eh`&VRdtn_ohS#W$35NgN&>NW=r6h3PEa$rjd|{%k|gOF)l_LNNRQh& zp>Gr)c6OLZku3xQr=K{pxO&bOE_&QU=$sUAXE3r7T}y?`TCcB=t;EL}7!HR3h0%zp z5*C2be5wa|#F&9|$$&}QZX-_JSrKR$h?2{;+SOgw6elWd**5K#?wX27Tsea8X{;)B z2|AM)DUUPKoe$RGkU1b>l)%(Yw1eGdDcvf)7E5P-Si<&Cj?O?HoS9~YUT_%vM~Bnr zRS{$Cxs%y662T}XF;ty%EVom;cKWkOJGBrZEaz#SrJo3Wqhk){n$vcQ>+g>hCVQ-u z8p_Z2MJ7Zdv+M=>@UeA^!J9(+n_)rfmu|tBfSzpOI_hr~~RJ{ASB^N{t(C6uZ`?ZU+ zIItqT%q42|L|Y_DbF*{9oBgU=2bi<9aQdBS^h)T@RZ}VPc>*DTDe+1-iDp9|9cybj z5XMe3>6AB58qj!({aLo=O0IFmf1o0?3Ps?>tng{50;cY21MnlNs%~a%!n+uG58Xx$Ug1@M3h*x-CKHDljeDUQVYXPHzytMbvdm?3 zAVVvm+r6d4Cc|_%NiSTA*)RYu3Y#gZz1M_evlLdVQv(e|EfmgKW;Bl!{{elXE%M>~ z%?wPiS|uz|gxx6Vq*LnQt=4yQXGVTC_FxN?ZZD0qG>zQpIuAZ=)-q-@a($GhL#y4Y z_OHMF#!BEU`L(FIXTwk~w1;ltJQ=6X^tgm-c%t#q>x?hBj`}9;{7o1EQxk+Bvzw)T z#<$i0Vj@M>PecD5W=HImfcN4LUK=NIu)xid5x&dnpS2??(`+tMR1jID0%gOU3c(Xy zl7#LqBF_-(6`4**jk+I(kaCqNdTcqNVgab ztj4wm16wj8XpLLj+hGjC2!FqP{l0~nVNGg}BR?m(P!Emf?2`4qw(l_V%ZDG2uG%br zfinQHL}H8@V(H{}c{dSbnZ`lS~G{}kY)S4p}9s~!7&if-iJ1NgHgeJbiRk#d^sySV2ZC? zs2fquMplq#ziGJxLwHGaLJ;ThMR_D)7n3?C(ivLTb1*qKH={>Ht#yr}7Tx`vLQ8J??vMYf)-W}HXQ~b!vhoZAw_#1kb0Q3@ z&fME;IIW;&|77W;?1Df^xzN$xB*Y{klE$($s)uE{37YtIb_f^RK8Xan`kR}ESH|4G6xtA?Co*>%THNtBY$ouZ7OH--VM23ZGA<@%y1UfqF2Zs zNnORWN#R_QA^rV?1qGVMR@J-?w*XnF3aVaPh?|yloJc(Cs#=PsTsx;upMr z6nf#KXGT*xo$8D9bLUuhU-ozcgtv<}wd!q<*R&q?0vDwD2(b|6HjKr_&ixNQLGIc- zO&o7=;fAJN72B$snPcV^M)j5lY7a~m3%=$_JC~d$!iqj&4PPhf;il&&U z_s;HC8+Ei?UEAcR^YWTfyh@d=>MT`2y{B&;&Req=Muw^Tc5&@K!0eG2Q|G08yGe)w zh@q9ZkRj~%c2g5@PDvugo`~^^XnIZxE=$MRhRmiGWq&Ag*nzGb*~6Axke2AbAp6I_ z*k4Fy+;c~hwl0MlBrmE-+MIhP!(*`&VO2BLSa2!!<>(<<%^a2#{Y= zk5}PHe&s`5_O&$H(bQZy)6-v@Wt_N@j+q(KqaQ$?73PkEuB3RBxY@|`z3EzoBMrv! z!rmE%wHa#a;I9q8hh(%(SmR28?qyjB&$X z&DHz7H5Ww8FPf!FMlE+|^?@cCE#{@k?C46;xCt$g(bHL$-H@Vboq4JFgN$N-GpA^$ zl1M$IOoKv<(oZ^I91R{M)Cyip769E~m!)t{{Dn{vg~7A8S(ZM#T|^%~-cG>6&jc;e z*xFja+btobPc1oRj_%28%MVOhRT>@XtfbX*L3)j3s2q1}&1?&bV^@>_mI7cEkQzG(Y%9I?(j{nlm3GphTDz_Fz&k7{m~%`mUUz`sLNJ3Hv99O{V1UQG%G_7HFw?7eE4lWtP1&WI)UkCv9FjGp{T;w-X|6~ov>_Nd5rYN zVUib8OSRNR&{0qhT2p|Z?EBHo6~DjLH-pFbs&!It%GMXeh^R+#bnH9e`5I%GvcXz* z&q-T_XA{K?1t5wHFXA&JFZ6ik#9c1ZXu1>*FRkN?dRU|6>C#xo)!RNm&bsnkzUjDc z81j&?u&}o>z)RCRHV$*ZHx$34^noffY}(K`_Lz4ydHzfpF*r|sepen`J+B>=GKlU6 ztlw4xWp!=2kV&poN6R`bd~M18p*_H*ETx)UUYX)K*Q2K&l;zzp6cy6iTN7;EixNX6 z6Fv~l^I4cN1;KF_WLekrQp$xe@Ey!gmd zfNP!TkaXC&(5iSJ^I=!QWQa5~KA!u_IXTJPBiq-0`(YBe$3v61a*L$W$^8C^K;va` zXPYst%p1VTbxruZ)_iTXfj97|TYX{{!2cx_ktkG^8S$u#L%k#(Tiwy$r=e%X*P`~8dNc+LT4Yth#siY{l?E}=W~+299SOkzvG0q!}E zfXBZyrV=MLp6(KI4bnLdhZ36}h-4hIAHbyj8Zn)kYU$uyV@qNuMIwu>eehvcze8K@ zzM~w}C3ew8NX^5|f4xS#+T9hdGK2{(gq^pUiJ1cgkv*=b&|_SjYi>|3^~OuVrDX` z!iFc*$o6Qy_b884J_`_2sVb$;K-U*ShFNCqVE~!_dCNS&wzM8~nxai6MPELn`Jl(! z4P?mMQ~faB!brb&ezK$)HlvX30(GtN?G;WKvTe17#LT8MG8^wqes~H@>KSHc9g-wT>*4xU{Xoe& zGZoGQ-$q3R`D&(jqCEcxD#=z?@1;|kzWh^pU8hK%#m8Pno~syu_%jA(+=#4$UfGy6Xv`Kq*q{g^|FE`?-_CZDE@4?MpVNsqZ%0|ldxe5(6 z6_vnxApu!qW=NwkLqgrCklMmOSB@s7Yp$GXBTpS_BvimOfvni7-r8pAR%^)x1iexa zVDDYn1ZFBHc9mR9a_jV3z3Z9-)&As`R^ArD}m5m_1ZtEE#d@9X<76y3_%N=$N z9*4(m$-B9V+Gm@SUKS>{P!zKe5NiBbgvOzmM$Pg*<==@SWaucKM&Xm*bZ5C7>clUr(zB#c2 z7d;_GYVLiZ;pX?50C(_cvPtX4G%wyK*6ic~je^#6Oe{sTC%*)fR1U)Ygj>d^$2BjF z*`A9E-YN@cxIIp((`QcgNOO(Ct)uD`)Nq6eHDkIs$ttC3gd}cPJmQedYL8)tk*Y_> zcU4m&vhrhsc+kJ}7SrnS4NE~}Dl`{jaH3|JI)#mmT%Hn&;E-0H-uGoAa}N4+mDuo{ zE9Gfi2#Rry0PH;mADMyP%Uvd0-I!-E3V*8~MK{S9sa&-b>73dF4--R;;;s;ClL^6S zMmyK8)o<1--L0|kxd$$U&r2%v-l~2Gs)Li!b4m1it1L_cvdEGWV@leGPR^Ro7~&9! zJX_o1Z`|tT0C2QjLV2!57wV+R+d=ig9aWj04rE#M>sjzQ<*uD&IZwGRQ#n?YX!(x? z_2WLcI)wWMKhEo>lF@7w^xnBgknsqU=*_k)@Uqy5Y6^32kIoeX#n%&ZrY0eVE@gtJ zn+4vcdmD;>pMyxVw%bW$U=|}^!Duk#Ee6?$L{hJ=5&$&5DY=mw|2^mqH{Ar+UQzmT#tlBR*g4rSRR$_hXQ>{b$O+v1^lV`FZQ*%R2AXCHUu;Ej4n+pb$7Yx!$m zP;C)R#nrv#^O9>s0#D=gzvTX-k8ttAv-j*fcIQ_g!J*~wDOS2iO8R=KR2qw8X(sA}Nf zAjlP|!puo|)_M69K=h=->NTs;eu_JadSa*S5TML=EyBjLSuR4s{y#Bmx$3I{oAPd= zf!X7*2PLJ_&~#z=l5^W#S}wtMb%#>vW*y#G9;e+Ux~1ICs<%I6mQW`Pde^EBd*Nq` znI_BlTb3_Z7NrChHOpD}sN-gFF7;*I(x~g~)fM4gG(g*3b4BGjj)WWPnNLr6YRMff zkb{wL`#f?a=9FU%tbjCZAUf_j@oQudQHuJ?)jo-EC2R=sd~NtbuFa*(H0>y77Hrfj zp~6okh)ZX#Y03sqMyMl}h+v!$sBX5oFVY9j?J|=jk7;#h;|@ZOiIbZY5rcY~%v?Bn zp`HknXt790wfwkGADbd6K#VD8qbE5gXH9dw&w>D@4I6q{{0~lbhucSWM&@(g*F^{K z9p52Le`~HXkfS^7+?Wj0c#h>hu0p~yFa|F&0GZ=x*$mmZbq06fuv!#TB;^~-(2i(- zs_m~C9A0xd$z77_@BpE?$&@<~$k!g)648Z`5_-w7$2O|VYSFu953IK9PTSFt^w8jhG1_j+yC_l&ohVe+Tfc=3LmF7!dg89qMOZ&%l zL>o)HY2>yTyPgq7Af=E~#IBQkw?T5k7u&i$nqsm%j+T`k8tDc)Gj&f%qvPtM*qV~L z0Mm6PRawj=A|OJ|a$8?-)^eB)(r!UQEF+RhTg~G0c;`LBSLQ2sq$*iHGL~~A3E7p< z$k#8LD-7j1hjklXZl)sVA}HrZflAE!{~sI?)Z$V-E)|)!_9H|gXPyLit*SO zZQoRx=iPW^O$@glJ{)-#$m(>CuF{noML$c1&+Hnw*t+gQD3l-8nQ|yLrPfHF-oXs| zFP^+Pu9ato3fk#`Xa#GY&Rzvumyff?9g*XYHSC_uDkL#>TUF2KBG{VDzVu6^58}9! zBSk@PjWvb`CtrP_?3ohn^x6aFe82(l}^2pNAV;;S>CVjL-mO zmIJpexP?dou)Sc+Qs+ven^G=0-VV|+6W$vYx(ekOn1;Y^a3S0$lTzM-I&fs?Q< z8I`_lc|Jwk%onD$EPtKqnZClel*)X*Y|Z8V$>|UdMv#ZJpZclyxFlY5m{kfM^S+iL zbDvufHZ&*9k=7Cp)m4r4C8t}XjJul+DWHyVpHbUBwA4;5VDOBl-olAVe=K6wr3h!V zMH#JM6|yabe`zr~l193{U}w|0rjht%u=L1BM`tQl1lht`W8L~@yANWPG7DF0D~n2v zk~mIP!jY&w0b?h>fVKY8cC5lW4x`d?nc) zGVhl7F806a;Pq6?9rJ1I!xS7E;mI@z^V+E8!sE@C)-#=NSeB8*pONG%`@;t{iPii6 zZv{j(M=tY~tFbiEj-2pQ0~V4gN4inFr+bI$nD&slFaGtn-}soVF>33Pbjt_)HX&&_ z%JJMKa9Ckmql%SA%)}}zl7ijXdtofwGnKs{MlGSVEmQ*_YO_9pJx1`|`V z(h+N`dQR2uNuW@O-$JN(7=e7mqkDZ8Gc(?-swlXR@!ij*3NPkRV=O@dm56T!(n(8N zc>-f(LeRRpc~c?9mSnAQrrG+K+8O9}N#ws*ETFM|CU%mG*s>%Mg@5xkl#71g&g)vC;%~;Qj;!#NU zUD}!7B*hTywsc`AvxDhi5ito!lr;p8v8*c{YwqY!jCZ-(>eAQf&dg*Z!&bcc79JiN zz@6_}@x|lT54>uWhdJjt<`LRb&CRCuA-$rzQSi4kc3F4&jE21ox$XH&`*<<2=$Vtb z%Y7wjkWw%Dr~9%0&sl64#&S}wNE7#vS+<*lp=L;q7^bZQNPIf{o%{$cgm0z4BiI{VdW9OxE%JlkTKb`+Arqf~BXSM+$Q8`&(yDMiQf>N_( zoL~7UwwR41xo6ScH0{o6WGPE;a=Evv;sH(`@Z=3hZ21xH@mT6GnehD{#(rD7I%G)d zwwxNJD%yQCh3`O)U(m$&;I|To@2EVtGa<6fI*$x@#3}iDmEalQO=M4tNESwRt#Kcn z&dW&WW*YbSPU+L`+NFP*snTt#!+UmCn9j^F16cd`zC|fcJYhjV?+l?iaE!g|wXKG? z>U^O1^A)QrXZ%I!9*Py-rZqkYQ8G!M@2jm;X3Gw6jy1YsZ%Ic&vF9n=^nxsXH$4el zjHc#+)VLW}*A=RvRN=WyYAP+3E^*iAYwCKK8HMH7g|7G6BtyegNK(M_y@?KE=?paG z3~v*nC_$0_a~H5aVR4h`Uem0e+TrfeZP%9!+W(pa8M171qYnGGNOvFw4L?t#{KEaV z!+BBNS%(5O2^@k zkkfK~jjv{;V}HgNbB?gTYww9pP}b|yBmR-3s0=~BmBK(HSNoPj{gb!}+by3kP5ejq zd{rbWTuZ`(_mijF_AEFZ&wlQ5y)s@2EP%Ir_%GogGgVDD7i`x2P);D&xW zAXe|&?l07ao~y`N=dE37)-E_T4q(8YQLat?8sRWJy>&`Bm&<0Pu*ad_6;Ujj<5^MK zDi|)UvsCyN_;1QR$4vIIpgGB5K8_fK2I&YkQZNY3wk~>F-ahP%@7xVm&!yAB{DqCf z*i*Qm^T^mW{t}$g>W!CqcdCG4SdAjXW$OkzF9W`5>dax_-z2FVNOYFWEL7B4k+0LQlK;YOxF?(s)?;tpk~GD1J^@ zZOKEsezx($mu*VSaqlR(c48v~M`Z}gvL68!I}7y5oZMepnyaZZ=n?6lA+3qxh^mX7 zb>vpM!~vNewGOC(c1tl9Ql2T@eZS!`gOjPscU;MQ1%X7MNYMGd6D@!~}`vZwJwRnT0WLImAEYqgg zI`>_Yf%oFk4S7gbPPmM#3IqN%10rD-LG>HWY5 z2gW9?TK3HC7{{Dl_z@ihn%dNfIffLHsZygP0P96skHn53iiHC{rZ_(tnGQ<0lVh0| z*ZFUi?2B{1&@3*AHKpw`3kVuki-c5C<}&tEGP7c3ARZdsaZe>c&q()xS<(i{Fy#cu z23Vzfn8g4yu9LRMcv?4|symEY_jkUom3-M>`6{xkGu2TKlvJ68v#dEYgFwwvWlOE6 zs}+X{>QhxcK?NxG66wL8^ylla+^i4HJ>=&chi=dA1mr}r^hmAJ>Ha7r+&wL<3rf}f zwWa=5_+#Vb_8RF5SC4B2>>#7Kosj9D( zGJ@L^bm&Yv*xRJLjt{hFd!gD`&~dM6Nt0cwX>SW;Tk(765@ZxjJ5l1{wq(ZAQu)Ju zO-Gbm<|#y3w0In-=gJfcLlhlT!~1xJAbzzOV-naCApk^L$lo!uE$}Tl24NW{x6+P^ z{p2x=Oaj7$bE&;*N;7igjA7iux_Mjg>T>zDEO>8#7VlW4(oY)=W1)d=vv7<~;*93= zHHf+iH`Co1##eB1Q&TY#W->@xNy{*Gnm1XyGA?80#0x1prDjP0uTNw9aJ5RA|2g7` zhO>7blpqrGTCAM3vjCHV(KCKLxZ{;G~^4sWEx zFVe@0dRNuef>D1Xa~|p3+#}mMgK+ zxILzyMxnsm(`7!=7A%Y=m|=BUN}d*~*FGa&PhY1J&Ct;6CazPUOIFQX*E`8eS)l&O zlS*%ewSMaUk{CPNveB1^J{o;T0y&OIDes8p(6Dh{TJ%QU$k0!X=1g1HWl<+I^*GsO zIuW9^eA8k~;)ANvZSiFGpAr7Fey6l{cHE>Buyi?(srRb~P|x}y(XJYusdQDxyfU|R z>ZHdZszpw+B7CT6%(o_QVEM3I3e9b0dN?5lYIP!i!tuCc2#D0uj%L6h zl8vg5#%CD7PQWYgaSov2&CL`i)|Op_`ZPW!MXxke^O~7rnc&tvyzYM0-WZB2jwrV+ zASIsZfbpa6JTh)6){3dgr2{5Z>+G@AmR??uN@Oz$_|zMgtz%zgG?cpF!l*$&q#&e5 z4uwqZq`giRP6S(alLu+(RHz5U2{XIO2V9fOs}?K)h*m@UZNg;pLJ+fbi#m=oPyK9w z{%3E|Ox=QxDr;j#x%~xSFg-f(-l1+Pd7c1i2dnbYCjnqG#6#Pihu1Z#-4+jPSY!8% z#f%g3PylbeE#IClS%*A4Bh~dw19`N2sWEQ|(L_5cnts?ORt7>hn4}C|unX<)L_j`> zrC2UUCz5BKLh#Hc;`M4P1QLwK;khw2I>fXRO@$#|I8HVmjq2q6o}hcG_>!tGm>1G4 z<6VAJkK?CwsAk6SDZmBVv0CoG(hY^HO*#$HlsJ*~TMqGX7f0P<-u zd>Wb~M8_$QW5~|ygOa04NdFJC@zzc9-F7#PD%d&Fzqi>4+5&IRB6QQv)50?{rSXLkA3?0&-f``?M`( zGLDC+JEidfG6b%BS$2b+)6}4i3?Pf?1ahm=d@_MfIYb9$mN}N94M<$wQw(6ZqE7W2>TLP|}5awkH`PTxEt zIQMk%91?C_%Q$!2_#nvgdNoP+3s8ce|dSqqfRc5H&P?q#l)z;{8M0MAq4VoXNQc{FbX@ zJ_Bq@;Ok`?d0d&)B1N?Hm7P$XvlU8!KBq4N3zu|9u3>;f`||^99iAkoF7;@h$V}pE zVoJTuOyg^g?pnq?v`+cKXwr0*GH#RCw7|QjZVG}KthiK~I_et>z3H=*)R5XoVkDe0 z3S}38Iy2=wGT;f*Q`PtSO9s(#DLWBq+PGP-8Yg;9&z|e3Tou-c2e=%pkMWtPEvA+* ziOVVJL~_^E`fs#^+W43e-`U---!Uwi*jIBbkcbfaR1{`}{(u$6Jr62bNSOLke<-wi zhSpfkbX1v+f3ayeYYXLI<5v3Dk>W(2O#$p?Y0N^ZJn4jGQ!`P_(5c{(J*TQilk``!x3~3L(zteQqFs;Ql8T6ChLX9Of1k`7!;l} zoEr9TqAix_ASb?P1%NXQY=0ya9l$ae$n161p6A?ykQ@^kA*?>v2em1*n9F@3TpEqU zT%DopPNi1cj@WY{Nf)=m{2z$m1tYy0QwP$^zy9_+1>CXA)yf=RR zuJ6dVEq`xrPj6vH__}H{<)pV08`ZYHG8-+5B3Oq_x6VKh4^s9SOt_^f*PUj9oIw&abvMt~mmvF~It7zQ%- z!Qb<$jTkn}b!rd}=p1S4;VGUn$ilg5b4Q?|>9{#}sc2>hWu{Te zYf%>Se9wJQV6|QBvLT^i8^tqI^pO^(mxi&&${CtOHI;Nqk=rFmX`-f*>!zs`fA_3HGQ(mB8U~p z;8s=Nt}cE3{j{5Ef%GrvjXTEqZX6LYHJN6DIjtFy-0|uuU;?yX$2qgoo3|0x@ z+S2k04ZRr4v|wln@4vCFZo*zT#)LT4Xfq+fEl7rU9N3j-8_B}i8(W@>KtMIq?Q@pt zd&xBSNk5GgF>05Nk;>ZB1_c(Ts{Dehh|E#7rz<%V8Nr0Lusw6jvHpi0^Hl~;;0V6gv1oO#Q2D4wpI_~2-B9z^<@Tdex>Jx@brZ-o@DBo*O5s$ z<{UpxJXmmlD7bC?5oSxA;oG0t2qysUXeqW%e~9aTTi-Xh`jJy(#}7kQG1& z&{HNvoU%iXJVd+mCgQohKh~jKIjKCW~EmhIhs2 zWAOr&grFyT=sA6l>`g(2j3so7lrtgiv|5`= z0XkeNsNSz(RU>J#_MVN>A=*3P?%4@ZLb-~Dw9opH6DZsGIKh_QmgHt&_k&70;Fx!^ zs*Xm-G@r0wsfugF-Uew{6Eih^X2x};M)c9Dd73(iot$=rj~tRXSW*woDCRki$>)}T zW@l-CU0G`e^9) zt)@9ZV<@qy+o9mv)3K?jw5%dW6fIT7N=1^@6ID0|N zD%x^#z$s+1^04~ZIV84ER^NFRG;d32z82>%V`_Y$> zZqxERDFC5N23M-Ssk@KgeFtN#{UGQwbh{EXry0Mhj^>CQ&scOL;~3AVPPCEZn=xzM z8w0tJ9$~4lRfv}m4{R8mBLp-&N(I!<_8*`aCJf~`I{XbB<&n;KmNu3dr>dEh&!j-= zF)DA5SZ4?=$cP-Z#8}-iBb^M z$#GkfP7%Mu_l(Zi)rXt#1#+py3y?}5mJhrckTF<>rxy0AXL}Fom1kJ0 zti@4JkR`M1dcL1gn#Q0d^}}qVqU!WWJ&lw&g}mB-_1ka!G;%hiywvuYIBb)Mu)rIw z9cwt0g|(8{Ip1@@ra>*k-r8kX!DXwdK^B!>OScav=i|fh)3$|GDIvzDB4RXH)dOnR zqgf~2?CjA?YTPD($1~S-v%Ce#Jl_yFjYs{>F-o{QuQ~5E#^^NFrIft0xU;@F$(feF znC$5>XIx=yOaa?avq@%=Na)41K-D#p#phd;Zm*!7kTq225IS27hV~x2nNdnz)w^)b z?cPYk0DZ0S{puBjLL%&d;%R@?d>l`mv8psT^OxM-F6Zc=GjPB_IgJvp2vCo55%v5y zN`hLVf((dm#Hy)JfuYaJH=WtBNeLM#ObO*_jC+AjAyu5d1(D=!FtWSzzwfW#362Cw zhQqdw$l2Ji0tc9XY0dPsPnG~6RdaWrs_u(GNP{y>C>+XGN7Esz#(iq$$D4A=d$BJ^ zB-GuJF8#Ie+75tr0E^RfbLAK0)%PGCIJ+y5zCnN{Pc&Dhu**GYKu9JE=WJKQ{9@VkrI^m(wtw9xG2GFBk~5WcK9kN5-ngeIuEzi^&hgN|T5g{l9|m zm8u7gT`o~qX|8(9hmt=TIB+(+~B~VkQA)C~wv%J{;j~>ZAIuo$J z7&yg7h`6+2G(b{_J$Y)XC-@sl<(>ijfkG&>r0VBT4us)6DF*p@Sv@M>_R%b>PV|{M z*5}m1@7aVvq~a#`K5{swz6eT&i22>WK=z-j+=R>Z;RTuMeo_}r8enAh4i_#4Ycpv1 z)F)YXK}j2GcS7$uE0ie1=3cGntG{_Cs*tsp;FP2xVW7eNH!yQXl!t-HQjd9Rk?#e(4ZzVYuye0F#vbJX1KH z^w;dVB*&w5CjN(f)#O_W4aOuJ8aAz-#SEJhwX~LHXy8VP6hL1Srx#DjHS?i4E?c^# zX)JhadaBghSa7ymBx$FqpV8;wB85ho%h3>u<|4opE4`-oz2rSwZ!JbrBP_p1pGs3S zbK=6>4s?+~*F&W4-sHk@fiaDT4rNToH)H$yxlA6>a;uf_5C_Qw0OQKwXGxzBK8oT= z<34;&1#Dr3RrE2ol?~BQXFa{sMDpAYjTs8K?Cvi6woYmM>+io;t1Iqiu$~BE z+|rW`(axBLk=zRy9xwFi=o_%GMogO10Y9{2~dfi zwnfP8G-w*%5_0R&+yFQ%u4R%qps@|%H63I3vOfFo8Ik-RH=0(JZ&P_3FtIRL>)I*T!XJiJ>r-pV~7x97FNJ*XkQ=(17WGr7dF5#2Rfoe3j zmS?<3!?35&OLEO^pAatO%(zP+p<>LYt-6*M>*?A@O}BEY>lUAVsNCq)MHWzNS9iO;6A9s7s{9r0#V^ zJTs~wKQQ6R&GAiOCeH0BFj046cb)^C*F{hQtT<$E`;=~D#Mx?e%-o}z+x0cNzE-We zb4nX>(Cm3a9B~PI!+Y+bBkl9rI)gNyj4*9&ds1-dyISr=6te7T`eLkxQAh%=!_qdZ zP6>{luy0C*k(wk3JRf@$@zhRklE(nv75xZ>_)OJYm1n$8w<+aQq`5&+>NP%}i5MoS zhsP2{sBPVzI%ci~xQkpar>>Z>ttfRP^+_AvR$m=?P9iz&?EIg37he?AkntK#*Loy` z_CwUb=P{6!BuiW<>EmNinnrp63o(YmLD0(S31T6Zyjs6q>YINjDXV-GRJ>jKX))oG z!Z=cwEooO>Boqf)LM?ZlgQf1Ew2+$f>hrzm--q}8btZ|D{_yu2=halo$N995DOUN7 z$Tu#o%^kjLYQ#7{pL37;7Q?gTM38>)n9~gKINpAChQ~m4Y#Q@sr`3Gs`Yle|IKfv8 z=u7=JlGlr3*#(CUjP@)$ji<0uJJLWDqu$yv^*B{%QP9yV75zMrd1uA($W7r+_UMaP zQC5p2abuU01F;jAALw?zalPwaG$v3%D4_<`H&xPV@h=?T=8yfuPawxH$&3a8sh0)7i_Lq%6QXIB zN|et}$*>uPalSXUra9V%T@dM#t9hYed!T zRY>-_L2Pe-(r3tl=i(B%MuptgrnM2oM3EBu5ZKWnmk=^Y8LJ`Ne-{@p~jMIsFR8B){$)8Z%mrhV<>xuRl>)bd^=XyKzv4m5&m{y6k}GuB6b+%cp&i@FQz!Q`$WU1 z5Oa)LPs0B8@q)di=z6zTzc(;EM;ZuwrMUZ&@9P0pSS#4pH<~o)@N;YZJ={Y;rR?Qn z#IFjn^-jV`zO4P6+#-G~+gPnMdW$j5R)((>|y&U~eX2Qc{|d{nKrI zZ7k)F8LfIy!z@Z(o?sLho=Op*5!hWr9PdiXn7yczgFwVhpEHq5Y17>lT)P$IPM1oN zX)6S^7YaW-oSjjRgGy^jgsVsWTSter*_qI+tNC(|POunA4N7z*LeMJEG@7ge0O0XP z_~NZwt|`}NSQ+Ox%BH;yiC(WynveV*h+J>b*_*F2w4nq=t!y2T(dmcaeowb#w#N~) zN+fB`3VNxZer~+wW7ZBMcG>}8)|C0s@p|9}D z;k{rm?Lw%<#hpcGlpNzxDsRb{%HFBN;h%46f_P4e*6wN#PNhw~Tr3()^&~P;PIG_k zuLntB#fRDJ&Z07lr4P{_E`KL6n!#7!YHBuRrD}3k7{Tzg$EXT23k3#ku!AZ-!L}6)sLF4Cdq|FYmkLj|;C$8P(wQRn;hu|Dl^D4jwMglb@6^R{iwxse80r zJ{XcqlXiEYOsJ%Mkd0$YpDm`^$-@*XVaUfbtgo0i5FSEPm&v~^(suG|+epk15r3-C zv{5%~KDDdsdLi+4vj}Ue0n0_m`wiRIZ<=Cn5{dyRVykP4=q6P$a}%AScAIO}bO_)&Di0Ey>HGIBAG2lv{E<&`AlrQdWM zjRm&y3NK26MC4@4HFdNu^07O~-3?Vtr-&bs=m0`My}v+E4bPQRlY5rqVKFEP@mtb+ zBacA>g@jevfho@tF=4}0rK6r?&Mlpk(<- zAu>veF_MN+fk|*k8NF2Jgsz$KTzsf39T5yp@JSLfCz`LOsd%F#M)n-fxiQ6;vbIyL zF5HNLYn-i>D>GGu%}P(tXKop1{W~;Msd~S?5T*&#mG%Nak!}km>8^JH`^!mBumym9 zC*&|`hkTlD2_G^yFb4!ZcK+HHVzZDF^Y0oB!tjiIiCW0Zrb*c_Q1!0*9ILD9$o5os zUD*h3sCEsqHvRFz86>GQsC>i0zXv#POKCJ!**6xorVYKt(7Kx@-YpHq1skEzxO*m| zEr2Wy)!n!g5iCL)9^DBtAycgW;2xvR>KJ}YYFE>@P@Z_c=`0Xc&o#3Wq$1dZ$%{WL zpkoSUrk4*upP=T=aA!$|E$^R~1EA0*;!P_Ts8;Sm*kfr>H{CgGcFJ$5h;C+6Er(#j zn5}JpIcC&AEyu2;~TExG>CCqZ2$pFlRt)~F3 zydqJhxCEs#8DVaddFvK1m}R$6?bqX(I-{u_g*9MEl#i;u?w}~A2f-{zOBu+TarYgf z>a@#WeH-;a8p2c3x|TOz^~~sN1XgBpp=M6!_@0q9H>fC)NY`29puW{R2(3DkR~G|&kLQzKuim$A5zg5%L$ zn12@z(IbCH*0u6Pd!>p*vz>$QDetg6J6`ob$s{kvw$Ff! zR5&xud|n28^68~*NKQ$t>QboWR{Hx%A01Z3Gufb?I&UTlcIx+Z971kY4dc;SYU^%o z8M#F8R-*FE)iw&lnPtZsxtxhHD@}(x=?g&#@M@>DLuJIUl>3lu==?`huAIfFa6Ge{$~cJ@ zMg8Q7PWz+|a-dpJ8iVJH7c2wZB0#W3wNgD9#1&OuMQ{$wvyWmdb)B+Y=>jR0XNO(W z)O1_vfj8I@J<+{-11=T>TkX;0Bj$fys}QY@eJFGMa75+Rj&8=TLHP_nvey6N)6QW=nzYll^Ihr%*taHu$|+o@nw{FiDe%8b~%{6 z*wfJaCjengd&CZl@auw0CVmj9(B}-dkU_|;k*hWYFCvmc5rzw$tw=`dQ)UsovHYO5 zmhWnHyWO)+%ZEO)H;7RQDmEgrw*NL6Tv4hlh6Y;$MQ}2;>emWk4Wh>_)=4gsVp_M5lwwu6(8=F82a5hbb(}eH01=Q8!mu zVhT9ZgP}d0%0tR@Q6q`N6XLo{qdTsQ33q3gOlJ2@_~BR|0ZF&)5zLG!+p}GapKcVT zM-~RvcV_B~xSliu!zNTlp4HFxrLpN{EaRG2Wv|Z&NR4L`dm(N|=IBE-rh>F10@t*@ zqW;cMM3Xns=i<2Zum>w$UKyMco!*z8NQxUeQL;c&^1&iFLihxCThJYqYKlDomfY$u z&v@o^^no}Sri#~$P6*S8f`X&d3D+0A7hr-h)n2?!>Zp13>wd$vmR={j6usNm>&0YS zo-Yx%r4>YxgIkiG_yEZwHG1pfxZ)`T7)}^bl$M$(G}zAt`-SJ*gw7z2+GngU=T&1E zqV`K#3wsk|UO8ZO9nk5hltH7prl%=hL?rC1V=3(X#?Z?IHm+qxK)?o6ln2ctSTM!J zd)tac{sf`KUp6E^SjeHCu;`G>F%p1F_0LE&#EJPNAqA6OaWus z3)ofnyHZYXKI6F_T0`3gLZ%U&Q6Qh z;n;bmzBKbYqG+FE`2?&gsb#w-`;+v(!gLg>p)`_q!KUFPCoJm19CmOjf;IV_qHw@v z;eQf?HI(Do&z87AZQhFUv*?e{Y&kG_rWD~8rgH-ZW4jsT1}e%)Vaw~GmEzp5vuLbjR4NSIK1~W++u&P-PNumId3YF#4GE#=Jv_8N^OcR-g<^ zZk&GP5hlhUfk+)A4%Dc-V*AC}FQCMdU3{5sMUXt&U4@w%z+x&dUHfjd_bb956dM#` z)oq>gF4FE(<1mC;9@4p`bPZOi>L9D{9@Qd}-hYf}iEuXg;FdDYm3-0mcwXhfO;k)q z=cI@v+YP)GB@Ko{16krcS%R2d)4I%9acp`ItKZnboW!!OnHr{D^71Df$JjeM==83w zIm7gir8CAFulckIWCZ^JlMt=mL+lKmwdW!?{|PEb*;w@xsF%jAd&kdtd9*l()HVa7 zM||9h_wIw<&18~v>0eN3ARXeyprQ?b}}J1XbD$JzCz8 zi-Q2*0#>y6K|i5$uwL=vO~E1G6yK}WVQsp$Gq=_^b4kd7^%+@_|`6ZTBlEffvuH!fB{>5@KHPkARy zL(bG#)b@pun!_$u=Jj|<9VZ`$@h`|*UHU8B(5I={LBY(_7U4c_44uRS37HHPaYB}N zqo*8ck^>=E+OypyZr%kTr>jk)cJlFDOkwt_4qv&fna-YpicJ$V+ngLbT5eUHNqa|) zrr7==Ka8P}M^n?48DQ+R7}f1G4)Z=IFbCoVI|aH~ZF%a<4Y;Zu?>edbCi5r`u0JdCn9+^os!PWPopx5XjfMyS} zlJzB21L0B}+p&sG4z*sToCQ;_u8g>b)Q!(aOOxl%W%2jLfhw3YKF2ece2^VQs!@&3 z1*TE#NryLeG_Cf5*^pd=@Rd+?RFjo-%In9?DQp}44=#s>u+7M5I;Szy*dH{BELv0Ts0d@V*E z-<`aERXZjP6Q;9@60=ijLT07rcR=o zb_i)>g`1$i(PQSX9DY27SJ;}os2!lzei2Dzv!kem)PpfJysc*NSk>$M5Z8P2{CLu= z>PVm#MGPB3RS^qtfB8z(o3_8_qRT$dCTHY>VN^#Kls5e&(Jz&p7sD(|%_|Mp`Ow<3 zq88PMY{DUwkn|k%969TPC268b3)JZS5Kt1H;D%THt-FRR~j+B2~Aps^n9xajSH~Hp9qO zb#B;MRu)c^-U5tRuF~jID|ef=hI6AZ`-uOuot9czRJ>!ITSB&~#AGgD&R1SdFUi0Y zQ?;rBMo|EBc~@JWYNTyv?_&a`RB1a|=~z(nIfc(Ge91{n?}h61@XCs0IMG0KTxUF) zXkc9$=PapsG>#s|m#`(*$)}6vZ;Crs)1)15-O3Zim2td#kx1+a3W=ognp^Q0A z;!sn0_2x;vUtss0T^_Ogj`kl1NUvh0<+jEv73PAIP5y8jhp|q@Ow8bis_Gp|oAAEV zaT&fnU&&7(iODt&`TMgz8;)@w)omfqoM$8se8OEIXBH%JUkKzWhb)-qq`g&@6sy7& zqEL%}gP+7@F~I4^&Xk!zY?mAPk*@^OFonVgWRAI}?WlMnChEno01LXr`{;YjLPvzE{*M zI-Px%g@+|Ac&eggU@f-cecgBmg+#LmXVPaPBN{Z&?HdVBw@ziHK}g-}NQE#F0G?}y zcv8ilJ#86qS6%_uaGIH&a&s0ZHQi4$QAjd{CT&PO#RZT+NShW03+uv*lS!5(}mMvW#RiW4@o6+cn2_Qxx>BX`hK2F^>uEqBB_ z+?-7!j1|hu6B73q;P;txL1u`$)}wlJTiZVoUN1rU?Q$ z%PS&@&XkC-fUC^5nq3H>BVWQy^>q2DdM=}-`1M)X)1|&lS(#(s6ih6P*$6zd=rq_m zPv^bc_vgrO>CBn=W~^+|3n%JotiuM05TEnYnYT1v&(n0K9VZ56RELdW@HjkYoi+U6 zGOPYQ&oiK1`?h=(6*=9bzQGeE>E?*c(y0yw7&tSb=I>&<-acr# z3E+JEQV7YBx~t~Sv~I@32yh{W(Xfdq;;?4MrD-JB4l|G}yjxPz9UPu`qPD{!XH)g_ zkh8HJsTxNY4vt#r=#%V1VYy+7M&y83x2KBpnm>3VcU%x?(}tpmW89LpjlpCPX3Rh* zCGJ*MxW?9M80LQ8;0H~RCSd{)T5Fujp(_g`1U##o0n#iB?u;g%wNI#rOv5mY>gnD1 z7yPvAioC{ϓ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

ZmM-XP1MBEcZ>xAgVcP#Ve~0lN1X;%QbuNJ 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

p4&z$ze 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

N3|nN@mBDv+k_QoVSDTTkJue^dcl#qkhF_zpXj9 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

f`kgT0EX7RAUv3a|G6sbXH@?@@o0ht!=SohDt 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 z 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

+@*x2I@yd;MVe1AlLLBQ?QT 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 z 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 z zie>4%z0*d8l0uYmub}!ebVD^fb=k~z;G(1K1D(htKRx8dr|`#_)Vk55n(xsaV8*T* zx~FtV=a{@trtYRvQx$}UeEbGRFR5ewhr{Tl=chkBub`GD+I7OYt~UaqHG3kwndlZ7 z!lzs~=~Z+|2xHpgf=-$^GzrwrNNc>q&{mGN_Ou8dj*fQ2F5QkH*Cta(xLKX&$WmWK zVtGd1olPl+zHh-QGd(kGM^0Y*bTW>7_iZ!HS%wg{teWOKG&!YO7a!Fg3d%J6i9jCY zruvyroSQ0zisV*FX44j?dswvbbD80J{v%-STO^G_x!Jw zj_~B4K1CIUUNw%9fw>j~?&t47-=Md2soQTv=_ph#eZ? NT^#7Fm-nv5!W)gjoZt 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୅?_ z*goS{Wm+M&tu%$!$LH9PiC;O=UoQ?I%wn8^<0SLZ0@8W&yQHN!(con<7-l9(LW#8c z=q#^RpYl1_I0u~jkEx-A9H)7hRZ%lYS{>Oipsch5d&OZU2Kxe4v!#Xg95q9U8MF2w zJO3so3pJdz<%2Mh^F)iB2lX_bL<*t1VP4G+tz)3m#cBot{QDia8e5F)c~VB;u}UQ5A5jarSk+dE8P)x05KU(6ZGn;^k?Y zkaM@!A%>4u*&E`-u2snS6Wi;6+u{HliH%2QR>Z-Lwbw@{IV-+>(=_KXHcy%$f=S#Z zTMJpy4EdrQTAghz#gcNzysKVhh~wN9EVc1ql|M_FXR;iXZ06MhSmqi=h{hmoTU@z8 zc2}mop0YrX%bnF5h>?&>G7Ksrqn%$|0Blz8ys8OG1Mg+NF4s>Ri3wTs5^M25*wTj}h!t%&D=`!=ihHbrz%hj=_rV+E4sv&74=C*@X1uZykH$%xMf}obiqV2?9QR zQnFUJ2=s4R_zBw|0Tr?-e>6iL<0fMHOda(tU9fyQxkvaN8H>1qxr%|)$CLVHr9nnP z%k#3U?!tEo%1=@C(+M6HQX(8A!unhpq00-I(oW=_Jv?3?=d^6hfUGhI1O9R<-cYEy z({PZPM`1k=v8$k-%wE>%yV?5XMKr)&r3Lu%{5cJlRx{GJ?)aJdtU)|ycjrPhGf;4Z zmK=_)2q%~dbPFfe@|}7?%WO)tubp(j>2|UY5j2!88nUa5=a+liRaB-KN+sU1Hehp& z99Wl$XB8Um_(TRXRRdBWRhMwL55}0z85xM=Pi;$4$m`(n-c}nM=M^2GCfvPc<(8A(0lJM3loiiiuZf9Qukl4kMD~evt8SC@69N>7 z4N!*hYU)rttrh(+b4Lrv_{sxZuZ`V8!(~DGu8t3J_@^no?IxUZ^(jK0dH9EjEDRmR zD`e=^y+q#{;4&F-cxiCI-C2I|(O0?D4r}zad9fu%NT$-Omt3BbyN0{ zi-VfS7VLSq^DRFnI{1nyI(q*_!q5Oth7GY^pn$xyY;_9l50AjB(h$b(fX?(z|EP$l zXEplPy3U2n}xhCg`)W;(EdfYBzUxesMvMEuTL4QLt5ei2l6lK25K z)g%;|ckRgYzTBNYo@95+2dh-jGk5a)ix$~9UR&+X z%|CJ%z90PI-T^^laCQ*s>WPk$BYRPW3#xsR90CD z^$GAn+1DRWbaPwd=FmE+^+Dk3;sLYS%KS3_#WA_?NNPm!+e)nFDecq7F*VjENz)kS z$Bl@3ywwyDjN5t^j8XAi6jDZFDw6|2~(FF%aY?s8}yOEJ9%^#QT>(!bnBFyLnvaTT1P48w7{D7QB{C}F)C37}EBvU6LtdcD=p zypvwRhNl#jnSvjF6fB5j$$#9SEG6PgFC9lIy}RdSPlGYSigKdNY&*jmy4WCnQrpp< zYWr6UcKP&zj0oZyY=Y7=Eriu!m*~%DhDVx|U@CSR{sQCtkg#$mE5XZj;OraPlhr0E z!_!0smF`5*KZOoWs*@dDV|7%*6~&YS=)^1sKJ)+7CD+H)&=v>D4l$tVBZ}k+k>?~* zl6#4fpJB1No*LSVjUZP5dKmr=2is`JFtUm{_()IZ0#Jy#|G9Ci^@Pm8;Cv*-a{2+m zv72_BX?
T<<`aNR5pUaBFCQ;L?37j0zLk%7`eyQKVj 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%0D>BVAmJI2)_(-M2eiGpR*4?gw9T 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

=c&~A1`s+3u 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�?+F-B|<+;TZlXaVve)p}rlc@uIy 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 z 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

    %bNlnZ?KS?lUkMp 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

    sEfh$?G0FW$*Y^T;6iGyGxV%dRQ-WD0{*eoF- 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

    w^Nji^)3dLj>v_EI4f0DnC|l> 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 It1tM)eTdeoUjgcsbd` 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󎲣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

    XExh=5vbvaj2S5H=>x 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

    C;%H0WS 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,Bxw>{03Z#Csv@e{c5)x>(%+Ez-d5am`j zf(@}O z8TbHldo(qo{0^if%kuwshHmA-OgfhnB zHUcfLVsOIiMIbJd=h{=0z^N*%x;U;uf6kkae$&tX>{s~w>_$US;$DPwQ@GwNTyOrJKlH~yK0jTERCh3Z{1$BU zaT@^#hi8v+C-4qJtP{6P<$P4eK%FGfXtToRS48A!A;sRDRv%+Z>^1^vDdKU*zAxYc zl9D#6aPTcA#If5XtP_nP|GjTcZFpLoAtob%8SUFHm|(%ZuY z<5Z2d+N2+U`KU8@8DY}Nrri}rNlxRugmgraN;n>h3$&n^>?ZRaa4uTt!!@$1pu}6p zV@Ysbm3!zja61frVa+guup`xAK#r_{l-tTXtwu&&KqQyLlIu=>X0F|1M)ry|pMtP3 zC^wYkk}xdCl*Yhy*3k#bIOK+~%pZWZ+{nfvU zxL)=PcxexZXy8?3Z@RO3mNH!0M!AdFBNnSSo~3@LeG8%bNnPBt6UwH?S}(23(Cv@K^#dD=k@r#l_= zaippF1Atf&k^F;AWa^59N4OzV1cF=vfOZZ6@HoS+c)WQx3^kMpV;EEW3@7phd2Pbe zaNa4!vH7hX%CsdhK~%(v{O+Of=LUrueV0!mN{%WEJNMfAJ>%5`yR;db2?;%8|9}iU zEBi<-+mL*kO*~6vAqra}bC=Ti2G_NFf_RkXni}~qHz}(dCshRHblkWl(gcK|e^sak z$rARIdz^cmFE5_Fhdvd6g&AzGhh$t1YZY3DS^iQThXi_>VM z%yeUIPy}=Ai4S4Zg%A0Z_Q*L|MHZ%jndwMBP>y8!?PjU^?CHM53{+TZ&s#>v#VI0X z0qm7qfHrd=CEW(KXFeQTo_->t(`PX*$DUWS(F_3!G0h*VyV*xz8~786l~tQQHAE#U z(XigZ0M#1Q-#JWsxBwF0@}Eu`z#$2a?KL80S=q_LSG!;kUX91R(BXvZLnWyBPan@q z4iX_Ho{yoS8M?)g6E)r|@Z-NWvP5xmHzJt|lk*u=vCPq!d7!k`p$(E@H)BT0l;@qi z9vzQGGQ;XmDZ9<6jsip{sz#RC);d#P5P-FqK*B)*^xRt0<1EyqKLer^8)#7_!aAgH zxHY0H(z=h#C54kHX<2pg#iX$ghmn20xDSVYttGtx`ia2h@tIDR=WX&>I@hs3QALB9CI)7U)5VRkbW&R#R_54G{M8VB751xD2kO}80 zP?vhyY*Ldw1yqgN5s1nkjXv`+L9@u^R_acaPuM^dDiuO&iy$Fn z{vUz}S;!rCL1K8$;%qKTx{`Dm(8{(1%}io;nP;&lx-(V{fKeQ5XX&5n50R=EpIgJ5$tEwxO2)I?4}KeL{^_%8DQIi^6J9*CLVEF?JfN zfISbLJ}$FMW7v2~jr?IOR9Xd@hW_1ehY(GP6d)pZ@#GT<94xFs}*&zbG zik2BDTx}iboU8;U1dFz$4qDcH;8qkiKOqF<1OX+VDvBU!*s@Di&u5>*u{6jqAg%E` zfSFw6A#lMP$job1^VD}AY6n+t9xEF@uWEE?dwZwl6j6G8)>_RoF!_7jafY?TWbhDGmU?n-VEyTn}cO8)srDga=zw}~wY zx^C3Z-q@*{M1%uQTw2`9^&bxUYMjfgq1Ce09tUYHZ$OsdoY&m_g zZL+oQ`4gFeB_{ZxG&nF;6EMkf;FXFPic$nJxNbx3B@?iX{V48N!dUKcZMGdQHh1z( z(&kixgUcl0!~Fn=buQyh$Dm|y39zK;W7O8mw5Qu0XBWt=l}kdgUDiBwYFAe2c*QA{ zq;Mtm?~{}pM~na#t7X+#Z70kPiV8*rCwHWbCU@?VAnA!0VRfKSxr)L_>7_(&OOAoX zcMXBVLTwMEhjY>5XtvsNa}sJe)RR?UUHoV)z?R;<-uuy?`Pr}i#E*Uav!CHtzDB*; zn=YRqUHhF&Z@={Z!upqg?XMOyUq)ZVbsu!eLYWB=44&-g&6%oXKWY7|0K=WHKk4#}UHd z=z3&@0$xG6o9hz#6@}0~hv>vBo4ukFi{r@CeY1CHpu-T89qiKcNn&>O(u8H^8Uess zX^bzVWIUmCB*Z2=&i!TGn@Di2a87nhzAiJp?v=y+l=b%9@ zSN2O~_sO&9@F^(=J;$__(ipO!km~)iq#5Bj2g&Mie=a76=^jdmLNgXe>wYD z9uS&HEnhp2Xvv(X%Q`k)Twn|%fqiC?2A$e40nqqgC55bZzXy{F@+fQUQcTFO?G0J* zMopB7HTt-eZGc1gp@yuw5sviUP*F{R=Bb}LsNs4?;U zyo|a@=SgFi1p-WhvGll~XSIqoLOWHDii?ChMMA1-U#PRy7~>WjL+YSSDl$AEw@Lbq znhLqOMGjElkR|)zZD-Xo`Z5VeCL27Y3hmTKVtZdHixC07)E21}tcksQ-je_4|3{UjqsfK(e8Ce6=SMp`w$@msKW`uNgVglkR({) z%fPX|aCiMlct zFptlu8$0O`d%$!Xn8>!uMJ~=wi0Qd}@C6qZFl;;^V?^3}6 zsb@RfIcT^iHDRd5vHbaLb%hU9jI!>uiwr|ZpsnCe8q7K_qz>+skH8&WWyd>@9GoQ` z$0@fbBLqk*JzRB>WC)Wugq1i_huyoid=t(0YUTBe;A=%ijOlVnPPgCJZ$j`10m2+| zv}-eNiMUo0^ss;fA6#j@AktH*I)R|Q6Hn9#k6@$Ji_W2x^_Ac*h}?@c%$-$r78!#^ zDqWL%#DLd%JT%1alU>Ha{mF76mE|s8pv@@LssSLHb7Rr!`iYJH`3T2^5Szh%Gclh?B_oA(RX#%PwR6nUZgWRFy(wn14h*!B#29s zN1|(gFqt?!ppl|W6WNimr$R2wkb6uphX-@9V^*(wwpDST_5Se}CB6hO!Nj!<~|}$>#gwqb1I&Utl(i!+s*rIl>)NKw-GCPJ(=j zv4nZ^LrQd%fsN^doETAp&Bz|Ij_Zx<>Xv0pxp{n$Q&9?tRF|F+>M zUX|FmA}w?hY|zO2Sn1g2k;Cf;u4AEvguvJQQ(7Jz_A7V4^2zvqAEqf`+pP zsu+rADl1OUbiZCh&g^6lLMyW02rZyb@OuFsEU4*-zrvMdNo~}*RK*WBXtipJy++m#=@F7;Liq4Rvu?V)BR8K>KzBi8T zU>gRx1FErvHXPubEGf?lk_=QilqHfU{RWZdiSg(WD|_(=AK{10ICE1Pz(VoD>Aqob zuCrPY1wP4Tmx=9u)p!6?|$kZ|D|92sh@o3 z(&Ad~|MvlZf8?8|^>+Qi@A;#m@I()>^--(StbnE~4{(vD7A;%nYJaSU;XTR($%Se^ zv5v8ypvH>VLrj}QWq4;qKn|iH^GF|-vJGWg{Z=l~48iSTdjr*_0|oKtHLqBU&2}e3 zbDB`XHC%EHw5RR~>BGaq$R3tUiaiA|oU2hv=I6ieu=kx)aNM9Maufi*(=7ANa#RfRB9o%{$M$ z`TF#cgoSiPHRm2UQVG) z<1G{9ccWb1C1#P^m7?ixR;lS5XaC*gW=q2sv3nsy_O`1O$5`qN2YCB5-h>k4$V6oqJdWIXT>1OJ8?{}+_Nm?OqsiOKzt3GN)T)Aj>Opf?O6i_& zJ)0PCVKQe$(HfJeBWFd-DE#nNTY#CVJo?gMr!lTJ3kD+YG$!5M0|LG7q~FLW6qrpZ zC(G>y);J<0*a(JR`8lN-<(Jfho7o{-x|OT~ zT=pzKH3O_ANjG~`G0>61V53#b%#2hx)5z_NCkJ=5S_&qyx+l;h&^E?~DmbvR$f_|x zPaH^LEi^CRnlR8;*T$U{uQkPz(~zbt4j5s^u`~lz8PzUI5`;8U`o}xMfQ@?!#+1K7 zEtmQ2TxpIInFdloPjSQ+7?H)ErPfS5nYtyyNjgn^5ZUq?3W~!B%p*@IMrE4PG1&E4 zgI2i9_~YJUTGjVhUF_0d}1#7Gdvv>`etSR~shDcMlx!0#v`dfNN#+ZTcV>_78M z^fN!hr>DI|-65vr0-hG{58gg~>N9`tkN*I+o-VxZ`{H%9R==hmj00zv@@ihN^q_}s zp*{)C?QfnG!U@|Dd@5eEptg(ZEdYBNNFsTh4>pfzKarY3cy0e%oElh9W+_9Aob=@x zy(QHt{VmS3(}|T@43RROvk@hALz|kJu91>O^y(!8FT$pnWu;e&Na8 zJOvm4H@Ecen|FZwhySy`&QE>g{k6BR7uJi`>-6tEzbvljCw%ag@BFR57NGXM)><^C zY9&EmC*XOeg}XIR9#-5_Qjwm&#ow$rU*J#+wpSw@2fou3<)2488nTvqb7FFUvoZ<1f*C6q z=tw~{Eke(NH(KVeq=!Yo5Z%y|-1I4r-i^)q>|sH+3L`>OjGA-5RnfcRmOgA&Y~arI zZd!-QPrNFBT!t>%XXy*mkhrGuzbYS9cUa*kJ;I|n7fuhn{3)P z(HiOGf3atsVI^xT(bSAh8B#btir~uwmmFo~WbmBT^VXubgP{^bxC2CS&yn<|Zqnp% z4t@QX0tp&s{6rP0miBIg5{g|h8KCLH2tS-tw3E?C3AME{eFP5UIUVfJScpm&NU>j7 z;7#&=o|5s%sxAvlZgu&PG*ld3B{A%K1xd-(0c-({baoY$yBy`*{#-3Bus58#?V&OV zgZVNjw|3W#gE|t)-klP{R`D;jp#*8aGo2w=#Zf0cbd78m9kZXN4Mo9n_mccEWm1s) zBRO^+gi%FC!7u6E5w=~v1MkDBp@Z8v=byv#gfzgG#c-t`7Qy$-6s4j###<5eaEO^j zW8nz|QArQ`Yv`#xXs`9b%T3|Cf7@@y>)Y3th1~Ih1#Ditu2&In^|5dM z+)w_!zq`e!>mBV^@U;YeY_Z`BImCEmK;jy?-)kd95Q`{1E=&8tu+LZ(L#`%o%|w(; z72R!C^J-BvjXjf*c_+X>fzYnC{oiRQ4&WTeM@`&H`FgPm|1Wh30z(`Jg~1tL-6MW1}1gdjRV zy#^$<8!KQURWWt*P*8%W-oIAs^_j4$iiV(kV}eu`qNLZhH}bNr+fXvVQkH7U=ppz{ z(=rFKYhWBpA2$GP-wJQ64EyU4-ioIHe769KKLk25MkHRh*0uiOkACULe)zxorcZw3 z{d#lb0>DfA6%@Ij!S`Q20N(!>zx`M4jSp@$=1R!nAMaegwD8S_xRy0Q%6x66&LFCk z5(XKi%l}*rH~vv~fqS8P#MX z`|Kx=$=L)p{;lZ$wy-vN9cRt>A7{%fw$BEl>f^?uM-i7#_XKX%Un|%B7{!a=_STJR zl$hoe=Ota!rgl9EoYblGt=~BmmZX+B$@);x_V2mY$gCa#UXgc`Yxn)VTrR77C9uiu zh>xb5R)rR{mvzkW(>U*HEb;G`?JjJO(m>@JyL=tQoa@DdG_-pIvVS~Y?2oVAH%@0en^ufTiaDK7 zsn~HS8*k?d&&@wXoudli!|8^ofryW~Mr5_3y*_!*ycYrY51*LY>NIEG@(DvR1KhZm zD;X8Gey9#6Tgv1#$3_p+3iGD^|w8h#@ab)*TOo@XtbL0R5 zyKcRUJS^EaNUgkhP7@Ik`HqMmR&66rW|mux@;UjEjnN&{(nkV(azAKHqAX=ytPu`L zH7P=Jr$F3^iAaoU^g@lz&guneAB<*gqyH?7Pq=~K;d~Xl6Fih$49uH$oJ-d>Cb}ox zy2IDYuNU;u=jXlfFaPtu688u1zyJQ?x>u%Slh}J-`-bl8;~(M6`~T_R`mZlhH{|J! zj1L%Rj;59XA15i?H0qks&#iQ!J{l(D5932-+hlEW-{B5z8lsfbrqS|6At7S6#6F)b zE4N*x(_U50x5=raN{GWoe7?Ni?&m5;0X(H5S%&w)5xb@E;6~oqFJ0CgFSi(_7EG|% zW3GP2jb7KuB-4VRop6|>62}?*U=jM@tP2MZnZwq$FvV+$^bMnFSB$NAgZ^C(&TA1n zrIN08MPfATbY6pTLEALohsQU zrj-cZ{!`G#&e(vRjI_X!cQ+sn>zP2#QnVbqjNF&>L#kb{5|XmgI?fTTXJ^FrXf>zo z2NoBGVCyVT`EgFpZ%F&z(0~3ze;==}&!2wtDlG6-o-46#u9ufv&re_e$uB&8{G0yq zf8-nY!kg<-Li}P^+dgCOrjAj>G~)ETx!DosFd$mMQ!}|fr@C+J9RDn=vJ)#N*f0A6 zO00T`{6oeW4DO9;6{dDN#F_EB{z(ly4T!VAF#)r7lFVayO0Ccmq3h^jdaFZdRcE6x z=d`kEne&k^A(%5;K8V?bOQQ=kP4YW#@r)2rYR6IJ{Ps<9TScHoF7~4lQO*f%>_$CH z??AhjyRIHA6}f`vTz7IKC(9@F1vW!Q!=?dYao0z8AH`$A%#&(b^+ii+3FO|X?%K(P z^#IH%KN%+XiPnI$)vF9m-&Xsq;^|$41_rO*W0Jl#)g_K(ncHb*c6_5&tX&gWP$D0d zB};CCrQAfJfRI~e)UI-+6HsJ^!6ECI6Sf{-5IVWBc}ZKz?mWGtCyaYSYv=s?L}It? z?VX{>%;F1hv$e@)q>-NgHoQgzW{L5d$V1Rq#G_PyqM>ESkohxl=d zy935>f|XF{9W1*&vB{w`XNt0h;)whv*anek2L}W0P-Uvk?$&s$xKtNRaEUr#IyzU3 zhfw5=1ay8guwB;f7)ng&4uvT#cUTRFG>&X&@!A9yw!7{+Az8%Uu6`)%+zTa=wd`?a znLjjPVT>%caj5T6cTk1E+$vzPdqZYs z$7y%X?HlJCG6x5-{#4^NyeZOy^{Tx)L3a)+_@2!GQz5@Mt#GaVgd6(UM?e1Y|K2bB z;*bB>^Sdjef(YEw64t%(=6UIQ{+>ViXE$#<<2I&1H)@|n{!}u(90v6+s7-e5+6lrz z8*<|^E&NDqsn!#$Pc~}C9D>UM(i$h_?7KZMCN4wdrw6_aFnRj+u$xFd@;tmd7PPDNk=1AnejZ@!XzM(h#C~u_=%Co#-f}H@`z4M2kW`I(D#%*`d zD4jDUO`%edQpr$4oJaR#&iR=vo|0+|o~t@|K^sJcrwV?4 zyz*_!xT#L$cDo(l!%AegR1wCFth%8;2Zr{{x$C=(yINs64Fk%GjkOqvG#RZE0wt-- zjuuhaC|;LOkgy&yYE{t>69EwR8?Bu}>l#6yaTj^G)MHC}kuiA+%O-uF3^$&hp4R5S z`-i?4&mYn2qQECTEsxZ=p1|kl>w12E`SO>)?U((E3m5eI#H)t3OK3)3KODKivJpNz zX&ExUB?4L}6y#kqf_Wzoop;P+%@c0V-Q;Uh z)!r#(u7Dk9E6uD$!rD~h_@1k;4^`5nD#Q@XG)*jqZ^ugWq?`FiaNd} z9MYg&)-t!jXbw0D@`De;6C>nLi%zTa-66*@vBP0AWp+YK2?=nLDi$Bs z{VGWJ>kaZ>{#SkrzWfF5C#}3KaV^~V-(aL=hfHyLoDBvc0R6!x3 zEjbdWV|^7aGl7WX?*uwfOw&C!eGTD^m3FOKWdeQ8YqeN;hyrEJqk$fWr<2J|0kkMRZm)DorCn0GqNw@Y3b?+~K{3QLw)1K4Lrnj1*vo2 zwtwP5n<2^GycTxu$R65a;@m!(vRq)UZi>PS3%pD1@asFp805a=gua$_;`IjeiJ6fL z%d2%>y%Evox_nX_XoGD6$9zuZln4Ui?jQly)thcMc1Y9m*NmtU7_ zqZ&(12o*NBtD-EG%)uvKsbBOp5VuGY6O`&hPhKk^vkqt2azsiL1VJY>CDlAYgu=;= zNW#8cjJPp?R1&XpbJDt2qpssjesP5*44}b=F{GI3j>(=pijHMIF>$IL0usg_32HZe zj=9ypFwE9$Rm0+t8DWkVb777W!-kuy75ls_=(a6ibM-zS^(K*3}&258oZOK z3NzNGe5C7HHO7yzCqM>BwQ=8`8T0b~#{Q1q@T>5_7lgfDv~iP0U^kNO=dI^Ye(G=k z^&f=x)0-!)#r33hrE}MyV(O2;sbOrSymhQ(`Lc#43yA0<@`lF04o-zJL|bV%jnhlq z*f+}a{TuG?W!3^=ec)W$fgIi1*~Dn#LD=5(QY5cdR9H;~M1vnJ!zhi(J4ZD{)}wG& z97H3qgqw$vM9y1@`Pug90e%J}bNf+@Co6X zKpP;9O0ap3hOjiX<^9|?FQ2b9#DE=+l9g*jazXil=$^3d!0AtJ0MLQ1{=@W0`_yvo zAn3;>!fiknFkpJql%jxA-}k}$JV9xP(7~PF@E#MG3=8NlW#9MYGCHbkFNVnL4fNzc zBWBsV+GI0SYL}`F7?+4tmO(S(inp%pngm7`Y6~My6<17>S}|NRg8mS7?dVcURUPPfg&=R) zEskZKyn_i!A&m+(MB|;r!tUl{Gmfi=-Xp^~>x4NyVb@=cR047eT&c{DU`aDL&PbRj zUqlDT8pR*%(M4jaNjdrz^qdv@T1&~X+TeiK=HWVTI}58_VVy)>Mo^8IsO?8zC0dh{ z4y(!gYAQCIJQsp8i*HhL>jpqmCLn1QLq@P3Hoez(Z~u?h8^iV6GT{yJMyOERY|dR` z@pmpU_XSNZC*M|5F2Lz{aj>G&k381Ci+nw0Nf7H=9KCTOrUfh z`PmpO66?icBV0=dnbAn-ZlWtHm6CzjbzPhI8syG>BVL|zS@LOJTf}-^SikjO_;##M ze*J52U#^>g_N`1{-pSWJB*Bg4F?sUf_@M_Y+MzwI?!VBZh z=)Li^;|-rfOKilRI~#f8rO=jJJ;YE31tDw~i$wYaEZJxmNHm1Ur_?wiTVsf!=jHf` z)nTf&?(Cb{te;}8h;q(m9p6_H`^r=mlr;RG$>F-6LgzK0iD85$G)Px$^Un2C*FKjQ zmEsoN0f4K)aeFL!Oo9z0?hwm)cK=rh)>@HlG+x?q3rdjiPDvFiyW}Tv(o}H0v^8`} z(%MZ%8rS&n|07j`xlOl4=^F8*oZC2Mp3oKUkOF^~O(}hE%<&s<=fz4qwS`ie=rkVo z#?X@VRW@2yYCbg!(_;>*%QFki6CMQ5IR8oS30H3$rz>4z{ep=)gzw}kS^Vwhgi~cb{PfspEKEy70 zW(Qbug1eRxGUK&M_L994aqju+p`Cv* zp|hTCGt0w4!Iu2||0ioSZAk%GoHh6ByV~M=zZcxQVQOMdw{oY3dm?kN>Hbz%@kUkV}Z$G#VEh>)gaN`W-lWEt1{n?0-Yxge}8))xza=^x}OX zu8k*gDOJ@y9B=_1@W<)`SxN?oN>c#%Sg2h@+5Q@=F*XlqdwW~Oe7k8)wB?*Y#cUYj!h-b*(1e0S+Wnh7v5~@B5kdYih82KLVu`h|ytxm|~ zOye4I;qM?K#54$&5=;n+o*Wle>U196!T!ANXUuln()3K{+#x#8>4-!++o@ zi^c!&{X{bmG8q-2WeU|>RYgqS1LraOrP;AoeiDV-*_G$WQV(4iSpgwX$N!@#qS0VO z(gN4hy2bb2y!Y8q2Z)pe%tFux)mJGcaedIdmRY3)QNGM@@MECj>3nSWe_+UBw>EgB=<{E&MiXZQwS zRB4o|{bJ6ncbhaCiNAi<%&=rDb{BP~hE@Kr1hmnPPpRYCR?ucDjnk2=0sgX*nzGVG zkK{B2Hbh;JE_XVuMd=Uz@$VPzk6hRNy325^l=4ln)2BvpQb+fLJ0h|-`t zC~Id_|FSG9a4DdeH+hy)rnGXf>(K*xN(U0V=}R4=;2dS=j**b6(ybGit8A8Y)V_-# zlONUS0UvY9|7yo5$`**q`F@E!rw)D)7GSC%hWE1G*h_TAPi4;U6n7>zF|GW?$i6hY z_p9VYE&XXC-QJUCbi4c#y-v}dH;tQfT)HP6Q9GZI({)wFv;1owHxo@cJl`h$%%8I%r z$w-@hH1s^84Z6Y}Wl~M9x0f}uaPT?B(&NO8%l6xSmXmYEUczsWeA|ec(j~7@to`5w zuy{nRwEwD&T>fXBlp$M-YzczeRuwd^nBv8m^x+Vw z6P=+}ki|6`0r3l`~&nvbmjGW=f2)YzkIH6s5W$+waC!VGz7z~3wsch$f-2r%dp8^i$g+`KgKr9 zG1Zs?oqaq;)=B_1mYRDwdFD)IcP}%7S4rCMK0O2b`~Uo3(kH(4E$`IP}{+eG2Jl!uZmogc}L@a7>7Mx(m*k_--cm-deQt*V4*fbjh*fGk(xW%m^X@FKm z;S!ekJcOPc?=g_lP%ib}fkqs5>+}Ehn2giS;L%vXZImiu_DpSAqjv#4si!ceI_Y&n z7W)Z#{7EGe=)<#4Hu&LpboSZN;PI6*YNJV5f{zFV%jV!(&P2QN&Ye7{I52TGxiU2q z`PH2Iq;dhq$preS4UOst4F$>c;ka;?nlTS2xnWrwvr#k?DL4f@b_?cu*gjF}1a7ZG zA|X$&R)$u!Il-FI$^uMbgHu&cB+sCUa;Tt~G8~2B(AAN;A{)2lE}>1!M@kULQ!>ZY zL=t=DoL;PQ1R&$YXs8c-$eW*N&he?@VZWqf#*@U@)H#NZ^?>AKa)Rd(%h@zydn}Gt z74vHBUT@~*cC=oJ!^PF*Kdk4GvpY-x_KIGHo^6XfFYHa;x(L3z+WnrW~V+OW5F*W%Q*a zxPtS6epprTf-{w&hUZKm5L;zi8j&U`%H4qWu(*msXFSSYF*i}1wA(&Y@-d+WWzi0S zc`%aj+-rsf#s4xbl+m2?4N&hzNAKJ7nr$MNZTQS}+1T#+l(3k!@>gqIfX$%m=3O-} zcvn3q_17GF@TGza$^e@5Jb=3Y83-lP`SO5q=kFpXr5yGWpz69tKEIf0YZ z)P!v*qig*^eU%}r{&RE4#QjK#9+s9HA@(`PofRvIGv!?&j?;HDVCX?O4*j%2*{w$k zY>W^s+vbu7yTeXnn}c82m5FMvySAn@NXrV7gYfZ9rYoT_4jI;upwqbh=v66x?tl4Te#5u^-2HOfq@;9ROZ#=LxA%GDrXL9@+?r%LTbkFEeecF59-KHTJ{-27BenlalC82!jAmN8@ze zscJDqX+fPy@lZ6d#;a_O>36~%8NWAm6>@A34pT81Cnv#;z_gcWGF-Guv5K0-(7Z6S zrisnvs6IHR}qs|@wnI2o6i@-q5L$_q;O%4 z%~cPwn<>!+K(r~2S_CW~Hk1TpmIybnb8aNBlqHy8MRsYHx+Ma0%F%FHHK61zjV7An zHHuX&l7=I#(zI0$%M8Tj@vZ=n%A~Rs`HY>bO#{Q&X`^dvX*Ym!@BPl9jEJ`0-mo4! zPt!?^42FIq^mxtbis0wx+Ww+l6wElZ+=Aj@93fSEJ9-n^IY|Z?T_2Px@0vbzEm0C{ zjOY`R)y0~h%M|851bQxTb8~Pzkd~|F>f6!;A2d#Iv^n;44Os$+2!avvA__)!%6%X9 zWS@Yj$0X-Uk+9qn!7A%QHBN}+>VSdn8UG_|LI^!Tq)i}h_N?K7^>p^}yX zV1c-^u%Q4QGpc5t%7oZB_I44yd90=V1eM?#K~H(f)q|So?l*|@N8K5I6n400{PqId zJ(X+(l5TM2)W?Pe>M)-2ukj3u;6;izW_BF7@BOs)x>FzfP2c%zv0mPO=}U}1V`3o| zUhn(kpZV1O*`NC1zw-}Pub9x@TX*rppX&E+j{yX5b$&*TGc|WS1hi6`$D33eWz7Gp z!MG55+Dbai0&GvF-+a0gy%Kwbo7ns6SWXFSMbTN^k%ka93SK;fYr<>E4@;`Ikg84v z+7GE}Woa#(pj0y-OYWZ6&Os)BKhot1_=b~2iG;KSTLReh-K1X3WTg%w%l$6dA%a)T zwu`qG&Z~$J_KuXO0ZXOgnV^s!%DNc(VT`-GfUl{L5ooeY*HU&rs$a0(0ZCv@BPh|~ z7s%YfLP@}7C{_qeh#ZQ!%TH+5sqI-C(K0GIZA|DsY@Y0r!TIW86WrRka{5e3Hq8Ni z4ylz|&eCZmIGaVX)XX>+m}TgvdKj!np;gLK{i5KbHc1RPVsUfxqW1lS{r~$1{}Av0 z>_s!Fm%j7Y0qc2NYf>(wR7WxxXf?u2WSYj%k;4js z2vpe(0Gt8m1@JhSL#O~mL3W`B)51W&xA}15?C~wucVo6eje?7?ZeVmQjxy2qu#IKU0YM1pXMZ#Yp5XGu!nhu{qUMu4JDZ%l;cYrnf>Fa6nW=t zzMrAcwYbz>mI$qIz@&UZEOSVxB^qf>KMWq9S@0aJ9#oh;gvH<VOSWmV75#PAy`~{Z!rT5>zxgY81`ehZ>g*F!XRHuZlJKFy5n+0rQ~q2JG8&K zhcPB06O+Ckd+7Y6iGzK7P57*Sp`-ll9P0Fr1PFE`V{^JXKgN7^zq~FV%9LL`%@sfi zQuojh*&i*vJDIZ2{KYvD!i(r=$P5SxnO45xy3rQrk`Xb@W${b)w*y_dihcxp`>(Hm z`S09__#l(D-d4;isceAS>geI>o3TfQyhB;mJWXV>$Cy8>vm!0*R)nUR#Ea5EratSu zUcT5vzBs~-W}{v1jNUXaS98{m)Glse-_9os*~m0Kuu}jOsc=`_jPPP#&+zp<2LUo0 z%|)9%Lrn?ChY31unQ|xy-|Vq)U!Mp|`RM{^N@_=B37Ev~Gd`=(tn}S9tw!wxMLdp; zEA+u0Ji#y9=dZ&Ca$FB%sJ^egyr}tbN$CSWZIY3e0D|CU?5LBn9mMsXaji&(+8a)6 z+s$+duee0Kd3t^ozv-jzedL>d!Pmd?KAtYoydx;=oc#HE!t*=d`{(}h*1jR(W+-!k zz=OaT#q_j|H7BZGbrIZR962 zLsb|)XM6T3U&?-#XpX2I!zsW;*IRNimaD!^>Jn-QPOQln>e%8NSJ zK158ty{bibo`(w1O_1Vj-eT{Rt;=wj9kJ}IMwS)5q1-6OGzu7_UpS_r?Fgh>iTxC5 zwODNL)e&364|n8^ozhRMo}s;nQ`+|lTpFpak4 zhoHACkD;zOwI0&sKsX#MC>v}kIXA$prLD)V@pwb%Sa#o2w%oENa;1-;yn=2$ZmQJu z8ERb3`t~Nl#wWtN*#Nfp&P~P1Xng_fpnpXeokAwgvX|u0wJJPD5fmGnPY-w80mc;~ zo9EjZ`LjJr*o`g^1(`hy-aiV%$=<X`B`Wj z$O*h?hG7ObgQ|ne-M3iN7I?xtCoZvTqNfBbwARHWE|rQhlrf({$FH2?XH08V7R@i{J^GL{X)zS%bM>4A?IixSTaenL?noP2#9BIy zjfmv4tIufYN~1nkj{N7QK&W`mqOGfPzK&70>pZ~_bJzp*Ok(hc~=A1_3mZSu~zJ9~j=uqdfHytA5@+(_9X^Vt(AMIeJlMMPL?oO2pkVp_xq zjGbEtGxOTqwCEdJxO_(xpobLGgoNS?+z5N|$ ziTWs2wY_LLf){&R$G;{iMOaitj9GC8ZG8X8>W!Oqnux6mkuN=QY%hi0$wh)NyE;K0 zRuO9HNizai6@KH6Fx#?5S}cubI}xO|&P;}xXydJ_cHV!pq8=HUT+5feOUU3oCP7ry zQd7TGCkC%YO~;evErdTbpdr8W+t1 zKKT6K|L_0WUnfCtUl!N>s@Mh|YJqv_W%kM5jA=Pj1bO-v9VRwqP+L8n{o5GB}#JN68 zw=}WRfa^HdA5~F&+sKitw{!Y$lJzJbnWwq1z|3z^YN=>J0BMl?umdn#G8L}8+0uh} zX2T#c_r=A1T0+aR0wm){A}I@4Ci1{v|S!E&(;hjew^1mQHI5*1V17}ZPG8N zz6-OO=)xv7ru8IffqTzdS3p}x)RyM7G}CQ`p`t8`Xv^Y+W8|9P1?n!vaVBVnl>=$D zZlHr!1+6x{^iOKjjPA#WmY?}2qr_Av+2xcg>XOwAL7@EhbOV1;3bR7SnDqbBU+|&h^1*JYQddj~KKgzWdS_kt z%PaQv-T&gR##g`cd}&L%(>%AiNp0$b_rL!9iEsMBzx-EUU-{;}cW=F3YqgRe)|F!@ zVc3Sy>;%g|LpTR`Lbi@=ZcEN-)$}s5EFcMTHe}ShtvH&M8!uTw%{sA4?PF22z&v@c z+CrhIqhoQ}7`5=$Lg(KPKT2I{DwBlV+<~zf3cekrVOrr2QEJ+n=XZ75QWQva36OFr zrp~1;3|~Z@qltMwFsvi$PXAX9u9GA$q-e47sHUO~bjY&|=!zXw#-5f^>P1?(j7#ZD zGk_#7tB*1G45ZMP^gqNVHWK}2lIc<*LFi4%0+)GlfCQx~qI`o9_BkJzzlkW#1?;(v zQ{yxtw?wIYwvi0vmW~1P{TwOXGL*i{@?q&4fL8ADd%0 z!77dPvv;;>(ArlY+`8U8zXJd7KllCbe&#d#<<&RDqfz#eg&4On_tS?hT za&R3?v8I$jJt1J$HAw6C@WLXFA2r?4wDE>TR0z0WSXEQHomG#Q9Xm}B;Ls~|8d(83 z4jq4Gy|jqdA5nv5Nhd0N`8&p=8bSOp3pwnT$Qwm?^-^v;$n!-Jd)3+{pd0B733_>f zbGl)L;$a3Wk%z{{LesC9?x2_h48UaqdwEVnp*`BZ3^7R8L(lc?WDea}203$SUt*AS zfUa}LqDJh7k_GsvS)v1*lwy7u4F+Deoj06@v_N0ljkEdH*66mx#i6?~h}0CCdO5FTPs|s&CjfJf8FM0-VT4Ne- z1!}tnQ|A)S{2(PmZRdOPqSgk-zty^{(Wt?@MKS>B%w*>#`2h7%&p$n7>2`Jkd-)nz zZA~A5LYC29B}Py2oxiBoAFAA7zjA(WzSD!rl{8$l9n9imK4t8Pck@y_^pwP_4y~@f z*Eq5J$L$_sTTO6w%_}Sq=#9}S3gda%Dyb81h%{wIB31{o^8!t9wNb^xE6+IguBJ1= zEwl?MIjpv{u=Y`RPavGSa*z_#dTfbQBf5B*0KaT)2~YY>-}Reuy`x)%wAPyBA_vZ2 zKKV`G^!nwW_=zw4%(ZZ9ZQMIr)yZHcm7g_~)|S)qqjPx{V8T;^Te)EXQq~kRL4ER5 zj5C<>?H=suJ*C2htV^;82+M_q$qMzjv@MB2I^)9+SVUqpo3*lETf*coE)RqR4b+Wn z)c1}Qpu~g+8nJ5*Mq_bWa+q(j_wRfRPUP##RG(nMpnnlv;BzGyVWL zea^9(Qb6W=4U8K*b8bsT8&m>Oo9!Sr?5X}3pGhW@JLa30dvT(Egk+r~+K%-p6@^RY zm~_~1SzmBh0FqeNNeJy$PgMb~02K|`_0@`zm~~A|NsEQ53INC@)<_!WJAtQd0i%Q( zrWRMJ{VCL19>@@ghUTCVc)9@9l-Pfnrp0E~o4~D?XYz|*{F1)%#gBaBr?%38lk~_V zRDri&d&Se6-~QWvBfzECwXSRPNdjr=8xhpznFz>|0K^5<=V4_V+tGr_7soVg86@T^ zMdfAE1@ndu6f)&`2(c`8<@&+UnFMO&Qn2@*cL{3d$tSClmAuLi#vzvj$WT zPjd5MXfX}%7c;f7(LtrK4$q+&bNGSdAbI6^5DC-no9%A8!Si)~ge@|Y^PPDky6K?j zKBwgRiB+iCG@c$MY+&tbQQ>@=H?jq1TbQVj;BU|=j$6*q z6!{XZcAdMig}%JJhhA3bnL~zqzREQfU_3P3+9xkoil|F7(86oXCJHVP z1iH^6S%TPIi9Q+N+YnV`mN-)wxLS-uZG=2lQG&=Z`N{8-HB}v%q5Sf_7E+4%DG6+> zT`(a=xHI!$zQsQ|w=c2bux(i^eeO((_+9$ggjoLOp0f`jn>$-DC>RcuNK9ZRwj*pJ z3TS`u996B}AJ3VaeQNMLbOB^?h4b6!IblA;ej#VuG20hNZceK7`O=r;7H~pW#&Gil zXQ3gh!RX}68aeW}Vq(h4#PySN{g?*Jo^OkB~h|hq}(;Wthw}?}&L{o4s=+HSV$& zKNe>^5?YUkYU)TP=4k?9hXonsrf&ss%mWi=d|9IwI$5OouNr^*<6PQMi}$A*r>?yL z0TB)IljfYkptJ>w=-nSX+&%%kio103pB)rvxxtdOk` zkv-;^3?d@p1Q!OMVXJ!!X_8A|GodgGQy!t3WV^b29|U3uoTvaX;UuFX@@2g=B^YFy5xVc=lwr~NCUH*d8pCIj z0gG$)VgOt-fKJB>;~g2{diT~gp*BW9saBF2FQ{A9685MYjoKRp!wM5gsJI6;)K%ns zT|xtUf1SXG_Lpv@&=X5c%K;{~&nC*yb7pCviIWX8*B|GYv{nD(drCaEZ{`qsTnXwR zT_HuJct>J<)4Keb`Bc%$508kD)mNsf9C9w0pSrg!FjB%zid@8Yfo%7iYfQ-ll)%yr z7qDC4QM*x*CZi~HNDvBDXP+48eL!OEEN3z?ZAk$?vfafkZYE5!_cYl|dd;3i#AA@5 z{ts+CZH$3q`%s8N32at(9UaW=;;x!D8yqrns@(x9B-LYeEcJiqli{QDK9G-kXdO0B z(qPO6hQM@@6JYG4N_1RIwy_$lEGWw6#Xkis2+d9t&QcRkgC4(FD=2 z4#kUG`ul{aRv8u3$45RIsp^!+%C}=p=$IYJf5uzwFUiFc58^emBJuK-yX?vt3o4C4 z4}`0~sIlpMkR?|0?=@u|j=WyWePDq~Zr>fvk!6QMf1ma=MP$d4*!W4qatd#pR5+v| zKc)@tDa5M4Ta#kg2GA;UfIrM`d%)6I7y^1;6>dFUykGWptzZ1@ z|MZuB^7Gd_PitMPSt1B&5wCl1y!rJ1<^SjK-L;a_FU^UO`xXjS9IRhN4*iAnm zSCx6_f>&dn+Lm>7i)USu&hJg-h#J}8!i9H8ud)6X|zB4f@7AGL=?Dp!P%Qz_WDjq=@;Dfw6)b3_U$2)bll9qyz_N4?EdTS+h; zC_tN9Y5WM)nlpNstGQV9rKs}|aXjN?HKilRxBQr?bvi?vEiu1TVW%HzUJ*=Qo zp&EL>!27Y?ff60Qkq$9G<(eh2%5egb0bfA;J!$&zzhH;EMl^{lu()t;4;3C{jXE(k zmlQSynP?o||9zHkpsa!UmWU0$jAOdMg zlXlMBsTSX4=fPw$zNO)Qgx3(^#4juJNhY=$(__qSiU51$8c5Fya!NQpDa#F=-m@}- zAePXm198e?8h5d0*-g4W$<_V34MZiPC@9&$O*$5|+tIV#(Ap{%2zTLa$cI+rwSLGo zm2&|8oyB!Yix;o^-U5HkxBoJH;q$LZb_ro|N7>uFU*Gc6-}GPqjlU(Vr+3~!`+DkC zN`_Wwr+@mKS`e$lJEpBeS8VpBhH21*8>{n?S)NvkH$ZnZ0_?pV0(OeAVXn>fHw3Cv zmpOE`&K|nK$^KDZ!*m*Om5rTjd`PE%Wse$}BVYc!;?@LTDFvsPNLDV(G#tvNx@x`& zO^ws}xgAW18^_n=q0T}^cnR%1AFtF16sclnWs=wTe3zGX<&4xJR$LXc^Wdaebm~`q zT6Qp2aZUvNaaM%ZfV_23=|0&91Z?i!3gL;NDMU;Oeu`VGu`u+F$iPhio$RLo9GV^r z%?%SGD#1sD1UkzgH9uvVZ`^Z{(5@68=C!1Z+T3qSfBe*Le( z#(nd;$hCB@<$IQEpo%;6i2wZe>7f~DQ|$~Cl=Pr*mDShcMoKm1_% zbm*EyAQzy<6vG+PU28R? ziEN=gchMu;9N1XVFao?rt2_X^7LFkFeosAcRT|mbYotdNt{7Trw(=7y?2X^p|JC( zBp~%3?Oos(I2g>Hd|c!mgX^v9y>PuaFj5-OTdGR6tD1ViDsEo))+X+26a3x3^*3UF z06i`6^6jiz;$GbQ>3Vtl`VF7_#Fu~c?|$(sU%R;O+Z?ZcGw?kzZ+ddOsukZAE>vDF z_7Y_{8p_2F1vLr-SlMx}&Q6G!Av4E7nn>B9a$0rQ@L*HsO1Bx}c6v0|P~Rjg$c+8f z*0f>yF_d5>AF4VhbMzNTD-7CFc{ZoB1DwCaR6~aiU*(;fr$QYp=$89IDu{062vgML zF?QxudTv`@P7SG?E+NfLm%BLf$xSPiOub15YE@1pW(~shVv=c)ne(qo;WzwX<&rpt z1Z-QUQ(RWT>7FwJ+Cu^F_G(|H^gFNHK6+5PAVFK&!B{&}PXVyXX0@tc8%{&TAhC=H7%ae!5G{s*Y ziBs9us*BrFirHP#N&E56K57QYh+AfbW91OEeG5qJ^Z(D)pLOlpE>~gLth%3ft?&DG z-)L(~LP!=u4MIZnl8rzZV;T!XAja5nGBWIuGaood`2)!qiBB>{5<4de2ZyogpXa`>t7_J)S#{OL<&S;} zEkkoFV@5AH`ak%5FvBQbL~*<*=|@}dTKJ!Wl|kc5rSaZx@#8`sdUxJJIC-h?1?_=z4vuwT4_LSiOU#av1IP*Ns+ zJ#<|kyu8~6p>EMUcQ`M~x$Z2|j1>X-ul#;F@B{osaN|`Io1FheuDnFe6qB5r$M}hZ zRhbtB0O-y&!tSgjGr_FTob3?uBpEN7?Q`!&qIYA7vwQKx7%RU+1Dp)4?5?^Cv=*Hz zTi_%L1@heYDME9m@^$jNyla?m%vtF)ePNDqvUYq^$zzvctu9~#q;N7jfaPcT0*ba- z4>F<-h*DqmUegS==gq?;kh&GZAFj`3a?*5M$cx%lrj5j2Mu2oq;xv;p$pOfcWZiC@ zoh-t|7bb-gzd7l{YHst&H`cC4df;Tgn+}QY*&RZekgZ{ExnlF0__WDDQn4#fgt|^H z$GtwcEz&0i67EnG&7@*iNIy4z=*8y5wb%~zm4Qa(XMg zJK00tU*98$C}#`fSA;Wpu;^5&1$$4kuoY_NgBsV?8y0%2wpYzxt7WQ86hTNAG-q&)lF7i$z_)X-L+%U$ zq2PRPP(lS)yiqE?#sCGBVK_TETh40Y(T0t`qI@KHq&74K+<1Nb{fqAa@B1y^{w)BGYURW{YoxQKJxg51Q%(?VGK+-Opqwe|iGBReCH|$0 zGCu7=23(nWNsK~0Y$3PQUzlpNCyNd>zB8I^S?vL;GSY5bO}CLbGEqZh-Bsb?<#y}@ zk;;!Vc<)XgL#}shGQ!n*r}CIxflIq00JKNfI$D@cvQv>(vgJXk@gPx}<}nJ@K$m)9 zHYmjFN*ZP@6s(*P1~tH$)keWbP))`UpUbOSBwW+HHqMnA4AribPe%rzc}Ky*UYnZL zPtySq#iZmI6Z>}}C01_SGZ6rNLw&IN(g7^S(Xb0VTRgDjYd>u5pKCgB@X)cuqIpiPC)m@loLQx?MlxA==F@DC?gP|XqvD& zOq%2w&i#0mf3!G~Fhw3qL?FqHD6*@3Ab+gM*G}9=d1es}hf!18k&1giZ51_B5RVGu z6}GY{xGqs>>5K~rU{y;_tt@?pwbn+zw#SbYIfY&qo?zlDXTOSa4p!04QZuSVir|{B zXX~<>nLgZPk^c5tN4fxsvjj-4W5&V<$T~sfy12k8<5u~hN@jzVDK^zu2(9F)yF7Xw zC#AYS)TKn!D^T*w09A^etNq7%5VJE&wutaPft&MI=GBv*+2@!~q;yxk^%7_7oWm+q{1bZY|og@iLTesW=l{Gp<$7*wz$E zaJsNj#ashRu)6Kib=iu+OyR61IhC}O$|2G@XQtCK$-<5d;;MD5eCIw-svr?u{MlN8 z#CcD=+0b36nw`4JP>`tx-P%OBHj7-O1P>^6!)sOT9k4Ot1&gr7_VT#-0J}utsf@xgzS4az zW=M0Eo^+l(q*pnPPgi@RpQt;v>W!CQ`25@N|EjMz z`VQhK3@}ruJ2WBHM=87*B#5p~r(3)C6zldvE~75tmK80W+VPOfyY-HSx}DbI4V4c& z@`XyEcxqYg(OcZ|9_#y+2oCkB4e?wi>|6TT4h1#)uzYE#1+ZnUqVpESQY&b8fOQ?{ z!(Zyz0@lcOVt`~qQWGkIYDh$kM(0WwA0kfakdLl{m!s;)eN|qmVq^`HGm{h}|C=01 zEvr(k5rwvyD_9o>M--FF06zUd&JEYbV0vn&i+V}GT%Sbw07&I3tTl}?yhKL~hE&$O zJQza7Sr)h2Sg1Y>Z*@)7r2098e5qE+v@*j2x&4X@=VEM<5t7wj^XLR=IsoRA2VMZv z!nFM%F@>SrBE<%ERL)R|@fbHV$z9u$nZp{ZPhtiDWYyuD?2qfP~+8OR= z{0#gtDXF+be$Nb_1-0X#;97>IBp_r_kmhEOt5I}r`rHp?!H1tJcT~Z~>wnG@ zX#_OJ=ljcL8j~1j_nVJ(R`ar&rG^g14_Sk?DiJjJSV**$4xJRL@B5W+s7d3AuW$EB&SOh`BuaBJ)S0cVR3k`qEq()aTPCB@H*qw*dC@H3IwAHpWR*%bpJkn#I zDHnlXL>A-?Uuqrx*(GM^71i`;@;-Av`CESbZ^Gw);puo{Lvw)Y=%e~yHi-ux-cdbwkG3e*ebcP*`#{rOM{Xx7z`5{&(o0qZ$M92$tJQJyD3+l;-i{4p?+y2H1~nx=mh z#8#8Us`W0p%=5Y)WOuMAsLLTUJiHI$ywOPD5jVM#*}Pa30Ci2!w&NtdW=#z(U@2%` zOBr$^qMtq@|Lk+aT%oZ?y)l*Eyb9 zBPpK%AvBg$!7|JQ*82yR41^e-!y&(P2+2+;lrAzEYFY!F%*rn8T9|mK7L&Sg?VLN$ zs&003FzWUI$u46*!hjy~<$O4!a@ZTgg)2%?1q=N( zBF5H;Z0E8{=;EVcs~N4VucZG#1g&u`uRd+tog4-XA$U;xQ5zrAV_bzClfY7QYaqG6 zNmgJEBbzEyCEfRhe2J9@56QA=Rbl9W?8W!rqR*A1EF3w+7Y&`2jGtxWvDSxfx3H}f z`svjO?@{%})&rhS$nZ6>{p6!j3H>QCm$b0h=N0sf4Fb)b4CI^2Ri|>0MNpQj$RUBx zXB!4!9l}K?%aW2-Ps*eZy@6wr>!y*bwFDW=gOJEoO8_6d@IO~l7lDSZYv|1axXZFO zKa(E3aYSeB#3W@J+F`A@pKp}VL1fX)$b2AuFnjrqd6R`kpG&5Xt~=@|cTYkUlISVd z9yz(`M|g;tW{CRa5%!iFxbgG~ZHcbXnG{l2XVT^leW_hZk-??Ka$;QweQZ0 zMVJvJARsONL#Co_l&-}=rvj*41Ii1B09+Zli<-%6!j*tjr)0{G42F-(3Ch`sG#jRh z7=&njm;PF%5F-vc^zc&=>FTM&iC7KioQy-um8|6t7BfDJORBWqbjFxfq0tl zjHR@0*9-fKsA`|C#|zobi!w-KXJo@}r@F1ey-}XYxv%PYZRk+BIkA1$m6Sa17FA0^ zho&xsh1t=(Wz5tsHW+X zOCJgdwJ)XZAJuAEK51Vf23~UOR5{~NwgQv~femoxK$~fYJCw96CFL;iF4yUzGKlgL zMUx0o6y>RqgIdHyv#Y!6J)T{S?jQMqAA0|<_?558?&Hk0ccViW$ARZNp5Ogn{jq-? z#hJU+HgV#|P?6gf%>f3 z$?=4PD#EkvLW$CbflD%r+mgYpdLYLgO3hmLNlt{Mm0l`&Qq6WoV^z-NvD^xyEJe8y z%F}{$2-ytCFs2{3%V-s$Gx+`@};t_ zQ*y!CvSeL4TPQRvr#4)!9M-R9!Px^3zHiQnv*KjlS1T?uiCALr&UoYG;W{n4NB;7m z%bPaA7cXn(@>%Y!EKGdUu6jAlt`y$An`ag~Nzhm^EH34AI+OHAe1Q#*wk!K;7JWi6 z89`&EM;)zG&abg~9x>PnrpdGQp8m@6aix0r)TVOmj=+P%i=_XOVRmM8MEU3){IWFq zhaUtO8K3=%K#yfHYMZkyt(#1dIRdg^0aq7 zNPeR_oguPu9*u%Zwbw5DF>)x+$y0nPrZ^As(PEmv1ojuZ+6DLizx{$kJL>Te^6$=r z6u`MA4*HLo_^~}(VWtcRrWl?G+9^{+b6C1y%10n&!kvd><-V*W7nPob0)V6N9pCzE z_{LkWU){S7)D6J!JdFlZ&v@$tZ{ofC&;Q&n9&B>zR5|?yL{^e$0(wkq^5P1xZP<mI405@+C{-@8%F20NOq%hV?sihrqaH5c-f0YiBx;`NG>oHdPW9^mZ@g}=2 zPs0oqAXF-3aKL?)@cvuHk(>-UYdIXk4?dluq4?vpH>HsEF#c^Ul@XqysB^+}sx z*eQ(H+eaYVI?r({soQs#7YhaSTwx9ABYX$OTG4 z24V@U`NL@RQTexJCrofLbqlr6b%k+hlTC*Le^G?1#8xL&W)`@n;MuwbN{-?B(0x=H zT%j}9!jkkw&(;lUHIxVR@E163lxri-vt>M%=k}Qwz>L%yJP{gxHEbh%vo;Vb_Knp5 z2i02Z5ox%hOMYorX#tUR=BhPCF^BGeQjJ2}ER~2T@pGdaM1xH{820TTGKiLtDYAYE zCAEs1zKTJnwN%7oc(U5WaV1pnsIE-RC#{X}QeBju`4WLTlca>)xVzN!GL2KkB1f19 zW0LsKP*$%`X;=Y|5mkBgH6QXf2ZIeMwx3zAbYSuaS(Z50fD7HYVAI( z_E=x+<L?P$BTfD+9V*F+sq^GnzENrKn;97Zkp>>Ah=U7kh=G zc!xo-#*irLSk*2#`@(l7%Gk~yRtlMRDT5Iv=R57kZ zk0Pc{w{usiwu?C(#5RoQHTGZ;lZYio_+8Cnq5kS{g+%{K;MjKrn8|D~UlRoTG{Cj^ zfpL~wQ6lF$R3!Nf?zPo|2*dWfObFP@Q3y4I&Xowajq4dW2q!iVUMe@2G`ZS>G*6(2 zL*T90?_i5Ks}{-L;WygaBAt3LDx*@xaAms&p?+lmL!6xH=LYb{|HNOwIWL~xxStUz zaS^pXj?aDi^Y8!ISHJP%>Ghnq(oWBys?$fTno-`zlrt4jKVyZ*4zQbAvo0Mg^gE5A zk|?Fe7Te5$?CkD5N*V#pDnwnpQRh9>xV&&3`|t(MzKzQmBN7^)w%k4xn5Ax?pVvlu!#&p zGb))s|7`&lgcKXP+<=x@<3N1^9|9qyyEf}Unk%en-pto zcf@v7NEpD9pwx5f$OZI!hDO#~UL++dI!Ibe$l#k2O#v2(g{6K}wdMqRl6w?MJxvkm zLx@cTUYeI9PywTWhxTk)JsGQ#>s~3?T01gwNIJXbM&yLeB#46DS4x3U`uLWKOf^!v zUJtE3Lt=#`XZjZ{vxD=n6Y-m2whi3UWdfkHMSBbJFbLP&1wcPm9l4h}T)7trk5LT* zuHU%iV7e3_@>3cQWx4rxpZW}=^#7(r0H4q2!TI8N`R2>_z3+{;KJ@afH=f>N<2-p_ zIQLG3FKZ6+a#KCn39}EiONISHKV28h0jRvmq-mkI>ar+M^S6XqzDrG)nj|_cL2@c+ zgLR_`;ru|^U@VN*G*ak%n0i||(h8REsgor;Ym2#Lk!b;}>iPLypuXd~e$(sEeEP-H zi$2fM^7r`aXj#(B5B~B0^uGl7M%{7>ODv8g%~BYQ4E5oHxKK3F%J)dPg+~8nA2dlB zdQduyaU?;6{EN%re8PG1Ep*crCz;7S&?hO+wdfI}Of^=qWZL!s8-m6r`>fhSa*%M{ zPEN!WuZ|$weou8`ep#=9jViIg93*jDy=hL`g36ZlmR!*A-sUhnB4WZF0F>^5W27%z z^>K*=2m`M1o5% zJCqrxvBW=aBb6{F-A=hmczWJmp#sCM$w8#vMs{aeMJFfevt24+=dMEM*{onrOmvYX zDNI7Cz$%AhvMfqMm!_DS!U&QqWD;7q2lV246{puCx;|IB1e@lVEHOEWe^C^5JP9o$ zVsqBGCOri99CGJc|P=i*>i?g=IA1H6+AaF zq?VQUYugvEP{GVU;7F95D}>8x-Nj$t346XA*PM*P5dnhfkb%|@Q9-Hz!Wx?lx3jw$ zE~SAED?SwR0D#)&{48S9s9fwr>=im2x_A4%Ap#fMhGwJr*{gcys_^@J#l_7+ma{BD zq*JU^uG~Z8y67^;LaCsGFQo%I9w8=?Fl8PdY02znph~T$Ya7u!fF6sDBPRmp*tJ}n zE?b9q<2tJ7`sP_~D5^M8S)-wUeE~1{Ubuv|89v=^Pkb?rfBesX@lXBv@B8Eb+kXC(x18nAz3?2$=0yaWG-Zoeut;U!O4WkpxaxyYGhx#ltB1rl$x_j!Do10F&_8PCzZ50y(Z z?T+i54$WSG@_)Cgcikq7O(63^io2os2~)IbmqSRxb2$`V;>X&hpXneO+C6x21MrW2 z@P}T0=wtW$*>%pG6;*TyUrF-(`9JdezN=Vsf9^gUfk+CTJAQpt;LS>t;@UGRNtyKy z2X{3JTw?5M9gpT}E?R|L*k=Sz>D3<==-hYLZhN7;jsy?%)HuLKt~c1;H7^V4!@~opD?iBh@U#6S}+c5N1L z3E<(l?H)lYpYUt53hFLS3T1!H?wf7QrA2r<&gUb#_A6@WMXTKY4GvjYfPf@E6YS_3ef z3ETyT%H8E9N=%?m`hzF`ptb@<9!q;-0P-hW0nM-HfuojIDH)+qhZRH(dylKZmzR4Q zMxipaRSYNRev=r%3@&C;`^2b8N5#a*w49=PB5n++DF7Gj(~mahBei%_uCFAw0eo#A zP$2Jf9=GGT_h0(^|KNRJ_Upd>E57-E`Un5*fA8P;w?6!VulcwBgZ~|QJ{?b-syPdC ztK<<8F^w%!h1OP3a2NWrFuf42-Oes58$?eU0)6JQFspWPiN{6hq6RqXi9m2^i&|vm zUI_ekl}qBNf_pGY;2f~`q{TXoB7_&y8ZZM-EEJB(!HFjD2mh7t#@t@L^V|{x3&4RH z@a*Eee*N)Je)#p<|LmXq?9Y%YiMs=?jwMK?>If66lLVj~S#~_i=tZqH=}ZkS#-@4X z+KUrwXvmWKNYgj~!7f{gvOdT`rDMb4-X-V*JrCi+Bpa>;jf)dj??PLB$yNj)VS{OG zDEnZtMQ|rja+DQw?5Hn*XIpuLR z^{0{Kmn}Ili;RGskSvW#q5Rm`4hNcL1=frNnN~VIsnqpT%PpcsBKV7YksE|pgrNWE_GW*kb?&KBLA~HE)6Gmetmzc{_N*IhtI$BfscIn`FKYuI5 zZyjXR{n*GM9jEsyqnmsO&b05BGiyt8rrcaLa9D43Ne`2uA6?$rs)=43FtowWyuPGBO_sRK z_^%H%u=alrG9KfPT{y8)&u4?r=;_3zo!V3^-l6HcaSvPaq7c`fn$(E8Sc&EP3#|;l zYkSN%HNX)8@Yz?-^KiWWkLP+coO^q0&i}kkN7JIfT&W+1#~sGBK9A62U|w zEp#TIHy3jdWdNn&i7y&=LdD>ULGlV6BDA?^S_cOgdBg@QbA+&xMZTHLam!UFS0z+j zK9JZEN~l z6xtL({Ool4RqV=I7OW9#N>%#c^#`)|DLRguQ7|B*08E-eAVbUpV@~U5wE(L+h|%iK zf?C7_0ZrVxp@I4vKlFEh_iz54=j-DWzv*B46~FmAzxrE$=lj0l+y2D=>HqwzzT*#Q zItClvr7)^9L{&SKQoH+bFOSK<#arzbUX?7Io!ug;mCP!igl4k!HIjgS5)95#%shk! z-a@lRshNF``^>oiMR&zPuO9!nk}r~?VSmHSG+y`zi@M`|d_x+#<((rE5MI=p5^Sisd>he7=pW@HOb_2-rEA{r4pi#X+ zg-H8Z`!vs1AtP}V@M<>>sMeEjR4IBQuHqqghq>7;To-%Dlo_8y*7DIacZZY@n)Y1U zDV%>(m6wWg`Cx3K2~zrWGQY0~m%Ufit9Em{UBlrqtR7b(%ISG|;E_@t>2mdOxLSnD zkeG&O$D1^;xI(aIDzmw&Q3ZLI>`gf2BB!2KU|@BI)xF>#`zYN{t1x~A%$+mkB&%xY zvZU!ok%@UN2c+whZTMYPWQ$QK#3h?%w#}v>)&}1pQQ?M8%4z{@(ZUYLc=DRLk-6Zu zU*)$RO#b-z;CL)~3h^_JeT3q&br{>Mv;KY%paeH0`1(KlbKeJi;jK4bRv)+SgT#Te zcvMaC-p6M@_sjLMPkhyve{6u;&C-;4O|v*gYqijGW2>H7Rsyhn49UEut_``^ z2nu}=z)=VPAOGL~@-O^n|IaV~b-(S+um0-$d#~^3`R2=~ul=@PkN17zTfXxT0o}K! z&^7XmcGwYX;f`(_I_c`qH-^H`PkrgN)~2{ zN4(j_zA31$Q&2rTquR->?iuVDnP?JT^c@g)&KoxN(6jmEi8>H*(~eh)FQJT``@E6E zL=9x}Z_2_Ks0T1})4imGJf1hfm+@>0=LlFSCt?8=72dj^zqOa}*`5evX;t>mYnAkj z>P(#8#H^@0F@!P_%vj8Y!xnU#*=N589SK$$fA~IAymmW>WuFvzubWpCtsK7d-zq5L zE0ziv^|57nm|_i<6xy)N5@_wO=*k7G3$Dsxe*-wwf!4>m0NXe7O`UjT2YC30OGYhX z5*ALYCzYcu(Y8e)jA#`GZQe3t)7X|NlSESI(L7OvS)90eZi4a~2W3krzT`uBw#R3l zBubXzpp8ayzi60@wZ`x*z0Z86ZnqN!pc_CpTesTP^VG`^{O5oAF97x8cq&iBLE@yVc*Ky9naHZ;D zc*51s1NFtR+^gcUzq4AcwoYp0x7U`W^3WwAn@6!m?jp_((?R1w?xMMX2Udy%YdPs* zvvVRVz`sX;Dh^e#_fG^AErOhyURLoO72j!6UramX!J8#=)3?A5O4S>wwC_TX)|~@wzU>VI_YP z9T#C&c1!}iJnkiS#*<8v6FH{e2^KF(A>gxBGHbp%%roP zwqHQ^B#BsF^8nxAbYuuof-ZmuD*8kvPhA;VA%MXK(7%{Yew5;^u2goN<07O?EDK61 z8~5Z$USFU&<~9ii9-)alI`R#@TIvS+s&Tn2HFICj=9UgiGx|`NxtBJtveJ5j>MnE} zQ=3`CZM@MU5|@^TM)Y}@Qm03|(#IBDuPS1u8uMrW%HP4epZ}HL{4Mi*2hKvx%<<~% zqi-MmhX3$?{~rP13%X=?X0+PmW&ZtE^-#IUZ=?}Ov_x}Q z9rDG^5P6UAgjZzwX<*B%Of%_qr~-1edzidUn~2EFzdb}g0;s~^*5CX`f7lM+RyUiRqo9fhtmv7MRlpW0WrF`rU(EZ`qcY{B+JP9+LCtV zx;%heI;!JU>nzZf@}_KWeDU|foW{H{w6LN(nc4agxxaBWSOA>sYG8SPV!OhI?+?|w z$C?Tu5k+v1BWT9Y2osDw&5fsb%``UM1-_W=c^C9=W@k_Xz!-g8yhSWrov9sn@4iLHPl5#eHJz^I+U*V^Y!Bs(yGI_82! z0yW!?N!y!`Xit(laZQUuwiJ(g5=jHqH&tsGAwZVOZ6~`JNlbEn{Xt*I^h@>lsN@~o zUW%ruNRk}#pl50K^)clxXLyG!0adKuUYBUji#tzxMJG`zsbro6v)5#Yr6O(yCk_`p z1iS2}&ogu9pZzO;`*`}`z3+3sKULL%slMZUHSZqpd-=J~e)@I2ewr7zqtd|byxCEy zNEhcf2N2k`+R5~VJ&D;4g7Cd*J?OTq$km;+Iu$qECn$6yrz(k+F1Pyn7U?y1Q4!SwVUMl6{Vt(Pm7})El}&{^z$-#xSm$u z+E(FemxmiXKqRQuQlJ9e=L|asvsiopcEPZICpC`>RHf{cf*U20mGqtB!yh+vn`uz^ zl0EkOD5r6;S0|D!djZ*oZ&Yn<#{B>`M^U=5!*Cx#xT5S#-3zrkg%b{8 zW6@{G7icFdSN53ng_Fo}4h`W`TVx@h8I{ z1Vm}XRRU^Z$Nw)oLJ6cEVz22GL-y_Vh4;>1{`r6U#z#NI`&rK1Ry$pKKey(1PRAtq>E8!Hm}-Cr8c>goR4dyYp8RJMyYR;7srxb1i2iwvf+lH9CX zCS)3zLL9@9#+=vjMd#^f(4lI;mB4f_vts$~e7(EX48CET9dUrS$9v>6M9y1(a_z zlD^VNt8~r8hkVjUFcD8f!TJXGvk*H_15LDvigMxotpK=6?U)+8xneKV&49YfN< zbSj9LPU7g5%kubeuDP5l>0A`IXe_z@T`?-5GV{`xE|=T#ovNjNterHT`EuPfo0zHY z6KzODF{8{54wARS&yuROkb(&FTUuq) zyFw6AP6|pxJvx3aHNly*QH3QPERR4%wq{Yi)>dlTmuwL%ovzo$PO-=tn-8wWc_Ut` z-~l73o9&v&y*$o;DRg(getr+<>jQ_1dNW1xhUR_V{K)&yInP&Q*YoQKx1_0X$>oy@ z63)N93gRL~VL<6fxfNS=SuNxwLvm2@N5GN}J!b3jSdHhJ07pdR34mORB)U7;;xTv!1|^?3(=?bm-zfAA|l|4YB{@^(AVx%a76Y0d%6 z)SDlAtDax|*}w4vAdaLy2Q7AN`?`J2+*VuWXeT5wGh?aCrIrpvQsB-G+^or#W4-j$ zlnU{`>Q4S>HoLK0a(iP~ee6+nTzW`wZYvR-Hiw79@kSB%#0rb+u~f#ez3^srZpj`b zPS{Qc#7r(_kwaQ#0eCfGhZXx#AhAsy4;GD<(Id=vvy%Kze9@Fg1$UQvLkBi6rr4j; zvUG~`8~@;1&cU zamoP*_93SV{r? zxWB*ec?Q5|zwiaT`|cZWzBuo%%#hvL*mE{sA7A#N4;FAAwjmMV!!Scx4D7Pf7sBO1)+=2zBCTKmI;#vt`}74p7$|PDnhg5S#+sQ>?!$d@v<~1 zZBUf0@qI$JW=opz+&jeXmvrgib>%K%U)D%FnZ)|wyih*rFh(;GP2!lS>Gcy*xD1_c z1dsSsdqVJ^dg^-@y@E;8Lgpl@EMJ-{_+n^-)}FD#Q5{j zDRb1z+e^H9=b!!jryA&bmbdFkyG$E~&I&ecz@}oJlUTKeS5=k!o*94M{3)$Eiv0z6 zByKG;6c2N`3xFuIXKf|wcW=tm(J9KiCXE4S45uDGG|mju3#E7#Bi7A=A&T0lu4&@s z@$&xse8bZ>{Mv8-;-`O!PjA)WHsaNMR!S#6(D>7T`Y(?z7%v>u93*hcGtttnSESEB z=-*Sn#S+OJ_Ar=hs_v*{Cwpy&I}N!vl6eq#6{5P1*P?30V_abm9Oy8PEtSyS9HRUs z&={SD0(x?YDv_4vqhlf#LYfW8e($&L1}DT5?>q`!4L;qDFZ{yKf5kU^%Zn$x{rsx>wirZ$lRL!O z0cM$uH(e@*7;yOzngzc2JZa6^ceIGaIzIZ6(<1B!dTVL8E+hygmh7O6l~GziognVV z^N9(>**s@U<s$~idA=gMNu%c>+d#9-&aMTs+lXgAnKQR#yrVI z>m+Ms_YEGa)>ip`86&3o)n;Pc50bRf4>Zb&@5Sx8NmP}`aoDbQh|Ahxfu}Wi$0sdT z79!Q;+I3I%3)xWp^EU~T>oW? z*-;&1hmB1-)1rGM14sJ0W_)BQs1PzUCv(f%LvW}EmmCOmeMHBe5Nko2a}>=A8b4*I zG?K{dQ-jUp#%VEZX)0Aa-5`%pICwQOCXFEUp+0ghWMaV+k?YcmyeiE9sZO>Ga;AX# zwqN~CydSUMeeD#Gho(#32L1Ae<9$E$kA9TEIgJ!VV;6?RNpiC$kT``0*t{~)_3aMc z;3QmPOPya5-POAw>4I4CXG^y-`!1&bT2jMuk~9#I4iGcZYnrAxu<}gv5K9%s88FRX zVOR!Uhg#I=s<~HqZk{0jy?^%)^Zs7*UYz@!AR5OFx3htxUeCQg`Za&^`~D8tFZy;r zbJr3cF(Q!U?9H3X+Glevvr{!IiYnB5$P8cKn zG0PkfB=?dvx;odH?P3+CIX)-qlyY__HsBW!4a(rK3{?*?@T3;S2Eq!KMUBdg;%b-0 zR>mrnPCIUCy&!FCE2j(I5AszFeVubrpP51OHu>dGTJ_0wdd`k64Gzi$d!0ahFDy?% z&NSSFK&DXnQ#=f;D?uPNJvz8r+{2aCE@2@@R`JmPra#kF7Rqz54lMy%7O4fka$*fi ziT~SNU~1uN1wBzme*E(3nC|cUvwy2U_(@Jz6=rIvk(78YfPDkM_=WHJgWnDGn>SgW zf)H6ugMA{bgGp_o)PqN1t7OTg+_Qc^FCiHC|%%){ja4d2}y6(9fF5gFIoVBYg-Glr14aG zN8F8_`7*7}rKlQ}lXAM*Fhtg$!g3_fbucj(-Ib+%_2S3wHrvy)X1=y&j0|WX=6Kz4U}*pr0DIVzlg40smHdPyYUG0)-1zJSeUqlD zFL}pof1zrEp>`-A%2?R1Z6m1%)J16H6fslrDy=M?JZ(VITL}!Z@K@3`mHF3~g2&5% z*jG?pvsH)KEVAo2x-7`MuxqKZl3j()ujOy_FR*>N0^GG%=AvaqL8M6&MaBVDiy7E} zGlq#`0N}U&mT$+=e7<)z(X6vsC+_#YA4A~wsbBhB0XS~a2FpH9AidRv^dQ){f-Qah zJRYKBvQgu6aPabExuPde#3~|OY8x&=s#F0fzf!(dT&x3@xsxT9HABb5knGFXt%YEB zMo#PPb?=ahqPOCZ!80I~T*@S|-fS_g(&tMDR##vsXiVneYUE88gEwsz*q67Dpe@A9Nji-+y|t-bV#`C`t-EF0r@ZpK%e%K6JV&Tlff@^&FgjjD zPG}0dPTp^~rxW*|`>`K->k}Wp-=BLlH>}~nKf}hWnfvGe@b~;~0-U4Ea{vxk(z;~r z4x*_=Pi+j8p*J+S)m!WITCteEj$7eK$-4x_P?+-7SmuZdC$jwqE?-!p?o3a4y>h5z z7rgE}H#R3ff%&hn3-(AA;Vv3sXfDq=sA6?22vw@E-T(Fv{X;w*Q|Q|h=DA9$7pia1 zukZEr*2g~ZzS0!_9@N#(>1R>q(Z1cmX+ZfHfU_7$0ZyS2nAA%YVaqXG_Hy~KN+;%f zh$&Ok3)n{A{hu;egHl-fX7Yw5j#t_&j&x-{B-bU^5)(?POA)aS1UcmE6R5Rly;_mO zYw0ve_&}#9LNCfD^YD}wZbx?lCvmvN3O-HzfY1dTS-Y4{dLIiKM+Hu&3F-7Jso1(E z);xC|?YC)os^B~?GLdo1X#==ux|X0expx6ETrQ&emF{GP02+q1vMv5tiz>psneG(dd>H&b0IW zLo8G3@haPXq{%QTSY08E@Ca@D&R?TBQKmi47ZZ?|Ta=p#6rg*$TZE|Q;++X&#>b;>$h+zP`VDT{wXuZbcq-YxaS{ar?f%{&$D-vb${8lZ-Yr zG5M!nrczSt%cadX3p=wp-XhgQWT|vinAf@Hi}Qr)w%)0^mlDP0N^Sj?U3Nq4tp;Ie zm>~h6oxOwZe>C99JcvqB-xr><{7<;}lcM$N6#1({H@>Qn^Cw z7&+L(Is5j3H}L%K5B%_t7Tv*WLixf+IV! zglHk#&WOka)WEU^+wuU@bc@^XlvK+V)Hp>VCVkUI%(;8HJPDRq}+EZ-$;UNm0 zG1sCza@Y0vLRESYgyphsOEgX7@JLNCNRJ`vUn>~2%xC2Zy*pcVvd&c?>X%V3hGT|? zz!gd@eHHycO?k}wU@be35Cu*pic#|%9%n|XohnT)q)%11N#)E<{G^aB zA_XtfRZ5}ExRO&p_7gvammh2pCwUxIg`PQakoQ-wS#z5k0oM^^(6#}sO3s-}5bFS* zZP@j(vfoN>UMe6b64^@st7xy~R+*T@5?_&KV6b1fwB}#5K#`gD&gdACE3_RN1>>o` z3G^C#cM|L=hg4JEw8*P?F-cOK=3Ejf%g1m+j`lG%TPKBFtb@n_dzoPbn$#Qxtt>d{ zWsPTe%81+KI;v2cLo&`?YEv!Et(Re|F>pUbKV5+)EKkQd`f)g8@cKys)PFSB1;t;& zfyW`k+iRECQ@QY~_Zx~2N{6FAtP2B|E{#xPRH7>~Uo)LFl9>MjHM;(3;~g-m1z9ON zi@q>(=|wJTG(GonYZ={sq+xeiAJa`GK>AqYX*gmiPG1Qg5g|&RE~0%tFty~i$n9{; zDD!lZERc*~vs@GkRyv%FZUNISDfuYLc0L`se9(U_dsCK=snl_ShItk4r^slM4Ogb* zsge-^z*Uk8K_P~^gM#!yTzj_*CTcwQA@&Nz(DuS$w`)#ta*?0UBj=`y!{j4x7+WxO z$OanDF~k{^%q6xRN(RN5HDrcSgoU@13dT_&b2T0FgO zyCIX@2N|?zJ`wGZgELG5mz^(Rk-1-qnm*NmQ27pu?RFcvjWgb;t-dyfaa7te{IBLz z(BRpAE6-ER7)-4eyQyxA+_Y|FVn$;ia7Co8BDVI;j?#AH- zJ%`M#TVA%S?79+jCMS=JaAFeB9lA`$n2=@`Q)ZwR-N2t_`97l3nGjcsM6}nQO4yQFIuo^g zW(+PoWF(nNV$^lMU{%9%TvpYt?>DTvR;+L70jnMK&Z zSd4xF&~u7>WM595ltPWuy)@xLffVVqs5Y`j^#<4VF#)bxj9CY|dUDE@Eh^8Jie)pG z2F%DVWgh28NIKyq%^sJ#-?EIU8E-C@3(*zrCmSO2S*Xt0&~#Ib&y)lZDv{IuIhRg@ zSd`nvYdNbcafoE@I7P1j5RMq*g0EkRTpX@&AHhLiXiKgw zKV1nPElq}*UR=x}qg!{b1)8W%`{2HK_J(g{6C6=&YNmm{_9sQJ%5OOEBxhiE9>!lu zrx|*rkc03T8s0{HHz9#osc!qhA7-q3QFb3doy{6x zP-cw{V#;x0I$4+p^$T4Ev-? zL1QVza*d;4aeHcX0yff^#{*QDaj|ggX}&H3|MTzpU3l+vee}5XhB<=|E4=Ufvj6JO zf8SB)+tbV;4m7?>=;2@r2w%E}s$4&An3Gd_SPJsWlv>-VBwc*K(Wl(3Y`s5fs&LQY z(0tQ;KZ=`$6Zfsrpk;D>ZLk|6Hh@H?*VF{hJkvMGuS+MikqlMmprZbd z&xysAQJQjv&2a@EX$?w!hpan?T|NBX@BRLH<3lHK@8hW9fqP9IXLV2U_H?}dwq(N%)y$736yLl69>4Fsv>|~n=RWoGFFx=V zU(em%=itcd*RP+y@+&?`@}1{huCUDXIpy^8zB62Q{wiBbRaQx~*!D06nu?!<%EM74#Fp!##!6r4>(W8c*9IsxW(AmKGctm!Z>O%! z$T}@3a0IkoM63)vq0NssI40blauvZ%cfR)b<@_?5Q5FDkpb=1Q}30eqE$x zpx$>%rWY%MQHq=lyyBGtA?W4W^gg=pk3dD6+U->|+NN|c@tHP*pb9Fb5qJ^JXD)(~ zk2dz`=#n{&$H3v?WjY-MZd^>?2;eLUP|BE|BKwVgtplktB25ADQFFPgBHIo$NdnO- zal#ah!JX2CaS}XFRDblVKKkAlzxY(QyEydBoGcXQeDUEAf997yRjAu>n;0N+9GG>= zR`w#Rl?PSJxcDI=(cz)Op-0|R_g>FLuZu3(IU9k~oDv+T_7`m-J0nmkuo*=K{l?c< zDkU2m>DYGG z)}zaeI3_Pp)f1=_hdJRop*Z?hv)t$}BH3M6&&yyNjga~yFWl(pX{EaNsuP_+Wa8@p zn*=MFjC-1qa>d2gov`j+Z6D!&1}rhrYK~04HU&5K_9UJD7I%R-Oq-CWN zG&cB}<$3vbJ==kr&=hoRB-W4muHkf9JgAGIPum7iA;_#E?#}@3=kxi6UwV4^#uN{t zc#Ip~P%j#<-u|ku{*_fYs+xylQ(y@`y`(MPjh_UQKyw~GEI>CJ7z$FawH+4HiRV1f zU2=%HbHUI~N!XOgZ|+KBY>S1A@(;4W80q-e!B&46{X-1DGz?V^{yTz^>_&C@t~oSx z{HF4d29&BWxiUR8dR7N&wViI9NDUPT3|*$NGy)|#lYpi7Op{e{2)Pd$sH^dg3h~@> zi+Dhe6kSF{FbC6$(MZjELF+0*A1|oHD1DKnhn8Tcnc60D(6 z$D=Cg5b}%m9`4J>$C)v}@dyOPWS+^q07P*qMl+BC)C=;p?%#64+CdTlN|}oPVzPU| zOjR!<2syWH(2Kw8+?Hl{e4}RuzZ`bV@#*!$-iSvB_&<8(=&-~(l z|1-Y;;C%fIs*f0*0UWU~fvIz;B7BjE&+fw&`iED!9MUV~^%KQC(pDX1*=biHtf{ak zF2Lg8(BB=Kb~m&%%u-g$@z_5cWI8~FQfQpXhMy#OHHnUB=$3M0FQ8bE6m98$20K{S z2qf6vE(DkQHa3REjV<8VC!}N9T|&_G8fiIA5G4TWT3UG|;6j755c3~HB7E=$J8dof z3kxKX7!)-3uDAS8+LP?IE^(6pn>q5a0ljivLMr+kjw3bcCfc$FgDWn;lR&)k*UgO} zPa|nX(&|WgI>-AkgH*rWp_vbNv04{Q)UC4J7`QU5YQNQy&i4u6;?2Q`urUix<(>5O z()6HT0S3W=b~Z4&PU3#A?k~Rc_WcW=dGq5R#{Idc2sREa|9wF4{`xiQ`H%gce-S7? zpQ{vW)<*A(cqqK1!Ijb#tp6BSuCTvBeRp>)m^Gf4rL!Vk?3}W*C+^4W>egQb&`oNo`{>*X! zJd`dzzy0ff-LC@ieBONs)oNjOw^?rcU&Sq7;Aal#nY3%(XEjUzZ^Cr8!{u6u4h^U} z0w7w=tMR;aP(QDYa&kdurHZybxSY#^{qroRACm;$51SWp6}te>W>ay~C&w!y?PQXp ze90s7bl*`vwXUrduo&9sa+lq5{W++USYCmcsehdyW{(qgno>n_x_l$qGNA4KyfWQ< zl!XVMJ-S3$qnndEtFW8e$rej!90jYgtY+KTbj4AlB1!?}iJUrn}xz8!DGF?6yk0?FO>zB)fM25kiubA?@eZG_aTKj`G!$D349^$X3C(DQF;s z(P;!45BsxvVXsIx5lXYY6)6d$(Y#B%fQ2oEM1m>>r`(VhnFLx}t>I{k6Sgd`3HGj( zU0^wnuR9TpI*aml)i%5th0N@;o%_Z?QX8JY(Zalca2|e5m0LX-fJl&zKT+4i-Ly2! z0L3b#OT!vP6NOGgi!*dTa48heN>G6gZ=g?zBTd&%Z3&%G*#-?6Khe+x!}ggczpD=$ zIjWn)sN*8|9UIn`Vt{jwV}8vyd^28s{??5d9LHov^vt|`<1M`N>I?5Yt1qq#RnzFs z=`YnH-cHLAS;rlpk`_LX(@VNhx`$6R`?gFyvN_dTlu z2~Gt{rZ_qp6ceq&wsNTUjvOQcc*4fY+DQR!$B=8vXl|T&!r(l+>XX0n>)!j+r(g6_ z3k}+@3l1@LG@jo2PyW=OrzXw2ucGd?<)I5E#ec$RM^Oz4dd{bGM8Ct|Y9l}oQ9Uf4 z)=^5`MAUZa+e5(hCTRs=Rh<_0a0Q#y_;B63?Lo<2UL*0b`ywh=kva^vhK59iEu>!~ zaiLb2TEYj@)#MxFih@b+ZW9W*cO;h^83iC}10OqDW3(+6iY>#D<`59uS2zz>IdxaM-Lvya@r!ke(gSm(obgIM?jT@-k8lolD<5CKa1HGQN0M;Qv z)c;wm$j-)s?hWxUK=q?Y`!7Ez+3F83V=uVk}fTbAD;9*9&JkjvF#X6;cBx2`?DNz)yBl{ZR6Bh_n?;~v|Usy5GiBFT^Rr`A}Lg@^sieC5yh4yaK3(K z^B?}$Kf!t6MbDhnwC1Y&aXfd`z3Tb-JHGwf&g!SziwnQ&G6Gmh&fd$JCu)p62S{*6 zD291%m1YT{#yNgGyN zEp$#6aIlATL%UP74qa`s_P)whf)WF$qXWaj^rm#CWo3|28rqjwv5gIZdPO@Up3X$n z-rT%`wwHo-B*%dgp%q^DB{6AVxY@Ka^Nh-?K&Kmc8k0%K;iZL1^Dzq)LHiQZlP&C_ zL_J?!y@3#R#l}L^{^XzW;WnF^I{KILyrQ3rag@v z^}#PI>7t@4kfCW6&2yoK%Shp4_GQ>DWPpWw&zy@GXXxk#!-iU0B-0fY#HL-vIA z7^dufUIY89nc6?>CBg5BI9h+3}ElIxV4mu@QAg_ziRvT-pT69;Qzb}?4Qgh zw{kPZAH%Vtd$VuHt5>gy=Rf*yeh=RMEc=`p=1jSV;?^|V%R3LOA8sTYvA)uT{bVU?TJvS_0ZWP{NkeW7t(+Ug;OpZ(H zFTU)e!dSAB`hCPQ9MN*Miheubr&kf1b!tQSV70=R3i=+2QPw)d#|;MiL#T=DtRwVV zz>Ien90KGiY~3iOzxKvOi`uRhg**gy43pL<{G3`)pgb-p6gyqMCgaTBr*5jex)>Ex zkEPJwG`t2`jjpzcg!^TtAl!ue5CuBF<=P7!V*-ksQjsVgqV^0CVfhLy)PWq9at;9B zlH+w5mahh|8MG=kBYmO{)cK$PnLl^F^=3EOJO!`u#6{`sY9PtGDcqut6HC?NVZ1dkjkM*KmjTh4!wwIT|B?vXN559)hIqV7OtSVVO6^6ht}L&L63nVRM63~@KBu6Oq>fynrKS@om@e-Hm}W6U zji0mjCW$Yxl}^L_0lo;t#wMIZI==~*00+ub#I{0Rmn7P1JoOr=bVd((#-c7kPs?hD z(_#(TPTQS!AteI~8}3w$Rm01sPv16(@@#t@mIMjRvu(AA&ablsHTIB>GD(1Fb9_IUlUJ68Gw+7JZDQ1_ zU|M`A_`KuJic8{TcU4SLXx43&@im^BHBhMI1dpc%p8ml1{C428AbhBFtV7Jq@H|i6 zKK79x`A0u`qF&r?Gjks7tyiu-gn%TCn;X*$?6aJ;<^aAxrZqzn5Dy>IyGzvD5+xz? zT)E6k=O5*gv~;J|^(ndmP&+AxSX|XG^*_sLRUZ5=%d)h0Eo_vEuHp{TN{>x}!yM|( z{Q)cZ6F{!cRkZXTGfrBWcun8JGFs{2unK3AR4*jqR#BRp{8eUimJFwmj+5B80$uon zjYjEmR|2SKta8yS4I?;!I%;bZ9$h{c_Ysv;F-F%rBmkBD2#n?#!W>r6iCPY%@Of|% zH^Zm%Ui}xY8oTL>80TiCbl8L`(vXv;yli-KkP1^&8kVLXW8lbu=y7U(f<{uptpw}e zYQmVu(qeHBi>c<*LX0W`W0h;rC$9mfn0b0ShV_@f_bGk=ljsx|K)wKLtN`~R$W^T`PuB5H5opy~>l&m8menlo&xjXa} zy-nRE?NyN{uq{|9_ZH~WN@F$OA=-8)^3 z=B@vz-TsMx{4+S-hr2FUJ5UE}c=G7md4I<3#aDddGJv(lf=pjtlJ2j0`a+w z6O}(JcX*wnKqU}zpF`#`kV#xid0`QCoq9JX@WA`zBb#sebxEW-b?GxV7!}lZ$LdZb zvF4RoF533#1lCapZf!bQFwa^q%@ePS`Rz*r)Ao=vlBodGg+MXiLNQGXW0X(qj>f9j zZnC!jW1GI@m5HQqY5>COX;oL9nKe|rydePO(Q{^PiSDQ^lG$jL4?)WuN*WynFgHO` zzN{#K@_5XvTMGah-JWk{omW}re$%CxGxJ6i7?P$_lvnZ5iKtZ<%O3WSENi9}h3A%n zU_@Qr7KVJz_V$;Rw04>RVrw%_*<}TiNsUCC7Sw|kYE4@35`x%6$Oy7Fr26GdbLF@a*`9uC>93u$^1 zzn~VOB8?*naNH>|#ScBm3>Y2pm0|XEwhT9 zZEi0ZsVoHGIXOY>a@z$Q?+W0ceQTGQjd|;UnlDK#johRWo5_l$6_@h3IqNdWI9=V* zI56jTe#P zt8)Vr0?PIt(XRqJ36W|i!9vkkaak@v3Lu0p4sAmqcC2|4nNcx8Mo zJGsrI`j#za+K$7V6UX#~+yNIJOcgmw&=du=XtKhvB5Q6^ez>x|aahD>$p#J4JfJo> ze+Ac8P~l|`kIcOUK(5vZLZ6Gl*X>-RBd-%~eTD8`SYeXi2;lzJz=1wTQP&evU1js^ z)*@V^#Y4nLkYncXA4{vLZfTK9G6~61lb@&E%bm1au}1@kr$wghg_H)~ui(LsjjUA?>JH>nZSdG;l^jId8Y_lb`J_F{`T+x9l!M~@WfdJpA5tFmk^~M-k7Sw(e>2m>Z7V(0QXlX3LpHy`wM(| zI~cME>^jjRskVJ|H02WY%+s9jkYJ~*1$48!x>?NZJKqLkct`0-UDSZnG-Z6MTi-1b zMJLCJGrKA6GL)_9DT^~H_25u2 zLj}jTojTqqA}(mQx>->frDFUrn$miKbBm;|FdAf=2_NDmnehxx4xDc&gwcgY(23dv zbe!0#ygkA@Y0lA|0-B5mDle-p`Yskl&`azmFw?P~AOv+S&vHLeQODz?n4AY@;>ZP) z2LjOHmXMVY80xsr=F)n#fPD0zY_LAk3|SyPtdvpwU-PO|`8}qnDFQwOMnibPo8=5R9GjF%NX&nEtLu{%*rxZwIHy$&b@_R&@MP{V# zb{B#B`T86HPeZ)#WADB5ZV&EjK;-RKGbdhr;Gg`+PXMY$d)fD-AE^JR5@DDy~cJqXimb~uSek~ zXjfjLTE!Aw&FGTG|Ls%QJ|I-8IN|o*2c-sOeuL{pgfE3nW4K>0DP7sNUc#X!>5rO! zvDDLMgwko)G%^p`W;3h3Sds9?U7;Xo3g7m{O4F}GSbEkjH1HH9bW|yOrSZ0rW@MV_ z(u#=BgI&B2a9_+Mwp%Aijs;xS?yJm*_|N`X_ONl?STR?8wNVEu>^XsI7BHunKodY@Fcj*TL7X+9U;jj~PKt zBiEhj32L=LQ(1yT9(d{@55784XZ_tD`w6`JnKxd(blH7TIFop zUNBpe4wbn8nkp0ASy#IRYp%gEv*|pgUVZ@I`GlFmt@_0M>8W45@$&T--n+egp*yJr zc#Fy1n*94_kpZf{U%S4^4!k~IhtbaYaDYMS|3nCGVxTUHU7 zLbBf!t7a~_pOtAjpf1)zxmOGVWW9VFv*MqUf<-VI>xs-{4QpJ!T~D8?Owzf#fU6w1 zd?$#Fv!ZubPmY0IB9^E^Iu)DOji0fn7`(3LvMrgKbLc_1xnR^!2(lxt_(hZtKO}VBmD|#2=e4F-;|WE~*jhxJLuvZ# z6v#P_1AP9E|8IX1x0h71@16su3O7$Lo<8^Uzx3vpefj&}eEB@*ty=(QIG*B2V353w6hDm?@!XLjyQhyL-Ss96@Q2)!o>Ro-#1trcRnl2wI#xz+*DBwbQ_$&IPR`uj+PXdD&IM zDH)w3PVOYmO>J7Hxu7l%ZjTX0jD!_^rd@{4+5~U<6Yy9fHHc$k_YaZBDnxriz0G`DMK_njQI z8Ju+>D$$$lDa|`8^hdj8W6qHLEx{IYfkqL<9*nr2pmd9K=JL)8X!kPI?CM8Z=&WYE zAz)ZbOtkNF2|0SnmW5+a|H?f@%dezGei@O__;;0+g-^8yUlcnhxNX0POy-p!-KUjU zXf9Jmyx2zjXAuI^iMEmPmE@46>LYNSX}e^q$ca`elAM5~VZ$ zs^-F5nLY^M-sGJCKm3)Sc>T^heUoXIQzj1Y=garM^{IdU&v4Gup;bS89M1xbGEhcy zUC6Wi6nY7SY-Tqrfa}$c!$j`d{;B2L#Xaon1q)JXFO`pn(O0yp6;&N0ylnbIy+#Ky zxnFAguc}UoptwC4vaQa3qEI&^1P{;W0r>lW*KYyeJ4GXEk)%n?@Okj!<6rjozW?un zXFv7K39`F4i_-4lqAfK&sB%4fukE#N+rHh1WDbF;K>uLqb|odVK>&Z35H?5AdnKhx z$`r{J6ituXl52KW4a$ZOWRwg+f(l(8QldS_`po9=;y=I za!p+wsjygufiWV_5P3h7CxlaxO~f7J>AZC-u+#_=evP9&u8!n z-5PaafVTEQHM$a@{Oml^AuMYiwQt}rjHbVieD#qDIFv6csy3TeX? zlnaZ0O84~5$r9n6L$OYSH2_Q_jV9WRHR&*adwX8Y@fIgh=+C|P-n(D;g%@wUnDad9 zz|knq+=qC2x;?-9#b5E&pTyui!rQe+ZhqhRPZ;=h3vlYkIVI?aH&=55yaZQkCYR0S zuD+#R;;JK6Iu%rJov|;1Z`@WHpBK0TDYPe~*wgxF6Evh9ACAwA$I7Rymei`%L|P97 zY`tS1oOObE8Yd1F45r1v0@KlBl6M_IR zz4?rB8c5>QReQWwh*)_ci{+`1fp{oEY>%59ZZ|NDL(vi}-+GqSz0_X)t*+wrri{C9 z(7xATwj~w*9QaJQ_dpQpr%_FFsiR?!$q1dDx>P22sxTNIZX;09np(%yOLbfgzEU3a zfW3-ovHwkP%L5Q5$968oX7Ya3)c^bSqTC~+&eXe5Z zo)}c%YLn5*yi3r736o)zH`H!dYkl%IhqQ=b*cJ;!)~VuT;()y@>$*E_Wk?@ojimtO zn(O4-Vcgkdjz%cUHw#hoByk^A_d5&qHDC3WbANTv^XN$eL-g~U$6GJwmw)lS^VHZp zeLqYp$HAtX&NUT*N!6E_gQ5?qR)EWZEW*Oj4dH7Tp5Nb{9a2`V-qs~T=FEDmPKL*D z=`5qY(`dku&l(SW$gMLK`e-eyko!>dtz%1nXjz@TuU7+Fo|>rt#lP|UaMu03SH;4q z%CUw3fmQeC=MR3_m)$?}&p-Fx9B7_1RdZIbojU%BRzD{xCpp9MSX};b~v_#}(~155Wc7;dv7* zcFH#g@Uy@8Sv;RF-+J?oDNbwPP7}I!e(qoYbzgO!!1M6b_Y|E5%PjLBz0JHb*!`cj zVi{IxyW4yq<&vzf(a8pF6wZk}jDVE~~X%Hf!%!_567*zIQY<&FBBDxZl_4=*l?QtnSM^f~T2*{J}f zbCgu}zvR;aWX)uP6S!QCQA_6~H5C`*D~=o}H>>wzX_frB@&e!JP`MJ-ALS3rB6Qc^4fJffj+KwctkL~FU}8_J1v;E)eJX;q6~D4?bWI1~CX=)~0x z5ZGAZfA;`z^E^5;S^_J3M?|#Iv$cCP#8uN_pdP~VZ8?76_Q&{Hjmk0Q2V6J5jm3zN zD53H0W`h;1)OTF@kkG6Qdc8gvnPy*n`~}5%=S%wi2Fg=u%Zd=22ahTCcYN1(;MM1! zr+B1L!RqEY^YV>1fahQO;up(@zC>8sTob;q^nZ^n>F<*z>kI#5pK?wWMby;SRj1EmW2pdgGnXyxmVnVQ?QG_P@`8;ygdSajW~gf95a#4FEjRXWjO& zyAlQSPOp>6XJ{`%>dFUsVbl;%WNl6Uz2)FA{6(~k-Ea@;0Wt+}HRr5VB{K*s38S5ab|7h{8dWSj>qcESvLjN0Y^&5ZnarAjE zT0z2nJ{kz+A>qj{_KZ{}#n{_y&&tI0?v=E`cFn4?%`0I9x2a}8vuX#YjnE?U29Hrv zNn~ER#ZJQTRB-ZNE=3szC!5$w3=A=$z!qysLO0gBMkhe$ZqOdf#fO1%OS*F5nH9BeH*iyhOhZf7K;v@Jb|3zc3i*(y@E zS#Z+7Oar=uwbq|SvnuPCjLh2-npd#{XI(>+guJA7qMlprmQDQ(iw)WN8RoZd5|$l?_I|S`8?t`iUyL*VgI1JEfhA zhb;%Gg-ijJ?Oz#*{hu*hn2;#1YF8DwB+OVKXA)J}^N?l2>&Q_{i;lw46uSKCul;IY z?s*ymx}dtx8!uks{`ym&`8)}CV#fX*Q1ty~`sOo}eljr-2gIHGWF5n|WWZQeT^s5f z8Gs^~&WWQ&x$X!LU~$nhCh7z+b=!7L)XzL6!LG{pMU1XfRefsDXVPFiVXz8c>J8s? z+uKr+!EQj^j-znA@$_`RKleQS*5CWDzVq`x+s6&vyj`CqC^$$SPygwk{;R;*FOE7a ziG2+Y(*p_sdZQ)jY)7=v~%J3bS37ZMD+Vl9(uMFeXWZp){SrNqo6!tL(0f8EfH) zedp?(a->D4eZz-@e5b~iaCs^6fms@V-7l{Amg{-c1(_&$HO&aVg2^79FUI6s9_BQ) z1$2(fg50J2d!SUjSuegVE_#nc?dDgiXl#q!nX}MiK{D3BQ2>B$nP2MGpvH?xOD91S zsdLcaap$cXz@PoEzaMYB_4K|MI*nyCE`kHh(f#?)zVpV%zw+xp@rip)_0#0SLOYj6 zVEc-g-Ar1-P}IS)1$f2)4Kc)*He^#hPxP4f%CD9MR`_%C*7~LHa=+kJAz=2rsN0D} z-j@Suk97{STP3KvL>p^kT`o@fX>wO%W~7*-Mk6tf2*%0({-69TrmBwS?L0VL1Kzt1 z_Bkiccfa{tzY!q%Zs8H|R5pYTBLSyim4e3Y*e4kQ5Pl||>$JXk2;Iyl;PPCgzE(k=w^S4Z1%YHnObO^VJ7%U!nj&)Qw4*}Nohr&f;p{?JO z|8RIe2&%qUB-q33qniq1e~K-YS4?)`^DmXG%cNUQH<=V=mMi1c|0!~e+bPX%xvoc- z{>|J8RL%J5q&OEn4~Su98Kk<0aB@43qZ-v6lsz@}m0{P&OcZoiZ$;Fxrxxh}DYaQg z#OFYcKGhw{7N{gALGM&*q#65=VkuV}16VD`N|1AwC5^*RWgrsBX3?BkmE+w0L>V8~ zj~@O3Fn(0}#r90CY@jzRR16qC2FVB3uE3xqpl2Q#CV*n;PIsN;%~&Tx%Hd>LPc@c0 zDc-NFnwKBMo&f;oFf6R?S*hn2nfcG~C1AewIaw1KLGeLc^e-aD?!|bBCl0_FXB&lM zbq;BB4opri6ep;YtniS~RFkU+-hrbqJ^#X2eq`=%*V9d>dYq%)Z(A-*5Yv#3itCw&+q-6zZtJTjdSKi zPqXU~a#kJH&zzT^`0Bs&*Zw-DZhbq`3Q@s4BkpXsYqT0I=+U8kSv`bU`O(Ve;gb=& z&U$WzK+mNSE@z=0M5h9IJbZUp>vYb$D>!5F(Z1`8rBQa0k2_4i;!yz!M5hZwMWXWp zr!3krV6y&8cSxee#hA-6m{+0$Uj?)Ery6(bacu%I?Tqgo344oZroQte>7W~@L@-hS zDU~hQKpkz~mQaE1s1!>{B9n$QWFVfIAoJSL`_W{_4Oe=-{pX~)>-vU~WsE{*<$TyD zNLdZ&+yRTC)k)zA6UuZnR06&Hj2l9=Z5g1&N4&r8Qge?d9HZ88*Q-3qa7jdklcDQU zFr4Is9h-t-*yWOe%v(pmg9PQZI&O_Qs?UD94d>7N*MA*ve)N3zS=SS?2d>E!*mczF z&;R0Y{Lb%0;SL^07Y3&?Y8Uy9Qps7A?3E@=t}3|eMcr%btS(&TT_cc5?FGYD z|6SxR=iXOl%LxIp?Fc>`YlHGTf`E*9+uBku1AO2$&Y`qroFDiBQR2j+t3{BlkJuEV zQdo#NFrh_2Qnkx2Fe+9e-gU9?+Fq@`v(wA+DihK#98tel0arKT2#X9tn?y=5b7zz@ z?|R@`j#fr3K$GB8XiRbxxL9tIC-t?ce`5-evl>7n{5dRysfgD z#5b`yT-M`X)LM;hajCUmZMIZHpw9lrum4rR@$P$Xqerb(GY|0l;zQr}xBo7n<0+^* zJo;K6<7F&eIbi4j(5^M5n$o>v5Q?a&-q{shYBwn})A*Jm;3bE$CfVg+i**)9Gmr5k zby|%0lCcK@l4g4n;j$&$Y5OpW(%8uzYvgt1bS|IqBRW-bP(O#@4DTv06#)Lv{?NY$ zynOZg)$!suhlM%A5svP8hi`rSth)QS;qA}mCAmWbDZVLRMGhyP*_Bl~}r*M)DMR(Ls#^urH%# z`VuTfST1(lCeIZ~I zfr{9f{l4#e^<{!pQ67}o>Vd|W^>Jht`y9^CQ_dy8I`lyi5sbs6r;=4U(Xmg}c4YZy zFJ=O8uP~rb_&SO5hqDlU-9wZv4JJKgdU+3I)WWF+vZP}(6D~zOwmY(2l&jziioUtT z51WwY<#GoIs|QRJN-WViQ|HuIfKV0UB4{B2UeAdDHO9MB?0jdE1}dq7xS!RBIX#R4 zDe3BBt--?&AOcFEJXU$!&vID~V7Upf$gGJTN+Y{>V_-x4G9!eA;*&2L)g6_?Q?g22WzpWXM*4J`g&Vc zC%JD?T$3(6L?yKgpk0Gv{ajJIHesmYF>$)bNge@y~zm7rS}fUYr&ZJGn%u z#^op2WhQId`Y&0jap%Ci#Q-F0C8fdJB(z@^3aa)ZgtUz#q}R1_nfvSxO9W!}aBFRZ zn;ry*>$dxQ+ECECsPS5Bm*+<$72BzPUIzzQx+Q3QBkZsE#7E!!$S2}UJVd*NQb z=ClWQ%-Q#sA9#V|`EUM>ADHSnF}PJBa{-ZHgALgaQ!Vu$t-oJ)MHJanD3cgT9)+sh zG;ASAbz-%5utHgk2Sx$^r-gZ?+D<_Z^*#{Le9V!@3*Ie2P_*@2_wsxAQzlAE9ePwF zEPfUn`9~kjNBz|qfFerIr8a8GoYrWYb+K6aB3j?CfG}~>Ge{3()rDy)y>fi& z*$)l3Z1{ZIp5`LpE2^AMB~2v5q=NQlZBCEZr3yM1-_PeX@N>WX89cxD;>FY5!>N6a zeTF2b=JkE>{Ob4r?%z0#gVl+Hb!cP36nO=|^t&Z+d0P`J{2z*Y*M!ra&Z(X()Mzw8 zf2p1=Vx{mn-hCjsHS!$DS85MC@h!$c1ORV9kiR*q_w-O?4Ts3d_B-|Ra#vo5Rka?^ z_H~?UJSJ~P0r>fU{?GC9CC@1pOf<)iMc}>n-o^QJJh6xuT}MQECEqG|rpr4eMdXl# z?x3j+q|RY5U}+#-ISedzg=&gA8w)Ctg0?cIssrS6M`@4IMC>KxMIh3VCA(OiVht{5 z_nyz>zZuP9kOIx5PHQNB_LeMQy-;*hpu9q@ec1Y?FPSyeUT_8ir5V3QGDl_qghq6i z&JVJxa+^~5b`~yiEANhfzs#4ZfZn(sg(hcZ*5)%sG%pQdEl4{_AwVRm!J3s#&97x6 za%@vR#NtEsb`^bSB`d^IZKMuFYg3XlIQ_k=34=Lv9eLAh(Qe*Qb6M|VBtY)%jjDKB ztWx66g0Bvtm9h_MmDu|pr4t2p z1*3?v`C>m?9$r9Q@KIDX)p`V!(2)r!t{QvtjWLN>wNb7jJs?FH8JGW=Qt9V*;P%#A zuV1}xOdqBZVh05K#ruBx7k`O^2F`irMhmY^$~vNZ%uw9W(V9*pL}>qB(+1GplF&rQ zsvNv7Fb7hyxk6vn5p3*_I4_HzrFQ;{eS(r<{i!F^BD~5 zdCW^KPJo_s8e)^bi>&%@lQ&=yrzt~jnsgc{$T+0xcC35}`T}XyLj*y1+klwEVZ;lj zJbA~!!QJV(My;^S9f=2e9}i&_om5ut5gUH}}haZAXR9Ph9ORi+a)D~Oj< zeq9*dX&y^T(O2QXNwZc~>O;pu8w75BoaE2^*#GeI&G%zitg}yX#J=M=>i)%dZXf%y z6F2xUBfW)HBoDKu2?A_W*;-8}YL_(~%QTjQ_wWoNLOO4UGDCRAld{T~-g5)27!S`5Sz*98kbaVbT#&%bVhzQ$UZ- zy_6q0fuv$z#viWI$^8ktTeM4pz#%f=-k7@bTz&Yam-6KF_#<&CV;YTXGQ!@Lpwwe| zjd7;GLOJ>FpRP@pn(tob$VI`-5*iVR=yCYjwgH?#l@AT*+8P0n^TVyAxMl_y^A)oU z-{!Q6B7~iiVxGP@?;@#M?k@VKD+ooizc%6^bHaeRy!%`HdD}sQlm?UqYT+^lSQI%u zw}l<1aP5=Dlo-MmEv$>%W+v$goKgV0Qpy*=oI?*W1M{VMt?|kQ$gWG4l@>t?`I3u3 zwisv#S16oLmMciNddX{z2;c%8hB-zGA%RyoPGQhBWz0evHU%t9_U?yT(h(6Pm|BJj zhGDw#PigLE+KGRGhipqT0OvJ6D#M067ot=5&AUB>y74kO{R}6F4Mv4tPH>$IS8mk9_Z6 z`aaa{xEygUJ_`mqt9?8eX`xjyKR4aE1A8|N==2d3SuS_ zV*uP&?Z_Pz8xlgxqZW4tTXiQ8RP-9#X7oGJ?b#IBp*IZ59$$JM9j{f~QFJIqHhXSIAr>+GWn%p2`mcQ7E_;=K7rxKGT%0Xe-m@&8lHdZ8~G1x5N zM6~MkZ`AX!(BS;lzxo4sSxZVso5W{5pXbGkYKuEZ z-)tV!45x;(rtD6^6_yQcoU@RA_k>ITylu;{Yikf4aRDIZ981>BGDpm1sEWNsTcU7R z5e}l(mFM^~7vA~$Z~Xe6c_mEid;);3bEBJMVnp@~v_x735aB1zVCZ)_xaeygw8B1+=iXGY z6Xg9TpGM>S)WCP4dB5mWYjUT{Z#U~-Di;zHprn(ls?uN`UA9)R)0cgZd2Is&IF5Z@ z?i`o&8~2_~Do3P>J}8??rWS;#{cDJbZ!z$ynM6YzD~prAmyw!bTvdF$SEaIFNY<0c zvcb4e5BJs?6+9W2(n}-2Wi?Fhx4FOQWZvH^QKuYd9QTL5e9XI{Z6zvqBT!|PLmG=T+HkWFZG{t=ix2%I@60Ca zv4S}(VRCl31B9B+VxbARl?C;-SHM8$BYk8j{Q=&BlZzaCELra@KjKOd%_?3Uch{gY z=zSTL$wtdm&|#0v*2a#RFm9b7*)ajGGMA4td8sY3GCaGG+>}XyHvR6{Ul8)La`R*+ zlR)stZ$#3%L{;yREC)hkJ8}b(k6jSDhC4H(v^(nfu9H4XMCkfjRsBJoQ`NUN!C|&j z?sg<~cIt8kWUcX%btl=*G-qn~tH0?R_}&-0#h=t)tfXz;`q+m)_p|@x&QpDIB)j+b z0V;o!3p^~eSTlJF+t^!7HWIne8$~AgTzw$*WU|LO4!sYyXA;jH~~?1l|A$M>o0T zpf7dRai1s+wnZ=kQ`VK8jEA2CK(lvbQ#lDX(mhCHt}Mx_f|qOISl_1I!Evfmu!cK?%#$h9p9)QU2wZTLyLYdoqzRJF%8 zYVlf=EUc%62sNXll{ex_)GuH)1zQ@u82*^I0c+q0a=p zr*F97b3gkp|F+)@;`ROP`>Ada?;=AnIT|{XL`$O9nrD`>e5BKK$%sRE2+gi|msc_- zrA`%zq@}}q>I%{~J8&;MN{||3IjjGi$+B z70v?c-B+*i?iZgv_$JR+>{ck-+dAg;7k~Y)`-blFHw;oxA!ik_O6nx5MClZ5RtkyQ zd3J@0K_?u{BHU zm=+)Wz8gQpQcQ@X)+n=aHNFbPs%F)-Rm^M!7_H_Z0tX)KxE$*Bxx&r^J@%%uKv)-?xN)z5tKfrBUCdG)$+kSH8B0GW6Db_?6Kwo5DA!Uq&H;L@A0Pi;pGt1LWN z(zS**Nd_l!lE~MC^7c;A)~revY1G|G3pN!X1vg5@D6Jz&I?@}V`p#Y zkh~Y_7eDn&uYUPw-umcU&*$LjKpnpCM?;94_j!In{4f9L??d(N*1&P7S&#&HmRGUM z2N=rnC5ldZNW(TBuCA@3uPIWFzWO6J;k8|uoyHufp9o4UL>W90LGUUSN3occVv8C9 zaWM~?Mr6Cj&H~%O@^P#imZ5$`N%ZwO!&L4%p3%B_;jI$8H|j(tA?2e3UPC}-R{@&Ge)!SRu5&n{6F z_8gYm6ZJU>fuj5Vt7#RD`Fyxq01bo=<6+vcRRIS3%O6?EEoYf+ase`Q^TJ|xuceRy zBa(tA+cNPqxP-HCUEHD=GlusO5y_zgYkLB3$wndUe zRX@4WWxiw|#8EO|C3NVzb(mvow9vE;Pm-k@sab=zz)+i@FA~fejt=80%trvM@O;+( zRM=FSY84@UdeX|h?3tmfc;K+PK1$S<(DWABi7qI`gKe*e<({mhz0H6%oq3yJXgPJR zz|(6zIvPtD)sf;6w{DNB%hmLv`8Wor(sQNMKLe3uC*kT3fVQ_E0;uZZ9%kc~QA~k0 zGd96FO5m{OQ85NE0!?Uu^T<>X4b&|3G%7=?l7*~RLkh=Ho^cOTzoo0*uAG~3OS*my zo1z;+>hLevzP^U?Qz0JY*Jf{}EKqEiqVL%A1j&7?WH1813) z_QF5HUDs&OGme4m+`VO(GxJhDp{{lu=sWLkzU+^F{kOjU%%=~$JepO{bCgc~pM4gp zo}TdX%|HFUe+lU4JN5rU^NZewx=@J$O#%^gfx@_H`jTC)D@Q}bM6ky6*Y2egL;lY6 zv#~XC-C3E^JT38F+Nj+HYq|x)44gc;rFNLboRzXxDVL$6zJ6ZGJ99p2+&fZ-pVbq< z{f0_hE|K}t+17q+J9^wG%vr+dIdTXmZ@#30$(ei^xc0gbRay*Isjzv5i@);OglhP5 z5`z8|JE&rDULgNe-ekFu#ROTnt*y*Xgh)J1F%2X@rvzzas3k|4NZOkuI6u_)YPF_D zoY0r0TbL33s7d0;@~vRKT@y(#g)M8MWosDwy^&`kXOb-*A8+(8`Z2^z4L`Hp0^jj z_UpbD0CO*~M`l+wA9KDOw_XK|RlfY%z>r9DMTZmAK(zqY(evA|Pt!dI@qLDnY9Igy* zHcK0!;L2Q9rm00T`KXD#U+AlELYy($gJZ#juG8h&3J>=-mgydp1pCqSXPtj7>k|-N z5e%3TD@JkGz)q)~-7>q-tM)=t=ByRjFp`TbuA-YE`J(Jr+DJE=H_vd#aKRe}ZDnTs2wyBSn_@=EUk!5Zs@gsSD_eogY+4uNQEi2z7pYB3J0wzKoafK`(cMM4C&qjdEv!; z@FhUv{Z_DU{8=eK~y0A*u7yIj*>dBYB;;r%1rZH8MDOjU^>!V-4eg^7~{h{AJpZ(?I z>8Z}M`}TC|<{lil;oxgN^VjzS$>0TVPZ)0UDF?yvB{QZKq~%u&ey zE8n)8K%z$_mlGS`d9lEXN;H>sksxMrzJaSlMm)lJZc4E-I?fnwf)~{?t<;d2N&x_sudWK3zSvJ4T{qT{5Fj08t{-uzlW@!0&Z!1Ogf4s) zla%CYjZL&yFeZ&C*e?GRo7O;&oZWX70Wp>^FP;7su$GU{3fY3Sx|F0qH^sn%@()KT znkq|x;nHYUkY$R!T_Ae-mfeFss8-v<7-C9jT(MnIGLAnWX{} z*H=oE1vJ=`*+zarJyds0o|}u*wUzsbn&;k(qMQx}c#}od_cG$3fcHV~&@0JXnoc0l z>V%O>#}l|ohUvr!gt_&K5tRdG4va`XAe@lvuMwmw2th{_R71CH=C zuXOH1#~?eTZntcIaa?`qNUTfjtDMupb?SC@e3pr(=FJ2q6fQ~KaH&&?TOuu*P*^&1 zC^9wJqKuhlgX31?MlK_OWh>R9#Ra!tpi%8B%lAL~i7LzqnVGhI0hQG?bhuP=h!K+n zzU5bb4RE~sd_O$Ue-2EB<`!-*fAXLH9D$N#JDS;p3N~TYhGaX<9{ALN$y59wrSSZ! zxkjOiM~rM4g+m|+6YK?Z|6IAf3Y9)0vYm$(aE-69TlaNLnFtpyFBfgLAd(5iU^5iz zx{cnWf(=pH2IHg+ZcoSX zoRhjzJ1mv{XhT!Ut%p9o1$Y7gO=1G#^z%|tJn;L#UYK;p>R_T%yPc-o19_YqMY><23N4@`VLuy<59znA7(O z?Nwva#KCbDEVLYr44qD&OK-Yr40CBt(zJkcOdhntSxIJC*WpK8V~m70q3$BwXg0>u zx+Bfz6_ZTFEJx=sss@dWVUGrF_$pQnq8uO=RqRCE61l5*MCH0bkXIa8Y+fKP)CuIy zp}Ks9z#i+2@NF_%{_!1r=D#fMtVF4ed!jZ(9lS~mn!i8f(EZ(hurANTeo*7QRa)_P zUcdXkH=ls||NVvUzkTeJ=ew_us-wxHPu9JhzQ1^JoWK0D-~BtkOFL8bH0U7?~q(>*T$6_tj=@1?hxkxRQlG>D0`*N^Ew$ha{wIkN`l`ab8RJfj(JjH(s)uY)U*39G=O7#nv`i=RtZ1{Dd#{oK^gRAO2Ci@xkM`*Nvzy z93byJG4sq5RiF6i2dk%VPsJ$-M;bGTP4XSB?RErDYYIZcL0(JFgPAkSocyq>*71W< zNQQ*bjQEOK0aa{IfHz)t)J=5-)|&OwWz!CN{Mz`4w1DA(q6waytZhenZIyd_+x0Pz zoec?XLEi-|4+Ap<=Bz++Y!g*6TRZ8_MGoDFG5L?9CFv(jHEpM5cIw2}3Q$K7QQ}Yl z8g=dfAo6rB4Bx>jnpP-go|!b56-gC8TgQ{fw87&8F?F3nS12r1CU$=T=@LMBCX$!R z#I4f)0#~LDm&t4cae;is!^a@z2)px`Xk~_7%Sct{U)cv7^z^ae@w(lDJQb-8@&LMA z`Qb%`Xc9Fz!8o>zBKnPL10ge;x5@nTB!M4J!phtL(+99~Gb6 z?BjwXa$%tso4_eVHJ>ty1o8ZnVf#wx(;{z&BH^BgltvvclCQ`*-}J5M zH=f^qeY|+V=FvEws0`{D;PvZ|fAqt6_tSsx$9}fZIN3+r2QB+pMih`4C91m;?H~vn zkB#JtM`D1IR(%<8)uTd{yV=(D?W~^rV*qITc`ydq7e62>0mCPMn7u3d?gC}NBbcX? zY5<(kia(rNNzcjHjq)@Yo>piMIaOh^5uMi)PggAR-b_j!QCyDFIiPmeDyN9jRX#P{ zQZve&T-1vjJ>jD*A*1avHoUB*0Nwi`_x8n=lXQH0sp{g)I(67}m_B!`bg4=$+9fq+ zwew;|cG5=*ZCxxUeKDQ5VZx)F$%2*PR+^PYe%o{;*FO|Nom;j~C)*t->04Q~2Ej=w zOv~<+b*Ta-bt{h_w+vHT*3(k@skZt8{UlT|7Gdr>ZZF>Z;^*<={a^9nj}E%- z7;uhbiOOOr9XRD?AlS||D||V}q{88xGesGz*^`J(al(t=X)#Lvn~~bdd27@4_={qV za{yU!{vQK@ULR`(SSoh?-QVsr2ielN26v%Q+%ZlP8vI8MN zWWY9{IDlURKRF1D-%Oi=9pb;_l7Zxfy>BsgW0p|iizbAS3eO)ns`#{ zy_KN?fMal#DMw2jE!DVf1TxH{j(2xwr|KFaM?LHhsM)cHravY|1TMiKDK=7?klBKS zn$OeW<*||`JcM9nM`U+uYY<{uX76_(Gt`7O-{2y15L}>v4Gx!=cFY@X8I(*k2id?O z^UTMMcQgKZxV6(wZ~5LpaGQ>itZkc-%r?Lceg~fMltgnzAm&Q(k324GiOg|LO4-~Q zwJen=8>Uqm>wPEGo)VHqn|@cMieRwq?s=tkFd`G=WZb@P+(-+2SiX=f668(;iJ;2# zZnMe_g35x)w+&FpKp~(@1<68lf9B6YTl z#}e)xS-jOZ&j=*5>cy5hRsWY zEl23$GhV$3eB!g;|Lw1R^EjUF&ppuE5!S&2IO~QtfO`4w|DXON;T{&NGejkgQH?-% z-Q#rIH+OE9R_CnUm5d98htjiH#xRVHC>ouZ$3kw=1X-E~Hjai{8p>dwnMP`c?4Zg? zMrqqlbE2_L+@($`pe2P7*jU}sMFsVcSqWjwZBQ#rLR*X3e^j)p3C0)x=>`TpU75mR zfaz;K;QVLo*YF(anXex+OOm){Y|4}q(@*EeOuxmtQay8gy`x#1Bu^g1qbuWlo4WQKvi6N z^1wwx`Jxy0*{NvYh-``qQJ2(>eRt#*lqH5+wip|hOS~^7_gC3CPQi4r>H$&>pp7gv z0ue(i1Ah?%f{5Nr8fU7ggH_e_t*?CJ_{iJU&EqiO;c#$!x;=m6+aLSx&m6>bKOI#X z<~*5}6500m3t-5kuUZ(B!{R)dpEbm!i3RHm0)#76siti^6nTmCCNAhDKjJ9ZT1;k9`!se+p~GoEoqoK;uN80%+W_1D zbgdjnxjKi?NDNQm&GpRa-75g!ZUAnf-GO!WA)*mBCK*a25TPu2oCi5?y(CQGO-CEWn_d4OFKsQ92H)flv$QyAtz^8 zR~-tmM9UazbDcG3yxarW24Zm-6!jV@<0R18ll2#<7LT=G6eyBL#o5}0;RA*mvt;RO zVx%4pw8C><1V_ZYp!}~{3;Dm<4pYK}rc} zqlYu&bFE)%gpHNh4@8331V>pKvn(TyEYGO&gLe1VIJ9u+!4KKb2^uu|HdoNYo}M{- zZpEihedhHyzByVnLJV+%xYgO`?VXSR!!Q2Y0Jt5~&x4_-_4>l|$*Ir)S?;sHY-^|+ zMF*DG#%{N;>IH?4al8RM*5)(0ah2lmVmxf!X&~Z!B4R-TD#wlV0u=NK8mx?W5E$;j ztLJwFxe9M0GM1o9IyfG@G2L@xeemjzbN=*C|MRcE^*e7ofjoeti%OTBbyVNc#5>>f zH~)*D0X4kEeph;&vAnv>9cNlovfA{AgB=- zUQSB8Dx;cVWZkKAeCfL}$)C9Myi@GcvGOZXtyu5qp3Cz@z}d zmP`NX;t6Nm+$inXhSIRHC6IawtMpuG*iu}I2f7FDu^Ud`pQQo6`qIV&i z)%r<5un>wv`yEj2XBS$7B@)c6%`wn?h$=|*Of20RyI{a>(oOFB7kb}DGt-|(9(df~ zqmYBvxqy~#jEG`=QJQm@7+DP4b)4La0zgHML=w5N$XbDIccL}`y+c5;+w%2|@%|Q3 zGffQ)k5~~~-^iQJD$dLQJCIJsXHYZc?S7>Xq}T)N7acqK)heh)QLc@>BZYN%BjZTV zF;(5srFGF6KXg{f47}XW(K?afIsHx8Ld;-*U`u;HXLroR`M-?SqF)%|>MzWdYP^WJ;!^LSbkhqj_`sX{{#YVqZMF?9 zrZ?$IAES~{*dFDX1YSaiL(8QDZ5T&4D|knLv;%*cSL#ZrmB-TeN{LWPy<`L0jZbs% z&;02>f)BoZo_!E1U50!Ap6ABbAH06+(ZRPKfk2Bk2 zM5(1-F6F>NR^%8G?kC0NXbEn2u!dJ$JXAlD(F-<*%Rw99Bo(s$&UGMwr&?fUr`eMc z0LLs214G$eWCnL}_(mN7Jx6@DVMYet)e$PuhKC<9H#66}3Zs}B^8F=5ouS5tu}gpC z;n)TN?j_fHbFp|3sji*_Q6>^Z);y-hkqLg4uM%LY|WSRAAbkF3g-^N!2UOb!FL z1~7+iBvhQfa7&|*`)ZR28T4r+>mYtSmwQ4hgiLWf@4;-%5-TYu~A z@A&Mz?pxpP_qxwrBZiJa50AIrK7aSiKmJGlFy^@5?^U-`12u&Lcw;CS8sc27ot*Z3 z- zh^&^hybKJ2xJyK6Q43m=!T?tbhN8a)3b*rq*7N&MZ@$^5%WDo)kv)B!?AP~CfA6PU zAaxw7ni#n7V=Sr+!BQf*)BD})9Y9t>W-G&D)ybw2?PxINMa0F3wPx^l%cJHXAHcHB z;n>l6@>pRi^QVn>H1nwk#p-TU=O9TmixL=_^6HCe_aFvi+6f}JKgY(}V314u!OEN^ zDEb&wNv%h*Rth^4U|n(Ycm}V*>9mxwQgpv?LdIz!awH11z7qVxgl)>e+~`W;K8jV)x39$3~M`4@VF?my0GEH78+X z8HE)_G@dmYD7vF)qf^|wqAqt<6pd$1$!CsznYjE$r7}>kSK>3! z{C*O;R9&=`Ju(kRr&cH1sfkG$4+x{37<<~8kKbJ-Jmm?c77LLrO=0xVxf6qEf5$=L?s&39kavS>G}SE zQakXM4FEWYuQwTVGOP5BUe7iTc$4yqDNbEh(lp8Os9h=3wf&MQ_?k)l+=sY>|Dq1Ws9n-Y`y+ ziNyJ+H$?Vk*LP*qyEMV)k-Jn~G4RE&eC___FTeSz@9cXYPkc!p$3bw4s9PV+*Ns=- z`ZxZSe*uM8_t%G!w6XWh+0#q|{(=m-&K@qi@BGekBwCk|OaBw_5PRehULwFGCSomQZ(7G;L}Rxt$Hq-x6U zzZ^Vz5+Gy9bO759#&m-k;<-c~=HDDqwHY81JQhfdh=*t!hRp{1>_!#3kE8yv&wW46 zS7$pjH)AZ==XpHchW#s_|8*eN{2`PoSMbhEDMK5GjTk6HZ{3pjati3t7IXtT#gQz4 z*?|R%yKR=)1=)uomJc3RfT!6@)c|<75JTXi(dwuK;g0M^U`m`Yk$0g}x)ZOsYqTzRMsCjgHYTfZ^kf|kX( zq}VDT@9fO9O|w}OrzljVF_8>kYJ=Sk?rut~Q+GxcTAk#uoc_R^Oq51i=+b;p2-~uoKQ(N%*-D@R6W|G zx?IQ)>Xo3u63DMgvKZSSYr@q+Cf3F!gJ{>r(+bRMe2PVNv;3n?jW<62-~Jc>R1fN4&z-$oK{vfCENCU-u6L>w zR>9Fqq>P)9DB7k{ab<8~wUu%or`b)ud~^s9gTM}Gei zp}v9W(@0|Z3<8XbhT!(15vM0Mu#%b3e6HhiBAm! zqMPsnV!$!fvtK8jxy6}DG4KAJ4%UcP;Y0B(nMHwRzy_ls+EZQcP z@?wy?0LnWT;IOBR3oX~OHjI}+>X>%Z)%E4f)64>8OU=XEN&Xr1Hkio}ipAhuD8prT zVOm+LoU0(Y1D3@l+6Dw6T&{1i$rf@!GOb*44#F~Y%V2v;hE~> zL=CMt1KjkzhAOf281$UO5jTCS<8{r8Iezk|e)9dV{pRshDq+EWc-H{48JsmwxZ!;7 zy~2>CvZ;wp5R?$~fd>A>4&kD_?BmT2UpFmlBD*o!fH+j69UPs`I3$YbN6(RuS}UGl z7E9LH1d^PLdWp4%n<#7W;CRV%GCM%uoM4<#AH;sXP1(SqwRJ9#>%rX1HpuMK`sRma z*{1d0duNNvnd<$mg5n_L*}gIo^tfCymA(bdI+KI6C+~{8XI^nN!4SfJs0})52%h3E zHech*b)%`JEjvN%^+~31A`$5{S_?~K8%*N+B@_jmI+@dItV$ngsWwppp^4^_F@QK! zW+MId9}5#-V2X%1!Q<{+NMe^U*`XXO$vtd+hU-BuiUw=F!4Z%(sWx-TYf#TvvGRfT z{&f_HANkDp;O&p|{SRu6`zZ`Z9;`Zs_44V(H~!&2c;`F6_mgkDP2wnyVp3cFA_fhz zw`fTq#*v*yjp#X)RU#nn$YXPCjpjkBA7q&8xxwg^^VtqpZK&+m?XC~G01+qHpPC2T z+GMr!zxLqXSPF)(1QMH*tU^li^?XLTMF58$rztFXxT2u}@*n)euTLK=p2cGZJd|QQ z*ssnLJb(1ZK8ND-{j|sP)U?Ud>`gLFk-q6oG}d}o9rQ5>;db4-U)&~YX(?Eoae=FP zfE{|0(uwJFs%DtM^0I2GYw;fM{W{0W#kp1tDSZ(CPZ3lFcznK@-z(UFQQt5aVP9nS z7REBr+e4G6TR&sM)4Wl|4g2RvqHsE1uG7Gg4`P_eI=(`q;xIDiHgCdPGb$&z+A}2O z##md05MUEIiZ{?zr~Il30eoGD+^v#@4B-qf)0l)HIQ9 z4@p5z3VA^J{!S2#;ozv5t%>#a-^1j+CIY~6?N@?=_VlL$;w(15G@BFENh#~9_f;W) z#s}Ey#-xsgNDSP*jO&Ode@%bx@?|pH1QN+rhJr#Ktry0bbxvd&2CNOl^eN864R#C@ zE+<42mLGC(`LZ=F2>O;&dBA;K$`ZMtQ4g&3t32v9ET25v)*Vr)eNXgTp+w>W9i2^T z@v^cSh&3Tbv_DF|bcr#&Nus8$4a|R7W}=tS%&eL~VAF0MPixLIRnQ`xug@BbbZwQK zm&6$IjOB6UYb3iAOHL+WtxEAGiGwWs;eY%maDVSqZqGMasu(*+)SJKht6yXvQwIQ) zSOf8&mP9)E2)eO7W`;?D8c}5&WEnR$l4-VV!q!M8qt1*U_AhP@1Xo;CxfC0ATEAf| zo-ZXF8qEY##C%!`;CqG}zGQK@03~p>FTuH75g#mf4_PPf_Y=fl`13!FSMN54x4Q9Q zvDrhO(>?XvC!SyZxj*wKF=|MhGiJw8p-hev%<@l?_{;n3hAjR2Y|9|v!@T~0wN)Xr zmeLX*9S)UiLhIt3eYTnpw1+1LYoKbTKsz_A;itadyPjmo*ANU9@`#@s6ETC@oH&=- ziU+d?k_l(rg~S4m1}8pHoP5mXwXsT{TQegF6!SAo=QJ%2Lv-WdC1B&q?$zStAL%7* zI`qkjP3+s`-x#4DV5$dMe|+7FZAm*$+HhhMsR$b*eB&=)(+#sXiL(rTO65R>K*ivu z*~(%-g--}nclAvij}!MmyTlhGJLWM$4>6Py)IwJp`77qwpQkoD3k=L7!$MbkgpQq? zb2whXnzwj%de>h_3^SGJ6WxRAnHMkL{P-t7@wI>ORla${`Fv`LRq^C`&ftxg=Qsbs zPyhL!2F?#&e{kT4PTZk}))O3d*BL*eM9B_bbuzkDzv=rkq!&It1y4-LAuQGofUq77 zG+v8PIiU&>wzO0#>^$2!#$vLCFlDhT7f!cZJ_3fN$y+S zpTP8e?)T{vHNg2_{nF>bs&1ZhmV1DP&rLqx2e|#{4}ZVX0swmEo~)Z5w(TcpZ!#59 z@P?=d_i~xwD?<=*9#o|?b=(;has)B3Owm-B^-y_zsfD1`6WSnYg(`e3SH_lz@cyw@ACwsbynLdgXvE$zUdn0oO1}2USc5jH<1A^AQS3 zcW9?Qh%8db4sssr+T*L8fR*)&+1)`?$W{4Ark1pEMT~RGq|S!rbq1-xi4fo1g6B7}TcIY`7qs$J($eGb^|IS_PA+*ln!Vj(txZrUfZafJN_Tmvz6@ZO(I*zYeafHJR zYhun+Sv{#zL+y&RX9>VqSH1C(#v>yqqNluc+XML~j@j~V5ag$5J2b|C&f1kpbdckW z%-BXSsrLaU!lm1q%;1%=l)qMzH*1pufBYnde>NLlN8mp+j5`sWh3l~foI1_ZHCVWT z{ISn|55Ru?S_O4})&Wk{-QEB8FZ?~!%y}QG2j!wnem=m;gk0`r5^tLTqwZJpDcM!K$oSG+kRwkP1y zLFPmJ%{=+uxpcKa7dv$U{b&E|9|vE3@a+%gcsW{)f(F=Uzj*QV?$^GKkACvU{=oO& z`z+pcfu`>U*Q(IoTWPjNrzMb?VRuLZKbVvZW}dv~FiTWI`O$blGg^9PzufK;-qQ3Xyd84=_b5 z-6m&U@wJAC9B3?3Db}QHZm!Rhfj7Fj9`gz=9F?x8usrXs;?cr9j?Ag!J^j0IO*Fdf z=A;}m4KLLdWhF~N4vqqfo-<#O9LIz7&J>}ZO9BA0m?`^h%WXKYP-<#gczfYH z0MzcnLwQ=kBAv00hcwZ)>Rf>fE%%5X!fxj``QRP>O!1|2-CnD|X-TjT^kiX85;hDOEn%_K z>i{Rh*>T7DAy8RKEh$^kZM=wNT$6qrz_oF+NUIY*>v(rKga2=~O#oj&puf{9HRLtc zc#^VO2o_5@7Yk;g4wY07aIItf9gO6bRMa95*_5SUrQi|H z>n5^hIjox{Rx)c6Fx~2L!3tYze*%+`FksssZbeXgZNNk-f8>gR9044z&baQ%-&>wX z6M^%;G=OSPdAx|tT+`(-CQu8G(3rGnO3yU~#VrC>Y~&VQV}Cjo!q)g)9PhmIQ5?7D z=jU6VTAYYl(3ZFOMdTWT+U-%pU^MCi> zA?tp>$NH>U0kXk_i`H#SLASihvPE%Zwl_pGf|iUWE3|86?FyFXy}aD+?Bak`mcuv! z2Hslk@~yH7o;9 zOv&a^clU}1xsYx>vF(YZ`V93z6%UAU0~ris#=y+uVLSxEM9FOPbm z6J=63paFR8IKzZvRSwWRK9YSBlIbH0dr1^Cx7HL!AWh! z%z&?FIP>5CGk@Y={kQ(7zx{W9_IG~e*Ph;d@#3Ag-~8yu`kb%+!Y@64`8WPw|L_0g zlW)H9{Cpm_(CtG)L3=h1sX&AProF7rrffo;IjB@yl>oZ31Fk-Ut(|708?Xol)p`io z5MDwdi)@!DqK9s-G}?wta-|!}wj+fg`#~OOnL?{Py=QR-EVLHZ=yCiV#^+$MSaiwv zeOSj6hQIuazk-jxbM_hG7L-F(;oT38kG}K98!rLeIe=F8$go7;9Oe(rJdfLSFN8a8 zyb%g@T&7EA&-B5xzE8kuZcHz0^Wd42IoS1;j5}L(anYSmJuYOUf`Q?Q&7+4)#F}+J zF%~y}R~uyk9tt>7=&P#AZj@F%1w~`8dgULj*mKptNya3_nkGC;*Dw}Fr@B^6&@-@0 z?4DVCL9NakB!#=rf`s9=X3R!DS=ZDt>QJ?A%077KSrkzbPI_*jFFqb)IXxK+bE|?%{bh~5rR0m>pkLl{H+Zp=_B!8kBM(11(CWrmb$KLz)`~HQN zODPun?57uRef}4J1;sjU%_48b18b4!{@XM{0wW}${pq^&NmT|gRm@z0gfqEWnB-oY zQl6Zg=$54=EWv~Uqj11xeHks+OE%4x(a$ze3;(w87SqkMNO8Q3d(fgCXd2al^nwbZ zHiKVb$A+^4teU!?_agqr|MNe1=lg!(i$C*MfA5RG-AC1n7dO_|e&e^l^t1o@f8$^N zi~sij_t&#|%!ly|vvpkTL|w{D`VppOKyNyC`K9hd*)$VPe+EhpUQ4c7kS@ zz1{4(1`!ld`l(R6)L`P-YhYZGgA;_EeK_cBIna+JYba``_HeD4Hbb&$UIk~IVzmVn zw8(OgNooWEE}6*WS$@9^6Wm3z zQxJtnLWIW5cG9-O-*rs!z<>Hz|BHX+FZ@rw{@cHSNC{ zIG-CwaeU!ERR@)muwa8e*_9!VN&i?PObj=uXox7$BA5?0ot5CqMJu{pxjU8fS)2PxY1G{?gkoUwq@&{@OE6oJt?aC-{ zH)={-GL5ag^q&@)joh-L+bVxyP$eYGwaBs{c4m>Pl+OoiK-5`OC$zVWQP~b|lp`Z6 z*)uEVf44T<6(GQQAij;U2tJaEYp@yuEr%?{6XDU@j zak63WTvrW$nymzCgUPUQw0%g_B?wyC6GnT*%e4p@*dB7?#DzKxN~U&|X=E=x80#as zY9;y=M$JhLMx!TbbnQ3Z*m$6P5<2W-oTThP<4}tT;X(bjw*K}tBD2oH_S;`Qi=Mn; z7(rcYfkX;s2ov_?g?OjqcrN_v=IuQL@AJu>L@@PLP4D%#rSs*QV3kaEk$r+Vj^p^m zANrH;e*IhD^#h;1zka5e-4h%fFX~%g|JM6o`pxs(UjXJ+zdm><2S8?4|3GvG&>l-Q zHFB)8j=e%R?n600=})OZ6tVV8okax9xsSVNmw&O;oIBq!-(X4M5Y;mW7qdcuBo9}f zSQv&tn!Xibd)?7uYWUzpYmnVbv83=%4hJXZC_de8@Av&L{-yuffAoL;kMH073i=gl zj!%8xzyI(3FaEXv?w>-vcz%9{KiMwZN4l}kaLAf0CtG`4WTTJ_s-HJvC$SXHbT0_^ zMIH`#MsH=D6hVzHa^T=Ay2nYX_=@F)4S3znf*5%sJ1)v@uLH^^FdL^apHY}>NK|vQ z+=ZXVup6X0_(8BArhh(OT=3xa#@DxTvOhG&Xd3=H)Sxrt*9d8mJNWw5>p5)1n7lka zBqg5Y0WeQ=+TfJyLb%e!nUlw{agA$3Wa{&Ig80+xgr?{zClhO%+51(4tUethZ?h0{ z2@EbHK4cga|KF@j3hFivW_%46&%?eWo+W;4Q42!^5i-M#2N}zUTT9y=pLx#}TrO0z znjt?H!<<{swE`Ga)pYYfA5TyH{QR}w``~Z>+%JCZ-EaQcfA)`k?Cm!(_5S_UQHPv* z_n@)}%a`Am{9&$#)(*cWGRwST`u0@xN@e>cXEfI3+wg>E7ckX5#XWhQN&9u<6Gyyg zA&cLGeE4BACv!N;%Wt4?fo+yogyuI#3D@U<^DpM zlJ;_e3>M+EP~2RedV^+0n)U@6cC_n+d(EB!BSU1u_@TWrE-nHEy09DELkbj{3!_Dg z;~FunAR{{qBI=;5U3qKwXi_YR2WeV;3dRdpsk0spD4fU^FK;HW-R<~f=>~d0WKH+= z1#7lcsXCEj#PqfWL5f|0niFqkrH_IKN`l1IZGaMs6K~|WGge))&;_1Co>0YlxJj;f zO%D7h&lCwPnhPV^3(Pt0C~+&kNuk56yVN}l>nD2NL+{+Vfr!ImF8kPhQD(>fyNnUi+D^2>fC# zbo>(J_8sB?Wr5|JncauYKl6Kll2B zSJcG+9)P#o@$Kj5-}^g%`&-}s)wkb%=Y!YpzqmaCeGU&DW}Bt&$pqHE{FZE%ir``t zD|~XpX(5@D)Lqj~v!$Jjz@aj{Ru!;vNf!ZJgB^ z?P55Dtd<#`*1+h4?Mij2$sks;2HickL+O;;?GU>B!k54Fr7!>94}9iRpZ%^+V(ur8 zxqHXtgc*?fFij_qJmSPwn)8ZT&?-&Gp;vPH;lIZ$u^jJAqU3`SuPKWCcBXge)G-ac zhv2!-2iq801m~hWU_U-7f=RY3cEx4PUX3ZUoSt6>%f@@ym>Ia(7p&o%JVJr&F`b(8 zfh}lb4%>j`0_35_jcBVm>&8nF*N6Q{X#Rpc%V5WDjYqi7g@GA2#kiIWjzrrteHh^I zwhK{n#`+;o!&A1;<)FF!W3HNT15;pe%z4>C)#DoaahBrjxMmJlU|z(KJvQb!tOuMS4rtwl&uekhsBQ0ZY@-ef>&h3>ipNGDtj zf8+8Vw7aB??>7F%12CB)ny%&Yhe&K`bK_s4;Ri!L1FoU*dvWH}CqIOFj2pR_kZ4C+ z_Yi~`E7O{;Qh@sk7?w0)xAa{};*9Gm06ZKlgUJg|=IBTR1=%e>o^*cgLwTH2Vqbxn z1^Ut~fIf~?@GG*!5E*&T~)qr`5c;>UI`^H5wQ7bNWJU=vofeX@OsfRLx2JN;9> z;8evrP&atnlXET!;3*ASL=r73|KY$y;LQG{dIC%v&yXnK6b+)7JrXa$)QFr7t@KV! zml3(PS^_sX2ofUr%Le_>-%f&MoqgMgtKC==F&-kWAfbx&)O`et#I7oL>vB-)Bjhxb z2g1OIsZZ(&>jaHtv8yrM8lR*$PdLjZx=J*O)Aw>D>@;*+f?Ji>TBT+3-yxJL^)1I7 zx}SdZ)Usm9vQGTS#K78VofAuMy2LIMk#|g`{HHKn*-R#2Lp8@>nANnD@`u1_$x;R;{ z!>XQn>x~z{{WpH+D*)K7N4#Y=mAI!AyFCu}-~W<~5eQr&5-R4$3=$;|dU#toDf~lb z+!YFwG>&xCY?d+2*kW9S2Mw@uhwYs^3qWXt%|0Y_v^JNklGG24H3^P&&j-vKoTm3} zl69NLIn%}WKX`ui!5x?%{_aozu|NC=KKostoO52?`+k3JW+$6Cs~}CNC09t(^Cg1D z+;I&Cb{%;#;8GhoKE(;W?4iRInb6VzDn%^l@iqz6Ishj1D0Q~Mas#MVEG_uw%6i3! z`dy?%iU8ypm|Hg;1?z!;t2Nq-dL~2#a^{9Hz| z^7?&Gau>ei+B%ude6;?_PMftywmrTiR{(UD_N?&4KO<>k4mf=ks-@Ck;1u-uzRA&^ zpF|iY9gQ=rIR*swZNAv(H0&G(;F7A#4<()oq3v<>cf7Bmk#+R1Sb>w$2heBZc-C zJNP<2jkeV#-11cr%8pGqE zR}d!)Z3=WYLOZ)dB(Q-51m(`ib~VYJ>* zV%46|bg`~9@f4YAI|$lT3Xx}{r#$nYzVRajtYyd=b0b26?m$j7$Hj{|0gLcw!YfC!ZoeE@@Uw1ltiuR<4(xsMaWodKzhK39 zs*V)Zq^=;zToh!gOLAE2SACbmYoV(x_jIM7#bm+cOCOB6zuEH|;(s38gMJ;8$k?Q* z=s((}+PEVeQgfl1UN-VNK0w)4cc)88dsZ6aR%t3$@P^}&MzY1+<}ten9m|D=vFybo z)DI`Mz`dAZQYQg;&czJJV4K4B zdi|a4fCrHuM9O92ZQ?A&69!V6OP1}oG2g>g0oa{DWv?=vGy*Y_I_cZjQxbf_fi9AD z98WJ^K0V!@{C*rZ>Xha>%_VeCpKm=cnXW z31q5GmfTM$2AerUVNG==+%E^$5u>RI4W!zWY$Tiwl^pA27drTZ<>i-D!G2dD-EN5+ zV2E-%J5V_9cVPZMfAg0HH9gra4n?rGi_hQwQ-A!QLDhulAdi`5x4zz0fkC*5rWwa< zFssh$6j?!YZ55G;7+kKD3qo@EbX|#=H>C}>AzfC95kdbMSM+2?8U=Xj;$-P~iWP>A z5*XYHTwk8A7~k?Lv`UIBU@m&mVD>}5A5Ow>JDJyuNl}UDveX?@bm=J*V_j6m^%G_y zrAD4j8LN|k3nnW$vo6JUrR6xaCzFgZ)0g1_@m9?CRdj}%*&P(9*&j0IYbgTLChNY7 zk3P;D_{v9xM5N3APvK~&%GfatPp9PB;;>x*a3naecrP-ANmArT07_y1p=sABn=Hh^1s{}}v zAl^2h0*;7Gph2=_$A>GDn4RlG#7DcNZshS|194@62IHnfj+YQSnNg89f63_lDelYc zC*j<=k<{h;;1#)1R5$|T+M%r;1CS1vypmIJL!1#zs{{RVr0gvT^oi*@2;y@;@L8Vk z-JkD7?+zFR$u$R#7eDv6e~C&t-e;OMC+1p(cSXt5-MCE$?OH(W3s(5gf{h>m5Lv|6t5`SVFKLoy|rP{2V{vCWQj;@ z-ps~UA7I{HpD$9|N)pR4!){>4P1Fb%;D5Ef*LGA)9P~^U5I#Kc`a=U}v4D1g+4%sk zxStvAS3nAO3^^fxb3ncg@d6^#%mK8^JEAhSO+w`#f;sJhCxL44 z#5)sjFiV#bmLX@>n(8$jpQ^>id~k+_>zo-D&NnXSwV~!>u?ZJ8@o>?J)*#-*qv4w8 z?3x~)te!bf3xn)K1jaEHIygr5;H1L!HROZ#7y(^T++(6I64S>HoaM}RgOyyzc+07M zy60B<;M+lizQ>;$0|?L~K+yn78woTPH`w2%69Z)YVrsqykzEF3M4&V1!Q;nx=L~SL z`yAE_V1DD*zW}~G4ugm?vg+e@yncQKeBzJ&;m-jWoYHYHIq9udjd7Nru#rym<$%f$ zl^H~H8ii~3LT4IvwgV-uusq0*kTo?LnYFW6YFvM`k3$~tcoJZfo~GhEW_7>}bQP{< zFUMfbnVBqr;3Z*zIVbiG zi3a7-JVvQ)G<*XEYE-bRcVg%PZgN z*^@CY^kdqePtMg^wdXAWjT!ZtEx_B;i1U`b=_%u~ZH8G98vSFnt=v%Ry?;e9}0^w0lE> zVK3QWPG~%C&9sq*nvTZ`0a-3G1JTj4BFtGU_!&vOvqu3KpZR4zHS#IpO z?EJO@+UYloIrsAu5_y25nYG!0V3;A7fA(z%;&ZuT%VE1ev)ns23Vm$`Ob?jdC4h4< zK(YEz71=-cM}K^t-Z-D1?_^_60*3+J)6u}~=YH<*=-SUiZ*n-+(Y0lyi=#tXJV79H zVq^Nk=3(N$6@g`Vvzm2+d@S&RWjdFkji(N9H&Q8L-y(WK!>CLn_}QE_7nw2`m$kNM z44U8Y)(eE9;gXw+&S@aWL6t?el_QJP+GudKy3ccFaB6wQefr)i>FB}T$z4Nu!jisi zDUd0W4>x3R~4mLJXQF zq#powHVjU@$Jq34mkZo=DRx| zJyZ;X$qxcBZ*J#qa$2U#2W)6FQ5M=_JA-88QlOGlrjTZs(uyEiogXq2hr3GHk_88) zS2|9zx}3fXj&rCRlMZOzHdfoZwpvLXj(SV5IOR(W*_8Dnz5NIa zlvFF~h+~-5O8#1OvhWXVv@dlYJoOgx##~`Mbpf6bMh!|Vc~3^41b!Wk29xI#%+wsL z;vw<6Jq^15?k{}-b!#DdW>zQ3s^@oKSkbKD#xv3}X_|u`!2RAl8NE^kkU0wHBFnMMAL(M`RK`$DIJJ3nZorL#s-X z4pDJgMqK7Vr<*2xXO5Oq58RD$xX`a$Txeo$&2lbFUn*@QM|-U7#m2_jV!+G7F)ln^ zJbv~<^miVN?hdi{#&)OpjUBbe-L^WURSb~=b;EChU}dzo-%p6x9EQFD23MMa6HLgY zEak0i83;{cNb*DZ*@}UYlKJp2h%p^sLR^?F3a2{iV~twk4$h`gtV#5A3@HG7;**~Nj#uX^ zl|X{PoFdF#4Q_9L>^BG!RQw`Aqhrr1NWcmRh8C1~(Sa#7=*KUyePD$(*9qb>1MtTEmN z9c9#$WR{avpK&wpYO@~c#~JPLQP~oYb5K6Nb$F9RoUj0bv~%$TueDjDz)LJ=255DE zH7ECKlxgf^BQ-8>%sBhOu(eaBe1y6uLHG^%!dbWpn8Y%~kXq^jH*g>mx^L z#{#;D%HG5eURUyTZRU)sRB9~%Cvt>wr5!-`irI`f)(CxpxC0L*u-kNncYzK(5dUHv z4NiJ*0H8BP%vvP`;!=X)6{|2|fUnJ$q~JUnu_(RA2WT0j`G?qjEduq4?4(08=CM%r zrc9e@dC#s}z>Pzg5GrKU3NmvxF}_4BUEQqmp9Us}ojY3zR{rX*{>F>9-tP0%WvE-C z?_D*o-hai9z4h{T^xO~O+A5%?%He-hKL+YTGuQtGv}~F!Wl+(@xIb2{?KWSgIw9xE zqjZHK&FlJ~3zaIM3@; z(PnzAFPdE+AvY+tRHg`HLlA#Jb5hV}%NUh)jL@b|w-^gtj5}@-X09HL^a^}KRB^>t zCe+sGfg~!q-`WX*7NPIuAw!Zvd?*^}7A-o#Rfa#h{1xbZV3C0vldtb2u>-Q*%eD4v z0i6v8ku60A&v|9KmLYXAa&2@&TpC5-pi$2?Of;blA3OgJ4`xu`77(TVv>|G2l$=+L zq3|#F0s>3IB2#_8BPHdjx6dTN#CDkkOO-r`=~oy8WI`wQ*RXfsQ!z}RJyc^SxgcC7 zlt6a+#H^XX)ZYpFNa&4~7PDoJKCdy&1`$=kTX75^9OCmqy)U3-?2(kikSZyZKNVI1 z(<-FmszSIOTaB@@Z3CV%t7X(dM^>rRseCXCX^o#5m9S!<)Uf1`K;lm3tD-POow6{7 zJDEM~T8YKa1n1cMI(tq`evm=)2JdZcu_}$<7G7HD? zM0EAIP}S1VTCn8F8i1S!0ZixgB5{8>~YFQTYJuq>p5 z4I4c5ROb;0cYV0NdtLNG&V4$YzudkaQSpcIy}_F=0|d&m?T15n2=Xi!hml!cirMzo zVOwFbEA1SRMaAQ7u2Hhi#jX*xum6x`9vm?I%WC-2{h2wyG0L_6A9FEd*49odxgeHH567p0B;>gaaH=ywM!4&T|5jou+Xy!$f$P z)~F2K9Bq#E6~werbdD-u%^6BMrt|qLW^tUK_XE8+*+x{zi)na_bMar4aEsaN7&;m^ zt@ugWBv(?GUXwcGMB@$ulV3ESD-SuwZkJ;-3Y`avmwFkGESQbh1v_EksA*Ks%A|Ap z?7`Wp2~(hU(t&NN4vsN%)2{Az|B*19b_BPB)*7}`GM0sFNUuyBNL1Axv!vRuwc(P< zw^dQuaSkoh#0?z-`i z;}MO6+}*?VS&tTHxUy6DO$>e63?Vmds&0LYZAv?3CoS`C@Cm^wbFmwA5VN}Uoj$Hd z+m2im%{V1qSV6igDM0RC0@o(JWgiAp%kanrY&K(fMy3&=t*HrjIlEGIZ1IL3<5S+X zlq1x`^TWN>;;Lp3X;$w9wOncT!0mUkFXN5_x7R2fV*CMzLSI=B9LtKZ1^zK;*awU=B8FBeb6s?lbg_tu=iwd7i zgw(|##w>f)0D7(JEP5UPSI5uWX6yN8B??v~I)!uO^tI5~S!4j$#Jg~P-i)fCyq zX>^~1`S^Ez_x-&Oj;E(-c6T+kY5Cq=Z@=^Y*T2#Oq8gk!AXEcr*)-Tbyq?5NXiTS9 zKC?=R0Cvm{Gw0~|Iu-hHgAu;H+lJKh_|(ZOp{G}U3pLaC_KXd)gxP-Q$iFutnN z`8B%_MPcmt50RrZJd;OrM*z(DJo-JWP7=>MnadHdFi(byg#mGAVJ!vXkU&t*4Z_yN z}O87GEcLv+K4W;ovyG#bxS{2bK*4z06yOc_lKC3NhXN zh6Ai~cpS$o;MF(3 z_SRc(b+<;pbdyy;p{n2e#;3mLyV3J}zmK}wSdX*d{1lKJKx2J}SfVE$c;*31SDb|O z=m1@wZ#l>iSkePpJ#Nq(3DYeUv797D>EKoN(mB?Ww|$J4(4sMMJ)+Elk&*GJNepGq z5YBTZHMz`%cQ|%Z2nlC`PAhK*uKEsar3H|UeC^0m2O?vAF*S6ZF_v8oA!SGA^d=TI zT@~un)2Z1F5$z1}WC%)h@Jf|m-GUP7DyIY=m{`BNxK>kcV=HgP6}oCcSHIeThCqJX zsTsG2FyT5gqEm5(gwlx0BO;`FfgyAy|F(w`Gj0(Pwsrr2y*9B_hjAB%ZZD_3PyiWX zkHau5tK#5e5(7l0>=E2kW1w%R65&92y~D(M@bsiFRe$CXCZHxbQyDoRU00Lo2MGl_ zp{G8R`*4GOTA9oZVdN*2&*ng9rl7<0nYYDSDtlKkY$#!%V|KiVIpdH9bA6Xx<<185 zC-`Xe6?TC-^095vrPl!iG}n*|)tv6OMmDHA)i$%E48XCRuCE?qkHj_32uj&;&8a@e z6_3|Gq{fM7@6!IWB0tx?mwrB;P8e?NkO6?zBNkD%uIZg5LW->8xOWfueLwUA_jlg~ z&DwO;*}zow{q47I=ldVL|Edc(=YGJ8Mi4t_9Jk^xlQXz7t7L*^yHg%E#HL*_1000I zsWRf6v0w0XiyGh%af3d}>(6A@HzE&8*GZh{=6O~N{ZB=HwmxUkpf&J_AvemFU@06 zQ3Kkb-OzA3%&Y!_NR=SguEKV7!vDbKFENzdrYx)RIP0WWPeqarWh-&H1_7{vw@;}g zWtPa2F=}JKxKGAl#!Sia?)`#9c_w2!pn)xjs79)4)iz+lvk@H4`H|Vyaja#>z@g$r zbMODm8% zh9O6xfO8Xe^A9*sh+MrSI;KiE1-n)$VhjP)USh0aK8^WNv1|&BEH5*$5|&$Tz@J-D zuZLZzT+Abr9RnOhxSy{x*#yT>#b5*V#Pq1cf^+3LtWG`x?m4)!bNte?%+Hc#C1kcC zD1$bnv{h-Z(t<_MH~K;k)oKbAsqc=pG}T6q=3GS_x9w+D zYxxgdz8dX~lJ&K*>i$um$T-YHptL*Sb`1PO*QAe7R((fq0pvj*eqx`+WEGSZNp602x?x|@XDWfyEM(Gh`dAbWB+L1#+31?R4;tCihYa+n;OhH7AY0fFO%>rX; zQ#X==sSsT~gM-0ig>af?0*$c87X~ok*a%M|?kL$kpXmqf{qkI$GwsaToS|cBXlaTG zL1{>Mu*DdotuX%k@tlgtfw;p|iY2ix$5*l`su=1XNX}M~?PNL7;2RaW`Sxv$nxX9> z#HdwDZsQF!MK&ob{GGMHP|=?Wz;zUcofJo)N*P0S+Zv-fzn8au%s^H7F~&M7YJ|P*I+lomrTOl{4nQmJ7%Ge73itaR_0rG{{BXJb3P4sc5 z64}rRXl7GGM#I@5JJ_6HSzVzgXm~CpW0LBj1Co=O#FbJ(%QXWm#7_A*480^q$n=&y z;M(#(y9!;-l#=~<;Y$8)c1kmeX^jX#dH+yQnJgSGgkhI#J@AkEtI#p)M26mt(X^3O z3#!RDL@lI&mf$HZV;s+)q3F*N`YC#XkP_@3M<}%Q;7we|gH0Dm3Ie_ZBd$0_KZc|* zjWQ;%W_taU@vqxy)&f_i5zUmFfBePbFcGULd+8v=->TXCYG+gibu6Xat9SGE3=&xl zW)^R)5f~18#;s0U`4XomB4jW)aB>E7&YZ+OnG08El>LRnktplfmoHj@5nMddYT0m8 zj6{cT#lATZf4c(JFt}pMqx@!;{hC4ZcmLt<0{!&jElptg zW97-U^q>dT0Rai%bi;#{V6UIqv~7OY|2Xz&vmffmwDw-}HNvY%VMUi#WRkT2O|Lt) z(^`Ld>hug){he_qmAWA~mu|sUKpnLGaFz~Efyw4r{mX=lWKju%{k2qQ8?J1qK@Te; zM|-Kv3nkyLCwB430AY`36Sl%+Gk}1942!fb1t)uFFoO#}ki}dGDYaE+t6cvM@814=-FGQ`h8Low4T-t(g)9v+O5moR|)X%n)G0_ZzUeP**S1@w|RF=nd*h%@Yp(bcy zFsN>+f=eVA9=0FuJSGLGa`r%2q+D0id8z?+8>&5U_}MX3 zn9Cl@=6c1FSI7>5(-_Fsz{Ogsc5xg74x62pc5lkDzM3LYoaDKl+(f+3(NhBr%Q`u^ z3Rr_bXiD!WKWL3=Ns|9nHr{7pO49sV;F@=(NP?l4Q~sZlLPQq#T^83@X`6pBE&&$J}m-iO<8-M z$vyJxbX<>sOJ-HEEhyHbADa2vHJmLO@kF21V4!@A&Vn1Cg>#~|!8waDo}iin!JT=k zkGv9tvf0%J>WW|zZI);*#kRG#&&C#=n?wNQ%kOZa8`1o%#lB%#gsi@ zSmTj~V})`A;~{hFy={3;yK6+mq^h#>or|z5Pr_-hCp9v#RFo~OKiroFzh#>&NDyZO zL)Gz0`tvCIniiShY7rvn9oMn!9U86Tq4rIvYNE@NT>O6jEVv|D^w4ngMP=P~B~^lX z%fGzJio32}DH*l}QJ3zy{+FgHwj2^TqA8p}!i>-Ck@8eN$xFOl$}ca9+12YRZ z@@Vwq`GeYHpJRw=zABCj>e$Hqd82=yq2~#kY#%dngG|cPJDzWQ&YAo49QWs%uHkJi@wFl+*GLlT%|lELHJqUeEljbwvgF7k;o;Ma+8QKL_NZspv)Ih+hBP;w zuex*uX_!g~fraJ2POk?trro<~o|0Fz#KYJ4^*vT%fiNC6gYC*zMU`?*;F32W-PrZ;sHyPBYZ zB#-guEh^o*5;sxXF8SRw(dNueTSdVvTQQd2`M8jgq(2tz^JKJ?=4O~;44PW$b-N2r z9U16`&P&J~an6vaNVN zlr*rV>F}tDr`^bi@#JKpnC-40j?E2Tv7l?l!U7r1lhm-Y34)oe*@ldm*(z}%vMUQ( zu@npKD6!cctl`rMx2ls9f?|a-F=Z(B2n9i!$}ILr+_C$R6sd$i&hcK3OUdbq=u$keB$XkoOmhM=Y>%q}Q_-EZ~xk_e4z@Q zerDaV?5Uwz+cI4~c-dDg>$zqNLDP2pV{H}1LNrwIFyS>G{wFn*&nRp({D5b3M$PZ2yOj$i}^ zXb}Z6*@Yw;)ABy9OsuFAY{f-p+K#%Cz}h0^(F23y8qryn$}j8iKTi?B%~fMVmzuFU z`MYg`q%2d2920JxnSId2G$3)>6m@YT#FP}mqQyW!$`e1O{D9>koeaXJzeq@KF{xE76e( z!_eh=6q`Jd5{fIw)<=A`#Y!y;zI*eo*0GCX2)#?2&faj+hQ>|f!z@&)8G%w8yD+H6 z`%I^$frX*#Mh80YG0Gu`M1W@?N?gZ?@)@ar<$Y&7GpTdYTw7?E~Wd<(ym7dl_fH(+G{UNOkV-&@lBW#(L>&eQSrG% z&reV>G@00vW0lmbLm2yVxJEZ1hWYlRkLVD?^(Epuee~P^ZPXD5LW4&yY@;j zm0b>Yi&ez;e&b}RIao*RX~<-ZGNQ3?Gp0C^0#Y9% z5t8xoDcbNq%pgKo0pX09AVZ!d+-9Kkg32Xkaeq54uZ`c z5$3QQLbW+aF;7yqE-X(E1`_8!`@Pjss6|Tc3N1v{QyNky1!<|`P{7X z1)x^_vAcuYE|c(JvykG9M1;Z|_7+Nmh2K<%eylLeso0}f5J8AC>sVyNipvh^*!tlP zb2W+Vm+lDXBt`A;auUCaR>;^$4d_BG8#-KIWYy8DYeJ$+n97kBgCV`(Lr+f2l;R(9 zg)hO`#rea3a0!&7PfRDf--Z!LB+EU@H4Wp75MU|^SkUVg7jLDQFMz6)7p8E_-+>@_ zeeHoUt2p`EUU96mOQB*92PcwX<`BGlUfRSi8^Gv&LwlB}(T9O{k;sV2KzxTwVyp=s z0N-w_cySy=eg5;mhJJzPXTNq2hUYX;_xD~OFW!0i;>`i7j`r&C*)&+1jJcY4K`OU?P-?U}7$ONsQ8Y8MVauT%A$RX?%rTWu#+Y&d^)>V(2*m07%5U!A}&Hjs-HE zYlg)xbFumW?*xy1xXj}!o0NL|f*Jl^#x#I?jIBLp801G~kdlv-+qdgl^w0gmnXNV$ z!2Vp$)I~*UgwRK{3#qMI5wywOTQ_D!4(2D4(z)CXIJ0Ayfy|cB@r!EP^U--FVXl5P z60MZHw~$DghFu!6TIq9kMp9@_2m9D)CRxzmU|Io;XOLNv@l__#{3Dl{pS(B*`!q~6??X*B$&S>KK^Vm3#@ayF z6sxz269$om~tI25+TZ|l(P(V)iO=9mC1apAQ;Y^M8ACT zgf~9yJ(V*pvQ2p@x zVE0FSC<<{=BPZZ)Wegw^05LC|aQWI;W}~hKX>dbBebh~F`}Vwbc%Bfo(owxfReyNF73rA5*YZu1Tn#;+OgQB1!&`@NhUTM zPut)L5U$#$$gj>!-iml23|K&=IIWq!meX`>gct{qx2LCS{Q9r`&h71Yl+wox4+BIL zU%mhS)0=OTGkxcAE1|_9FujeFOMxU@3sN%^uExn(&2hq!yf|(c#a}bFM;0LOqPNow zOrA82I>}}e9{;#^7!q$}Zu&vX*O+3|ZL9HRA|EBXvcEIKR;#Utevdsh72#Q>8azVmn&?pINKTf)CUV@YiTNE z@<9&DIXk>2zhG;y+G*t7>;|SbwSZLlB>2=wDpfV~MZ+iJkk0tUY!P(Uv=#TC!HMos zQr{T|KibxfPeNxq^%~2{G>0u<(u*aRs@GNF`HPgi)>NVboF2G0Mi;(y%;jOM4fAUPSnJoSsgaq z6!?QpZG3Mf%$?~6=E&NWka;eXEK}C$i=4CUez~(=AEnenJoY`{_D0!m`dZ{fKjg&Z z#yZdY>%Xow@-cg)A!e}rD8>ZeJ9v_?tb}+ zw_bhiOTC-M+{Y|=0mS#)D2>s0%gLQ%O^L`OQK($a!|Ok4Wcw3>(7JH4&m*jmEJqom zAQG7R{?M>g8^v&x37C}kC>i@Ow$TWImyV9B zw5{_p)mZr^M8yYuJm@|1|L4Ifss=Vy=VQ?y(N>19kE`PcQ1{9D5Zg{B>)7E<_17CT z;~~hS2zDei$U{yHB!;JexFMZ?R))s)kWR4=sWCIIT~g>aRCRYOnFHN2l@UCu7rLyw z>m$uJ8-?NF4h$Lk>iyL3%Cqk$LDi;AxZ~*&1icVq0HP1O&&APk0Hzmb=mP)6C4i?J zaE6!mc-7OxLUt7ddH|k8QUByZ)zaQVe%)jcSe_X4K@m?p~0X9V@;#&m#$f z4y2VTAi*)<=wvK1i8bS{9fb~1<2nZ$&LPJWAf$|*a|I3#-w{_{BX~kw+Qnm1#0Hm$ zj$8ukXErkQi|SAVgB)n*Cx^RQT2JXdrm_J#kf7XSG*CPGK&nk6d|5e>l9_tu^oXEI ze4q}o3E&uvc57S*CFZ@8qA=2t5n)OyEY*6_MiZyBIfPH)0Gzy?1lW@BFfXUys9Uou3tC>%md>jGG$K5mF1 z3R5a&#yC_V$vN!!1R9{jb)1u(!qPk|A%d**{boaFcul2U<>*OpEd?)gew_7~R>~Ev z)x}63*Q_&FXI}_OIMIEa%U6HV?#M685kWhM=f%;OszkNkE=s#T`d-vgsoYn@XC+L) zon}GhH)Awot{6^il}inHl1l-!PS#fM9@h$#0e^fy$ud9>$TiWy5+YBIgE3?I0i=5j zGh4Z}=5Q=ZHJIv!=3`J=5dK06){*9 zBg}PvGcHPSu(juGaQhH!!oi>px|RS9T~Q3Hf|>Ls*pT{h$HDT1{FLzt%w>WDTw7x4 zC7)ZCz4p>DO6DFGizH1S@REed`7*y>lt}Nb$%TM~;$idQtX8XF+v`aYtEsD+d0I^B=$?uj6WAm2vp4KvD8R_rWP zk?-9buin4Cb-TZM#RYr>tBxD-?$>|fr~WYx?)S6KXKD&~<}5&AqbCgHk22)IcHk0g z8ig5^*svQ6R2(RUBrcGQ1rENuo^yd?ca0{y_t4#^38yPqdcamqVC@scnO-9->|<@g zFxh0W?M^ZS=ia0AuZAjS^EjzB)DUPI{faA*uK5d_V6dq2<*|&jb|{ z$R&O`)jsw{3TGm)34IOdhT|zh7AUz56S_xD4wgn94`WmAi<8!*0$@30rUVLZuPM074(paBr6skSq=Mn$!MfaUp`2E^JrU zb!_nEpY*N;UHIyn<5jaR6>JHGdN%*kaH*2cS8wQHMJpl|a)7ad@o^89CXus64Oho@ zmd4Ks=$ud42BD|Tl?}TyqGKsNJK()5MoSgrdaU4p-smW>u%yJSoC3y)VmYp)O3q!I{VAteiwy4&zpv0*k?@X!|En+&kZ6jwb+Hi7G>Fm9s{FY zTk2^N?2~768fRuL$ZjA20R(x9z^x&1_G%;_{8XZ$isQCE@eHYLdV;1FAIvsG_Db#* zv5w3YJaBq~c~RgT{?`2=KW@=MEX?v@ozgmPW3vui z%_vc?sdSmp$g9{ewb#{ps+^Kl%L?aJ(-3Q=M>JGstW=QCwPX5B*#LJ1!~n_oP&F6| z=3AbnIOsBoYiE}Xe~j$d#Xdk;YmK!)rhOwUVw*7H-2zxM$_PM4Fkdh<;Rd)4s-d;H z1`0+6BP-?*w1JI1CqDXeao%lG*Bhw));YEyZJ;Z?I&=+B4Jp}m7I}>mW+tg(f50H= zfp)}%M?5!NHxX&d=-YrqKYpB+$+MYJ5>lar!nmXbra8@|ae@tFw%`PougvOeO5CPn zh-(0xj<|U|yp$a{5|#|;e4_A{aGoBZ{FJn*Pde2oEp*OEdvouU#~wA~Czex^$@5Zn zWacF}86qxg>>ec?ssTYW{mQG*>Mye?Nc>K63b*@t2k?c@|2m%EdwT0_O}_7*ZceLB z`9Qz>Q$O;O9C?TA^pAnngdWUMVo+%#50t=&4z^zO@(5UcnUqV)w-08TWkl*^ zW|_yKe|$wi!Xh}V`@QrBgY+Jc{~}OA`%DbU8kkBVtYTkxs)_~F4wHw@tgLMGLBt<0 zjAzs?1iGBGv@i3xEK}A}1rhXBxr$hV@tN=W4&3`Z`>5N9s;@)Kh;GLdaQ_=W_lp4L ze!g}jqpv#F7Pl!VL?5;sv)!KRFteboCr;F}+x>=TBUw3mNKQm5{~sZkbt)VjHQXKn zB!)|*7DT3p8ctW#ES~Yfi2+>7PGq9v=a^j&d2F{U0u9weh56vu6C0c zGCOD6z%q$$MoT#76Rp}yNB0wOQJa70eW^rav9-qyt#ZuU3Z^bsC{ypOHKv1FTT{j(vqZOtO82U`0(gfP zbBQIi`Bm<&g_ly%xF_3I44H8KDY$nZ#l2*7(dQb~ESqxJ()r^V7tlL(g*N__{k}FD z4l*v?ASVeoNtvd2&oJe2mAPC#;tc4}-DG}X;D(7Il{rjnuGe^=5|Y?$^eCTEsS=QX zmyhBU3f1OJ@vC3_B7nIa;K5^flxZy$&fn`(pZWv~U8y!w+bi40R4DJsm>A~hSGm|# zCWQeKL}f2gj*7x3cHQOxS7M`FMb4L3RNir2{<#HS~cQ z!(kM;AruY0Q1A=fX&(IWyjj zhI#nCS>b?fM5ShEaa!AdKDabJbq6!0982OtTrDEd;@NO`3Zy|y)+ZtLU?F%#9*!&N z?U~d3mABR067gY~-p!CkjD*TC+e6bZJ3fV`MYMB_S)awL=*RhMaL4Jace3!uiQ5uM zo%-6AN8{m?C;;t}H_oxRy+u!}=UqPR@r8jMDp7J5^8G6z}1upC;E8Tq`F`Ir~wz^x?4gEX)qrYmlDO-{Io2}UA; zBg|kh0YV&Z;Gc3hlMj9=;^D=OHC8Z~eYMw*?U633^lf%?`BGS%MQ7JSO?6yKgC^$P z)@?8WGMpZc`k!Q)$I-xw&??8wc!oQZywVP-OSHIhH%uyW6C9-HO>i9d(W@hs0v1s8 z{((lS`Aw+g!w_D?zI%t`0zp4`3+0GD^2(QF-h{}!)a9gKFwH1kvIABIqow@i}q|y5}=5#Eg z#-WJNfFj+L6l5+)wEkv4k%Fq6F5rbYR&8K3uuRrcuVX)ChQ|IdSFd4UjyppFSq>J) z`1P`{h1dKM8KmK6KBNjmqRYW{mlYdDR8Mw*a}kd$D$W59u&jx*GL+RF2eR6;#a=Lb1OVqWQygmh)y@LD|14gm z3-)v79R*jI!7zomS_RZShO3Q?2%AXcY<>XVl4W!@?cjTF-(fm}I;Bp2DCjkzAr*(i0G9wvJ$^$=x$U%>wnLJ{gFOh-K(f zF#{eVe8is0Lw;!Mqz-%((dT1&XXC0{z^KVm2Rl~To0U1!Nt_AEM`{k;s8E!LRO_^e z8EwqYCLF7Ayp+7ii4DQ9NGq4V*MVR$Kds02t5(6!Oe9bN$aI+a2QibBc+XIb zN^N!<;wKDF9GGn^GgU#a(#*?4k8&(yGcPNH;C+K@27=o!Z{|#?rkNR26XjjUwl9fK z98r_lW)#Ded`)mMgFs^H+)J3OvRBQDMd(GG7j%eQfpiw`?<6rh$3Fh};QR*)Uu7iCG!AwFyN@~Bdn|Byben0~viG=c6Nv%_3BX1GYk`6; zAnUak`#R2+7RvBNeAcVMm{P%}e3b%_z^?p=E`EaCY=)Tsp;tVBOjX=%eb%3OkR{Aq z1?s)F>1teFKq4;Qw%9au4D=}-F_?i#91-*W=myZ4j;8NcE%ZeA7a%}| z2hm9RYY&W@-8t#EVb#_kRpIK8@>9SYIw<&ZxjUP;HS5^Z!WurnrW2V69?xi1V$g^~ z$OK}lL^xxH;7Ch1Nn0}RhB$6*$z0DqsHumo(A)#!dc-m;n-CzE*NxB{MwqH0%q;lx zI=1hCQ1a|2>wxX*Vk+aud!|r{nrPjG$K!^R1lEXJe1TzC$Jrjy$jD_%6fBOGvnX~|Ee?0Du32I#5rHP+LM`q|pt47JxtMR(TcuW%yvM-lEg`xoZ z0J(-+SYo$2+IfzWJAV14$^{2#S|T6s=joW9MgX*IHvnafG=YD6;gH%d!vX7zN2U-1 zZlM6p$4`)lKOx?e8lFAASS5Qfjc^~!oSqvp6Xl@lZt7rID5B^;%0 z7NK^n%Aswob25VwPaH4jbAr9GJAvjyzF8=9uDdLt80?XUkl)bNY{oFW=v-rEk#Q07 ziWmK999n5yV1k7;HgSc7B%^GqXr%zNekelcbT=G>I3DoZm&Ix_FhrgA_LJ(1*0+1G z=Io9-bH$*xy2)V2!pz|4)n1Wz!WpI{;Gn#I=sUj)$L)g;K6n94pTzx;EEBljQ7`}g zuY3`6d--%zt*h)zm)EA0?ugmcqk$&FlUeSV+gnu=$Czj3EJ4oA;`!hq1G*fPnnXKVgIlHBUN`T^>*J7M!<+*VfSz z2`2P_y(Gh|4m`G7J-vG%%qs$yD2*ow&DwR$0Ov#bk@=Xg+;F>(wSr^*O`j`)*rvzC zG7|ts)TyuTUhN!@B@gtx_TlOiI<0((v-H-oRb?tY!xMxGW)c8N#`_BI-9PHH1o@_4|qdUaStpoxN8 z$LUhfz0CMk25N9z7GP%;aJfj*4Jm+oyL~FsT38SBa<0D!-^Y-3V;gIh(-ONi)Qfq! zTtc87dMlZ|sO%!>N4A-h?L1sF#CbRk5`_A*>Ut5xjM^JYE-cK*^J9axS=UN1J*Qws zURW9~iUSm-^x@i2C`xeNEaRku1xIDLpvDtUSP8Y(Dd?AX z>pKU>Jk8ASeEl1EdXt>ntu*v}?ofC3>*rT|@#0f&yn%(LD?WDl3%NZ3WB~OwAaX=l z?i^SXv;9g518h3Asot;X0mqu|crhM{axD&4w|M!uXWyy}^){1pkv|s{k147Mf#33C zh#~}VR|+-RH&M9HTQm*4;WFjfFF@#Koi!SK(8IdE{)i2w=9y zp(oJBIK>}=3qdMIwU*_+VwgD$pX4kg#am#LbkE{V_a6F#B8>@79?nx^reo@Gx8

    )u?y@7XkDFlyTPkoW{>qjnArhQ#F3eH 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 literal 0 HcmV?d00001 diff --git a/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/main.py b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/main.py new file mode 100644 index 00000000..6b809e8a --- /dev/null +++ b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/main.py @@ -0,0 +1,255 @@ +"""Entrypoint for the Reachy Mini conversation app.""" + +import os +import sys +import time +import asyncio +import argparse +import threading +from typing import Any, Dict, List, Optional + +from reachy_mini import ReachyMini, ReachyMiniApp +from reachy_mini_conversation_app.utils import ( + parse_args, + setup_logger, + handle_vision_stuff, + log_connection_troubleshooting, +) + + +def update_chatbot(chatbot: List[Dict[str, Any]], response: Dict[str, Any]) -> List[Dict[str, Any]]: + """Update the chatbot with AdditionalOutputs.""" + chatbot.append(response) + return chatbot + + +def main() -> None: + """Entrypoint for the Reachy Mini conversation app.""" + args, _ = parse_args() + run(args) + + +def run( + args: argparse.Namespace, + robot: ReachyMini = None, + app_stop_event: Optional[threading.Event] = None, + settings_app: Optional[Any] = None, + instance_path: Optional[str] = None, +) -> None: + """Run the Reachy Mini conversation app.""" + try: + import gradio as gr + from fastapi import FastAPI + from fastrtc import Stream + from gradio.utils import get_space + except ImportError as exc: + raise RuntimeError( + "Reachy OpenShell conversation dependencies are not installed. " + "Run `uv sync` or `pip install -e .` from this project directory." + ) from exc + + # Putting these dependencies here makes the dashboard faster to load when the conversation app is installed + from reachy_mini_conversation_app.moves import MovementManager + from reachy_mini_conversation_app.console import LocalStream + from reachy_mini_conversation_app.openai_realtime import OpenaiRealtimeHandler + from reachy_mini_conversation_app.tools.core_tools import ToolDependencies + from reachy_mini_conversation_app.audio.head_wobbler import HeadWobbler + + logger = setup_logger(args.debug) + logger.info("Starting Reachy Mini Conversation App") + + if args.no_camera and args.head_tracker is not None: + logger.warning( + "Head tracking disabled: --no-camera flag is set. " + "Remove --no-camera to enable head tracking." + ) + + if robot is None: + try: + robot_kwargs = {} + if args.robot_name is not None: + robot_kwargs["robot_name"] = args.robot_name + + logger.info("Initializing ReachyMini (SDK will auto-detect appropriate backend)") + robot = ReachyMini(**robot_kwargs) + + except TimeoutError as e: + logger.error( + "Connection timeout: Failed to connect to Reachy Mini daemon. " + f"Details: {e}" + ) + log_connection_troubleshooting(logger, args.robot_name) + sys.exit(1) + + except ConnectionError as e: + logger.error( + "Connection failed: Unable to establish connection to Reachy Mini. " + f"Details: {e}" + ) + log_connection_troubleshooting(logger, args.robot_name) + sys.exit(1) + + except Exception as e: + logger.error( + f"Unexpected error during robot initialization: {type(e).__name__}: {e}" + ) + logger.error("Please check your configuration and try again.") + sys.exit(1) + + # Auto-enable Gradio in simulation mode (both MuJoCo for daemon and mockup-sim for desktop app) + status = robot.client.get_status() + if isinstance(status, dict): + simulation_enabled = status.get("simulation_enabled", False) + mockup_sim_enabled = status.get("mockup_sim_enabled", False) + else: + simulation_enabled = getattr(status, "simulation_enabled", False) + mockup_sim_enabled = getattr(status, "mockup_sim_enabled", False) + + is_simulation = simulation_enabled or mockup_sim_enabled + + if is_simulation and not args.gradio: + logger.info("Simulation mode detected. Automatically enabling gradio flag.") + args.gradio = True + + camera_worker, _, vision_manager = handle_vision_stuff(args, robot) + + movement_manager = MovementManager( + current_robot=robot, + camera_worker=camera_worker, + ) + + head_wobbler = HeadWobbler(set_speech_offsets=movement_manager.set_speech_offsets) + + deps = ToolDependencies( + reachy_mini=robot, + movement_manager=movement_manager, + camera_worker=camera_worker, + vision_manager=vision_manager, + head_wobbler=head_wobbler, + ) + current_file_path = os.path.dirname(os.path.abspath(__file__)) + logger.debug(f"Current file absolute path: {current_file_path}") + chatbot = gr.Chatbot( + type="messages", + resizable=True, + avatar_images=( + os.path.join(current_file_path, "images", "user_avatar.png"), + os.path.join(current_file_path, "images", "reachymini_avatar.png"), + ), + ) + logger.debug(f"Chatbot avatar images: {chatbot.avatar_images}") + + handler = OpenaiRealtimeHandler(deps, gradio_mode=args.gradio, instance_path=instance_path) + + stream_manager: gr.Blocks | LocalStream | None = None + + if args.gradio: + api_key_textbox = gr.Textbox( + label="OPENAI API Key", + type="password", + value=os.getenv("OPENAI_API_KEY") if not get_space() else "", + ) + + stream = Stream( + handler=handler, + mode="send-receive", + modality="audio", + additional_inputs=[ + chatbot, + api_key_textbox, + ], + additional_outputs=[chatbot], + additional_outputs_handler=update_chatbot, + ui_args={"title": "Talk with Reachy Mini"}, + ) + stream_manager = stream.ui + if not settings_app: + app = FastAPI() + else: + app = settings_app + + app = gr.mount_gradio_app(app, stream.ui, path="/") + else: + # In headless mode, wire settings_app + instance_path to console LocalStream + stream_manager = LocalStream( + handler, + robot, + settings_app=settings_app, + instance_path=instance_path, + ) + + # Each async service → its own thread/loop + movement_manager.start() + head_wobbler.start() + if camera_worker: + camera_worker.start() + if vision_manager: + vision_manager.start() + + def poll_stop_event() -> None: + """Poll the stop event to allow graceful shutdown.""" + if app_stop_event is not None: + app_stop_event.wait() + + logger.info("App stop event detected, shutting down...") + try: + stream_manager.close() + except Exception as e: + logger.error(f"Error while closing stream manager: {e}") + + if app_stop_event: + threading.Thread(target=poll_stop_event, daemon=True).start() + + try: + stream_manager.launch() + except KeyboardInterrupt: + logger.info("Keyboard interruption in main thread... closing server.") + finally: + movement_manager.stop() + head_wobbler.stop() + if camera_worker: + camera_worker.stop() + if vision_manager: + vision_manager.stop() + + # Ensure media is explicitly closed before disconnecting + try: + robot.media.close() + except Exception as e: + logger.debug(f"Error closing media during shutdown: {e}") + + # prevent connection to keep alive some threads + robot.client.disconnect() + time.sleep(1) + logger.info("Shutdown complete.") + + +class ReachyMiniConversationApp(ReachyMiniApp): # type: ignore[misc] + """Reachy Mini Apps entry point for the conversation app.""" + + custom_app_url = "http://0.0.0.0:7860/" + dont_start_webserver = False + + def run(self, reachy_mini: ReachyMini, stop_event: threading.Event) -> None: + """Run the Reachy Mini conversation app.""" + loop = asyncio.new_event_loop() + asyncio.set_event_loop(loop) + + args, _ = parse_args() + + instance_path = self._get_instance_path().parent + run( + args, + robot=reachy_mini, + app_stop_event=stop_event, + settings_app=self.settings_app, + instance_path=instance_path, + ) + + +if __name__ == "__main__": + app = ReachyMiniConversationApp() + try: + app.wrapped_run() + except KeyboardInterrupt: + app.stop() diff --git a/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/moves.py b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/moves.py new file mode 100644 index 00000000..3c319e73 --- /dev/null +++ b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/moves.py @@ -0,0 +1,849 @@ +"""Movement system with sequential primary moves and additive secondary moves. + +Design overview +- Primary moves (emotions, dances, goto, breathing) are mutually exclusive and run + sequentially. +- Secondary moves (speech sway, face tracking) are additive offsets applied on top + of the current primary pose. +- There is a single control point to the robot: `ReachyMini.set_target`. +- The control loop runs near 100 Hz and is phase-aligned via a monotonic clock. +- Idle behaviour starts an infinite `BreathingMove` after a short inactivity delay + unless listening is active. + +Threading model +- A dedicated worker thread owns all real-time state and issues `set_target` + commands. +- Other threads communicate via a command queue (enqueue moves, mark activity, + toggle listening). +- Secondary offset producers set pending values guarded by locks; the worker + snaps them atomically. + +Units and frames +- Secondary offsets are interpreted as metres for x/y/z and radians for + roll/pitch/yaw in the world frame (unless noted by `compose_world_offset`). +- Antennas and `body_yaw` are in radians. +- Head pose composition uses `compose_world_offset(primary_head, secondary_head)`; + the secondary offset must therefore be expressed in the world frame. + +Safety +- Listening freezes antennas, then blends them back on unfreeze. +- Interpolations and blends are used to avoid jumps at all times. +- `set_target` errors are rate-limited in logs. +""" + +from __future__ import annotations +import time +import logging +import threading +from queue import Empty, Queue +from typing import Any, Dict, Tuple +from collections import deque +from dataclasses import dataclass + +import numpy as np +from numpy.typing import NDArray + +from reachy_mini import ReachyMini +from reachy_mini.utils import create_head_pose +from reachy_mini.motion.move import Move +from reachy_mini.utils.interpolation import ( + compose_world_offset, + linear_pose_interpolation, +) + + +logger = logging.getLogger(__name__) + +# Configuration constants +CONTROL_LOOP_FREQUENCY_HZ = 100.0 # Hz - Target frequency for the movement control loop + +# Type definitions +FullBodyPose = Tuple[NDArray[np.float32], Tuple[float, float], float] # (head_pose_4x4, antennas, body_yaw) + + +class BreathingMove(Move): # type: ignore + """Breathing move with interpolation to neutral and then continuous breathing patterns.""" + + def __init__( + self, + interpolation_start_pose: NDArray[np.float32], + interpolation_start_antennas: Tuple[float, float], + interpolation_duration: float = 1.0, + ): + """Initialize breathing move. + + Args: + interpolation_start_pose: 4x4 matrix of current head pose to interpolate from + interpolation_start_antennas: Current antenna positions to interpolate from + interpolation_duration: Duration of interpolation to neutral (seconds) + + """ + self.interpolation_start_pose = interpolation_start_pose + self.interpolation_start_antennas = np.array(interpolation_start_antennas) + self.interpolation_duration = interpolation_duration + + # Neutral positions for breathing base + self.neutral_head_pose = create_head_pose(0, 0, 0, 0, 0, 0, degrees=True) + self.neutral_antennas = np.array([0.0, 0.0]) + + # Breathing parameters + self.breathing_z_amplitude = 0.005 # 5mm gentle breathing + self.breathing_frequency = 0.1 # Hz (6 breaths per minute) + self.antenna_sway_amplitude = np.deg2rad(15) # 15 degrees + self.antenna_frequency = 0.5 # Hz (faster antenna sway) + + @property + def duration(self) -> float: + """Duration property required by official Move interface.""" + return float("inf") # Continuous breathing (never ends naturally) + + def evaluate(self, t: float) -> tuple[NDArray[np.float64] | None, NDArray[np.float64] | None, float | None]: + """Evaluate breathing move at time t.""" + if t < self.interpolation_duration: + # Phase 1: Interpolate to neutral base position + interpolation_t = t / self.interpolation_duration + + # Interpolate head pose + head_pose = linear_pose_interpolation( + self.interpolation_start_pose, self.neutral_head_pose, interpolation_t, + ) + + # Interpolate antennas + antennas_interp = ( + 1 - interpolation_t + ) * self.interpolation_start_antennas + interpolation_t * self.neutral_antennas + antennas = antennas_interp.astype(np.float64) + + else: + # Phase 2: Breathing patterns from neutral base + breathing_time = t - self.interpolation_duration + + # Gentle z-axis breathing + z_offset = self.breathing_z_amplitude * np.sin(2 * np.pi * self.breathing_frequency * breathing_time) + head_pose = create_head_pose(x=0, y=0, z=z_offset, roll=0, pitch=0, yaw=0, degrees=True, mm=False) + + # Antenna sway (opposite directions) + antenna_sway = self.antenna_sway_amplitude * np.sin(2 * np.pi * self.antenna_frequency * breathing_time) + antennas = np.array([antenna_sway, -antenna_sway], dtype=np.float64) + + # Return in official Move interface format: (head_pose, antennas_array, body_yaw) + return (head_pose, antennas, 0.0) + + +def combine_full_body(primary_pose: FullBodyPose, secondary_pose: FullBodyPose) -> FullBodyPose: + """Combine primary and secondary full body poses. + + Args: + primary_pose: (head_pose, antennas, body_yaw) - primary move + secondary_pose: (head_pose, antennas, body_yaw) - secondary offsets + + Returns: + Combined full body pose (head_pose, antennas, body_yaw) + + """ + primary_head, primary_antennas, primary_body_yaw = primary_pose + secondary_head, secondary_antennas, secondary_body_yaw = secondary_pose + + # Combine head poses using compose_world_offset; the secondary pose must be an + # offset expressed in the world frame (T_off_world) applied to the absolute + # primary transform (T_abs). + combined_head = compose_world_offset(primary_head, secondary_head, reorthonormalize=True) + + # Sum antennas and body_yaw + combined_antennas = ( + primary_antennas[0] + secondary_antennas[0], + primary_antennas[1] + secondary_antennas[1], + ) + combined_body_yaw = primary_body_yaw + secondary_body_yaw + + return (combined_head, combined_antennas, combined_body_yaw) + + +def clone_full_body_pose(pose: FullBodyPose) -> FullBodyPose: + """Create a deep copy of a full body pose tuple.""" + head, antennas, body_yaw = pose + return (head.copy(), (float(antennas[0]), float(antennas[1])), float(body_yaw)) + + +@dataclass +class MovementState: + """State tracking for the movement system.""" + + # Primary move state + current_move: Move | None = None + move_start_time: float | None = None + last_activity_time: float = 0.0 + + # Secondary move state (offsets) + speech_offsets: Tuple[float, float, float, float, float, float] = ( + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + ) + face_tracking_offsets: Tuple[float, float, float, float, float, float] = ( + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + ) + + # Status flags + last_primary_pose: FullBodyPose | None = None + + def update_activity(self) -> None: + """Update the last activity time.""" + self.last_activity_time = time.monotonic() + + +@dataclass +class LoopFrequencyStats: + """Track rolling loop frequency statistics.""" + + mean: float = 0.0 + m2: float = 0.0 + min_freq: float = float("inf") + count: int = 0 + last_freq: float = 0.0 + potential_freq: float = 0.0 + + def reset(self) -> None: + """Reset accumulators while keeping the last potential frequency.""" + self.mean = 0.0 + self.m2 = 0.0 + self.min_freq = float("inf") + self.count = 0 + + +class MovementManager: + """Coordinate sequential moves, additive offsets, and robot output at 100 Hz. + + Responsibilities: + - Own a real-time loop that samples the current primary move (if any), fuses + secondary offsets, and calls `set_target` exactly once per tick. + - Start an idle `BreathingMove` after `idle_inactivity_delay` when not + listening and no moves are queued. + - Expose thread-safe APIs so other threads can enqueue moves, mark activity, + or feed secondary offsets without touching internal state. + + Timing: + - All elapsed-time calculations rely on `time.monotonic()` through `self._now` + to avoid wall-clock jumps. + - The loop attempts 100 Hz + + Concurrency: + - External threads communicate via `_command_queue` messages. + - Secondary offsets are staged via dirty flags guarded by locks and consumed + atomically inside the worker loop. + """ + + def __init__( + self, + current_robot: ReachyMini, + camera_worker: "Any" = None, + ): + """Initialize movement manager.""" + self.current_robot = current_robot + self.camera_worker = camera_worker + + # Single timing source for durations + self._now = time.monotonic + + # Movement state + self.state = MovementState() + self.state.last_activity_time = self._now() + neutral_pose = create_head_pose(0, 0, 0, 0, 0, 0, degrees=True) + self.state.last_primary_pose = (neutral_pose, (0.0, 0.0), 0.0) + + # Move queue (primary moves) + self.move_queue: deque[Move] = deque() + + # Configuration + self.idle_inactivity_delay = 0.3 # seconds + self.target_frequency = CONTROL_LOOP_FREQUENCY_HZ + self.target_period = 1.0 / self.target_frequency + + self._stop_event = threading.Event() + self._thread: threading.Thread | None = None + self._is_listening = False + self._last_commanded_pose: FullBodyPose = clone_full_body_pose(self.state.last_primary_pose) + self._listening_antennas: Tuple[float, float] = self._last_commanded_pose[1] + self._antenna_unfreeze_blend = 1.0 + self._antenna_blend_duration = 0.4 # seconds to blend back after listening + self._last_listening_blend_time = self._now() + self._breathing_active = False # true when breathing move is running or queued + self._listening_debounce_s = 0.15 + self._last_listening_toggle_time = self._now() + self._last_set_target_err = 0.0 + self._set_target_err_interval = 1.0 # seconds between error logs + self._set_target_err_suppressed = 0 + + # Cross-thread signalling + self._command_queue: "Queue[Tuple[str, Any]]" = Queue() + self._speech_offsets_lock = threading.Lock() + self._pending_speech_offsets: Tuple[float, float, float, float, float, float] = ( + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + ) + self._speech_offsets_dirty = False + + self._face_offsets_lock = threading.Lock() + self._pending_face_offsets: Tuple[float, float, float, float, float, float] = ( + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + ) + self._face_offsets_dirty = False + + self._shared_state_lock = threading.Lock() + self._shared_last_activity_time = self.state.last_activity_time + self._shared_is_listening = self._is_listening + self._status_lock = threading.Lock() + self._freq_stats = LoopFrequencyStats() + self._freq_snapshot = LoopFrequencyStats() + + def queue_move(self, move: Move) -> None: + """Queue a primary move to run after the currently executing one. + + Thread-safe: the move is enqueued via the worker command queue so the + control loop remains the sole mutator of movement state. + """ + self._command_queue.put(("queue_move", move)) + + def clear_move_queue(self) -> None: + """Stop the active move and discard any queued primary moves. + + Thread-safe: executed by the worker thread via the command queue. + """ + self._command_queue.put(("clear_queue", None)) + + def set_speech_offsets(self, offsets: Tuple[float, float, float, float, float, float]) -> None: + """Update speech-induced secondary offsets (x, y, z, roll, pitch, yaw). + + Offsets are interpreted as metres for translation and radians for + rotation in the world frame. Thread-safe via a pending snapshot. + """ + with self._speech_offsets_lock: + self._pending_speech_offsets = offsets + self._speech_offsets_dirty = True + + def set_moving_state(self, duration: float) -> None: + """Mark the robot as actively moving for the provided duration. + + Legacy hook used by goto helpers to keep inactivity and breathing logic + aware of manual motions. Thread-safe via the command queue. + """ + self._command_queue.put(("set_moving_state", duration)) + + def is_idle(self) -> bool: + """Return True when the robot has been inactive longer than the idle delay.""" + with self._shared_state_lock: + last_activity = self._shared_last_activity_time + listening = self._shared_is_listening + + if listening: + return False + + return self._now() - last_activity >= self.idle_inactivity_delay + + def set_listening(self, listening: bool) -> None: + """Enable or disable listening mode without touching shared state directly. + + While listening: + - Antenna positions are frozen at the last commanded values. + - Blending is reset so that upon unfreezing the antennas return smoothly. + - Idle breathing is suppressed. + + Thread-safe: the change is posted to the worker command queue. + """ + with self._shared_state_lock: + if self._shared_is_listening == listening: + return + self._command_queue.put(("set_listening", listening)) + + def _poll_signals(self, current_time: float) -> None: + """Apply queued commands and pending offset updates.""" + self._apply_pending_offsets() + + while True: + try: + command, payload = self._command_queue.get_nowait() + except Empty: + break + self._handle_command(command, payload, current_time) + + def _apply_pending_offsets(self) -> None: + """Apply the most recent speech/face offset updates.""" + speech_offsets: Tuple[float, float, float, float, float, float] | None = None + with self._speech_offsets_lock: + if self._speech_offsets_dirty: + speech_offsets = self._pending_speech_offsets + self._speech_offsets_dirty = False + + if speech_offsets is not None: + self.state.speech_offsets = speech_offsets + self.state.update_activity() + + face_offsets: Tuple[float, float, float, float, float, float] | None = None + with self._face_offsets_lock: + if self._face_offsets_dirty: + face_offsets = self._pending_face_offsets + self._face_offsets_dirty = False + + if face_offsets is not None: + self.state.face_tracking_offsets = face_offsets + self.state.update_activity() + + def _handle_command(self, command: str, payload: Any, current_time: float) -> None: + """Handle a single cross-thread command.""" + if command == "queue_move": + if isinstance(payload, Move): + self.move_queue.append(payload) + self.state.update_activity() + duration = getattr(payload, "duration", None) + if duration is not None: + try: + duration_str = f"{float(duration):.2f}" + except (TypeError, ValueError): + duration_str = str(duration) + else: + duration_str = "?" + logger.debug( + "Queued move with duration %ss, queue size: %s", + duration_str, + len(self.move_queue), + ) + else: + logger.warning("Ignored queue_move command with invalid payload: %s", payload) + elif command == "clear_queue": + self.move_queue.clear() + self.state.current_move = None + self.state.move_start_time = None + self._breathing_active = False + logger.info("Cleared move queue and stopped current move") + elif command == "set_moving_state": + try: + duration = float(payload) + except (TypeError, ValueError): + logger.warning("Invalid moving state duration: %s", payload) + return + self.state.update_activity() + elif command == "mark_activity": + self.state.update_activity() + elif command == "set_listening": + desired_state = bool(payload) + now = self._now() + if now - self._last_listening_toggle_time < self._listening_debounce_s: + return + self._last_listening_toggle_time = now + + if self._is_listening == desired_state: + return + + self._is_listening = desired_state + self._last_listening_blend_time = now + if desired_state: + # Freeze: snapshot current commanded antennas and reset blend + self._listening_antennas = ( + float(self._last_commanded_pose[1][0]), + float(self._last_commanded_pose[1][1]), + ) + self._antenna_unfreeze_blend = 0.0 + else: + # Unfreeze: restart blending from frozen pose + self._antenna_unfreeze_blend = 0.0 + self.state.update_activity() + else: + logger.warning("Unknown command received by MovementManager: %s", command) + + def _publish_shared_state(self) -> None: + """Expose idle-related state for external threads.""" + with self._shared_state_lock: + self._shared_last_activity_time = self.state.last_activity_time + self._shared_is_listening = self._is_listening + + def _manage_move_queue(self, current_time: float) -> None: + """Manage the primary move queue (sequential execution).""" + if self.state.current_move is None or ( + self.state.move_start_time is not None + and current_time - self.state.move_start_time >= self.state.current_move.duration + ): + self.state.current_move = None + self.state.move_start_time = None + + if self.move_queue: + self.state.current_move = self.move_queue.popleft() + self.state.move_start_time = current_time + # Any real move cancels breathing mode flag + self._breathing_active = isinstance(self.state.current_move, BreathingMove) + logger.debug(f"Starting new move, duration: {self.state.current_move.duration}s") + + def _manage_breathing(self, current_time: float) -> None: + """Manage automatic breathing when idle.""" + if ( + self.state.current_move is None + and not self.move_queue + and not self._is_listening + and not self._breathing_active + ): + idle_for = current_time - self.state.last_activity_time + if idle_for >= self.idle_inactivity_delay: + try: + # These 2 functions return the latest available sensor data from the robot, but don't perform I/O synchronously. + # Therefore, we accept calling them inside the control loop. + _, current_antennas = self.current_robot.get_current_joint_positions() + current_head_pose = self.current_robot.get_current_head_pose() + + self._breathing_active = True + self.state.update_activity() + + breathing_move = BreathingMove( + interpolation_start_pose=current_head_pose, + interpolation_start_antennas=current_antennas, + interpolation_duration=1.0, + ) + self.move_queue.append(breathing_move) + logger.debug("Started breathing after %.1fs of inactivity", idle_for) + except Exception as e: + self._breathing_active = False + logger.error("Failed to start breathing: %s", e) + + if isinstance(self.state.current_move, BreathingMove) and self.move_queue: + self.state.current_move = None + self.state.move_start_time = None + self._breathing_active = False + logger.debug("Stopping breathing due to new move activity") + + if self.state.current_move is not None and not isinstance(self.state.current_move, BreathingMove): + self._breathing_active = False + + def _get_primary_pose(self, current_time: float) -> FullBodyPose: + """Get the primary full body pose from current move or neutral.""" + # When a primary move is playing, sample it and cache the resulting pose + if self.state.current_move is not None and self.state.move_start_time is not None: + move_time = current_time - self.state.move_start_time + head, antennas, body_yaw = self.state.current_move.evaluate(move_time) + + if head is None: + head = create_head_pose(0, 0, 0, 0, 0, 0, degrees=True) + if antennas is None: + antennas = np.array([0.0, 0.0]) + if body_yaw is None: + body_yaw = 0.0 + + antennas_tuple = (float(antennas[0]), float(antennas[1])) + head_copy = head.copy() + primary_full_body_pose = ( + head_copy, + antennas_tuple, + float(body_yaw), + ) + + self.state.last_primary_pose = clone_full_body_pose(primary_full_body_pose) + # Otherwise reuse the last primary pose so we avoid jumps between moves + elif self.state.last_primary_pose is not None: + primary_full_body_pose = clone_full_body_pose(self.state.last_primary_pose) + else: + neutral_head_pose = create_head_pose(0, 0, 0, 0, 0, 0, degrees=True) + primary_full_body_pose = (neutral_head_pose, (0.0, 0.0), 0.0) + self.state.last_primary_pose = clone_full_body_pose(primary_full_body_pose) + + return primary_full_body_pose + + def _get_secondary_pose(self) -> FullBodyPose: + """Get the secondary full body pose from speech and face tracking offsets.""" + # Combine speech sway offsets + face tracking offsets for secondary pose + secondary_offsets = [ + self.state.speech_offsets[0] + self.state.face_tracking_offsets[0], + self.state.speech_offsets[1] + self.state.face_tracking_offsets[1], + self.state.speech_offsets[2] + self.state.face_tracking_offsets[2], + self.state.speech_offsets[3] + self.state.face_tracking_offsets[3], + self.state.speech_offsets[4] + self.state.face_tracking_offsets[4], + self.state.speech_offsets[5] + self.state.face_tracking_offsets[5], + ] + + secondary_head_pose = create_head_pose( + x=secondary_offsets[0], + y=secondary_offsets[1], + z=secondary_offsets[2], + roll=secondary_offsets[3], + pitch=secondary_offsets[4], + yaw=secondary_offsets[5], + degrees=False, + mm=False, + ) + return (secondary_head_pose, (0.0, 0.0), 0.0) + + def _compose_full_body_pose(self, current_time: float) -> FullBodyPose: + """Compose primary and secondary poses into a single command pose.""" + primary = self._get_primary_pose(current_time) + secondary = self._get_secondary_pose() + return combine_full_body(primary, secondary) + + def _update_primary_motion(self, current_time: float) -> None: + """Advance queue state and idle behaviours for this tick.""" + self._manage_move_queue(current_time) + self._manage_breathing(current_time) + + def _calculate_blended_antennas(self, target_antennas: Tuple[float, float]) -> Tuple[float, float]: + """Blend target antennas with listening freeze state and update blending.""" + now = self._now() + listening = self._is_listening + listening_antennas = self._listening_antennas + blend = self._antenna_unfreeze_blend + blend_duration = self._antenna_blend_duration + last_update = self._last_listening_blend_time + self._last_listening_blend_time = now + + if listening: + antennas_cmd = listening_antennas + new_blend = 0.0 + else: + dt = max(0.0, now - last_update) + if blend_duration <= 0: + new_blend = 1.0 + else: + new_blend = min(1.0, blend + dt / blend_duration) + antennas_cmd = ( + listening_antennas[0] * (1.0 - new_blend) + target_antennas[0] * new_blend, + listening_antennas[1] * (1.0 - new_blend) + target_antennas[1] * new_blend, + ) + + if listening: + self._antenna_unfreeze_blend = 0.0 + else: + self._antenna_unfreeze_blend = new_blend + if new_blend >= 1.0: + self._listening_antennas = ( + float(target_antennas[0]), + float(target_antennas[1]), + ) + + return antennas_cmd + + def _issue_control_command(self, head: NDArray[np.float32], antennas: Tuple[float, float], body_yaw: float) -> None: + """Send the fused pose to the robot with throttled error logging.""" + try: + self.current_robot.set_target(head=head, antennas=antennas, body_yaw=body_yaw) + except Exception as e: + now = self._now() + if now - self._last_set_target_err >= self._set_target_err_interval: + msg = f"Failed to set robot target: {e}" + if self._set_target_err_suppressed: + msg += f" (suppressed {self._set_target_err_suppressed} repeats)" + self._set_target_err_suppressed = 0 + logger.error(msg) + self._last_set_target_err = now + else: + self._set_target_err_suppressed += 1 + else: + with self._status_lock: + self._last_commanded_pose = clone_full_body_pose((head, antennas, body_yaw)) + + def _update_frequency_stats( + self, loop_start: float, prev_loop_start: float, stats: LoopFrequencyStats, + ) -> LoopFrequencyStats: + """Update frequency statistics based on the current loop start time.""" + period = loop_start - prev_loop_start + if period > 0: + stats.last_freq = 1.0 / period + stats.count += 1 + delta = stats.last_freq - stats.mean + stats.mean += delta / stats.count + stats.m2 += delta * (stats.last_freq - stats.mean) + stats.min_freq = min(stats.min_freq, stats.last_freq) + return stats + + def _schedule_next_tick(self, loop_start: float, stats: LoopFrequencyStats) -> Tuple[float, LoopFrequencyStats]: + """Compute sleep time to maintain target frequency and update potential freq.""" + computation_time = self._now() - loop_start + stats.potential_freq = 1.0 / computation_time if computation_time > 0 else float("inf") + sleep_time = max(0.0, self.target_period - computation_time) + return sleep_time, stats + + def _record_frequency_snapshot(self, stats: LoopFrequencyStats) -> None: + """Store a thread-safe snapshot of current frequency statistics.""" + with self._status_lock: + self._freq_snapshot = LoopFrequencyStats( + mean=stats.mean, + m2=stats.m2, + min_freq=stats.min_freq, + count=stats.count, + last_freq=stats.last_freq, + potential_freq=stats.potential_freq, + ) + + def _maybe_log_frequency(self, loop_count: int, print_interval_loops: int, stats: LoopFrequencyStats) -> None: + """Emit frequency telemetry when enough loops have elapsed.""" + if loop_count % print_interval_loops != 0 or stats.count == 0: + return + + variance = stats.m2 / stats.count if stats.count > 0 else 0.0 + lowest = stats.min_freq if stats.min_freq != float("inf") else 0.0 + logger.debug( + "Loop freq - avg: %.2fHz, variance: %.4f, min: %.2fHz, last: %.2fHz, potential: %.2fHz, target: %.1fHz", + stats.mean, + variance, + lowest, + stats.last_freq, + stats.potential_freq, + self.target_frequency, + ) + stats.reset() + + def _update_face_tracking(self, current_time: float) -> None: + """Get face tracking offsets from camera worker thread.""" + if self.camera_worker is not None: + # Get face tracking offsets from camera worker thread + offsets = self.camera_worker.get_face_tracking_offsets() + self.state.face_tracking_offsets = offsets + else: + # No camera worker, use neutral offsets + self.state.face_tracking_offsets = (0.0, 0.0, 0.0, 0.0, 0.0, 0.0) + + def start(self) -> None: + """Start the worker thread that drives the 100 Hz control loop.""" + if self._thread is not None and self._thread.is_alive(): + logger.warning("Move worker already running; start() ignored") + return + self._stop_event.clear() + self._thread = threading.Thread(target=self.working_loop, daemon=True) + self._thread.start() + logger.debug("Move worker started") + + def stop(self) -> None: + """Request the worker thread to stop and wait for it to exit. + + Before stopping, resets the robot to a neutral position. + """ + if self._thread is None or not self._thread.is_alive(): + logger.debug("Move worker not running; stop() ignored") + return + + logger.info("Stopping movement manager and resetting to neutral position...") + + # Clear any queued moves and stop current move + self.clear_move_queue() + + # Stop the worker thread first so it doesn't interfere + self._stop_event.set() + if self._thread is not None: + self._thread.join() + self._thread = None + logger.debug("Move worker stopped") + + # Reset to neutral position using goto_target (same approach as wake_up) + try: + neutral_head_pose = create_head_pose(0, 0, 0, 0, 0, 0, degrees=True) + neutral_antennas = [0.0, 0.0] + neutral_body_yaw = 0.0 + + # Use goto_target directly on the robot + self.current_robot.goto_target( + head=neutral_head_pose, + antennas=neutral_antennas, + duration=2.0, + body_yaw=neutral_body_yaw, + ) + + logger.info("Reset to neutral position completed") + + except Exception as e: + logger.error(f"Failed to reset to neutral position: {e}") + + def get_status(self) -> Dict[str, Any]: + """Return a lightweight status snapshot for observability.""" + with self._status_lock: + pose_snapshot = clone_full_body_pose(self._last_commanded_pose) + freq_snapshot = LoopFrequencyStats( + mean=self._freq_snapshot.mean, + m2=self._freq_snapshot.m2, + min_freq=self._freq_snapshot.min_freq, + count=self._freq_snapshot.count, + last_freq=self._freq_snapshot.last_freq, + potential_freq=self._freq_snapshot.potential_freq, + ) + + head_matrix = pose_snapshot[0].tolist() if pose_snapshot else None + antennas = pose_snapshot[1] if pose_snapshot else None + body_yaw = pose_snapshot[2] if pose_snapshot else None + + return { + "queue_size": len(self.move_queue), + "is_listening": self._is_listening, + "breathing_active": self._breathing_active, + "last_commanded_pose": { + "head": head_matrix, + "antennas": antennas, + "body_yaw": body_yaw, + }, + "loop_frequency": { + "last": freq_snapshot.last_freq, + "mean": freq_snapshot.mean, + "min": freq_snapshot.min_freq, + "potential": freq_snapshot.potential_freq, + "samples": freq_snapshot.count, + }, + } + + def working_loop(self) -> None: + """Control loop main movements - reproduces main_works.py control architecture. + + Single set_target() call with pose fusion. + """ + logger.debug("Starting enhanced movement control loop (100Hz)") + + loop_count = 0 + prev_loop_start = self._now() + print_interval_loops = max(1, int(self.target_frequency * 2)) + freq_stats = self._freq_stats + + while not self._stop_event.is_set(): + loop_start = self._now() + loop_count += 1 + + if loop_count > 1: + freq_stats = self._update_frequency_stats(loop_start, prev_loop_start, freq_stats) + prev_loop_start = loop_start + + # 1) Poll external commands and apply pending offsets (atomic snapshot) + self._poll_signals(loop_start) + + # 2) Manage the primary move queue (start new move, end finished move, breathing) + self._update_primary_motion(loop_start) + + # 3) Update vision-based secondary offsets + self._update_face_tracking(loop_start) + + # 4) Build primary and secondary full-body poses, then fuse them + head, antennas, body_yaw = self._compose_full_body_pose(loop_start) + + # 5) Apply listening antenna freeze or blend-back + antennas_cmd = self._calculate_blended_antennas(antennas) + + # 6) Single set_target call - the only control point + self._issue_control_command(head, antennas_cmd, body_yaw) + + # 7) Adaptive sleep to align to next tick, then publish shared state + sleep_time, freq_stats = self._schedule_next_tick(loop_start, freq_stats) + self._publish_shared_state() + self._record_frequency_snapshot(freq_stats) + + # 8) Periodic telemetry on loop frequency + self._maybe_log_frequency(loop_count, print_interval_loops, freq_stats) + + if sleep_time > 0: + time.sleep(sleep_time) + + logger.debug("Movement control loop stopped") diff --git a/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/openai_realtime.py b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/openai_realtime.py new file mode 100644 index 00000000..c43d6172 --- /dev/null +++ b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/openai_realtime.py @@ -0,0 +1,811 @@ +import json +import uuid +import base64 +import random +import asyncio +import logging +from typing import Any, Final, Tuple, Literal, Optional +from pathlib import Path +from datetime import datetime + +import cv2 +import numpy as np +import gradio as gr +from openai import AsyncOpenAI +from fastrtc import AdditionalOutputs, AsyncStreamHandler, wait_for_item, audio_to_int16 +from numpy.typing import NDArray +from scipy.signal import resample +from websockets.exceptions import ConnectionClosedError + +from reachy_mini_conversation_app.config import LOCKED_PROFILE, config +from reachy_mini_conversation_app.prompts import get_session_voice, get_session_instructions +from reachy_mini_conversation_app.tools.core_tools import ( + ToolDependencies, + get_tool_specs, +) +from reachy_mini_conversation_app.tools.background_tool_manager import ( + ToolCallRoutine, + ToolNotification, + BackgroundToolManager, +) + + +logger = logging.getLogger(__name__) + +OPEN_AI_INPUT_SAMPLE_RATE: Final[Literal[24000]] = 24000 +OPEN_AI_OUTPUT_SAMPLE_RATE: Final[Literal[24000]] = 24000 + +# Cost tracking from usage data (pricing as of Feb 2026 https://openai.com/api/pricing/) +AUDIO_INPUT_COST_PER_1M = 32.0 +AUDIO_OUTPUT_COST_PER_1M = 64.0 +TEXT_INPUT_COST_PER_1M = 4.0 +TEXT_OUTPUT_COST_PER_1M = 16.0 +IMAGE_INPUT_COST_PER_1M = 5.0 + +_RESPONSE_DONE_TIMEOUT: Final[float] = 30.0 + + +def _compute_response_cost(usage: Any) -> float: + """Compute dollar cost from a response usage object.""" + inp = getattr(usage, "input_token_details", None) + out = getattr(usage, "output_token_details", None) + cost = 0.0 + if inp: + cost += (getattr(inp, "audio_tokens", 0) or 0) * AUDIO_INPUT_COST_PER_1M / 1e6 + cost += (getattr(inp, "text_tokens", 0) or 0) * TEXT_INPUT_COST_PER_1M / 1e6 + cost += (getattr(inp, "image_tokens", 0) or 0) * IMAGE_INPUT_COST_PER_1M / 1e6 + if out: + cost += (getattr(out, "audio_tokens", 0) or 0) * AUDIO_OUTPUT_COST_PER_1M / 1e6 + cost += (getattr(out, "text_tokens", 0) or 0) * TEXT_OUTPUT_COST_PER_1M / 1e6 + return cost + + +class OpenaiRealtimeHandler(AsyncStreamHandler): + """An OpenAI realtime handler for fastrtc Stream.""" + + def __init__(self, deps: ToolDependencies, gradio_mode: bool = False, instance_path: Optional[str] = None): + """Initialize the handler.""" + super().__init__( + expected_layout="mono", + output_sample_rate=OPEN_AI_OUTPUT_SAMPLE_RATE, + input_sample_rate=OPEN_AI_INPUT_SAMPLE_RATE, + ) + + # Override typing of the sample rates to match OpenAI's requirements + self.output_sample_rate: Literal[24000] = self.output_sample_rate + self.input_sample_rate: Literal[24000] = self.input_sample_rate + + self.deps = deps + + # Override type annotations for OpenAI strict typing (only for values used in API) + self.output_sample_rate = OPEN_AI_OUTPUT_SAMPLE_RATE + self.input_sample_rate = OPEN_AI_INPUT_SAMPLE_RATE + + self.connection: Any = None + self.output_queue: "asyncio.Queue[Tuple[int, NDArray[np.int16]] | AdditionalOutputs]" = asyncio.Queue() + + self.last_activity_time = asyncio.get_event_loop().time() + self.start_time = asyncio.get_event_loop().time() + self.is_idle_tool_call = False + self.gradio_mode = gradio_mode + self.instance_path = instance_path + # Track how the API key was provided (env vs textbox) and its value + self._key_source: Literal["env", "textbox"] = "env" + self._provided_api_key: str | None = None + + # Debouncing for partial transcripts + self.partial_transcript_task: asyncio.Task[None] | None = None + self.partial_transcript_sequence: int = 0 # sequence counter to prevent stale emissions + self.partial_debounce_delay = 0.5 # seconds + + # Internal lifecycle flags + self._shutdown_requested: bool = False + self._connected_event: asyncio.Event = asyncio.Event() + + # Background tool manager + self.tool_manager = BackgroundToolManager() + + # Cost tracking + self.cumulative_cost: float = 0.0 + + # Response-in-progress guard: the Realtime API only allows one active + # response per conversation at a time. A dedicated worker task + # (_response_sender_loop) dequeues and sends one request at a time + self._pending_responses: asyncio.Queue[dict[str, Any]] = asyncio.Queue() + self._response_done_event: asyncio.Event = asyncio.Event() + self._response_done_event.set() + self._last_response_rejected: bool = False + + def copy(self) -> "OpenaiRealtimeHandler": + """Create a copy of the handler.""" + return OpenaiRealtimeHandler(self.deps, self.gradio_mode, self.instance_path) + + async def _emit_debounced_partial(self, transcript: str, sequence: int) -> None: + """Emit partial transcript after debounce delay.""" + try: + await asyncio.sleep(self.partial_debounce_delay) + # Only emit if this is still the latest partial (by sequence number) + if self.partial_transcript_sequence == sequence: + await self.output_queue.put(AdditionalOutputs({"role": "user_partial", "content": transcript})) + logger.debug(f"Debounced partial emitted: {transcript}") + except asyncio.CancelledError: + logger.debug("Debounced partial cancelled") + raise + + async def start_up(self) -> None: + """Start the handler with minimal retries on unexpected websocket closure.""" + openai_api_key = config.OPENAI_API_KEY + if self.gradio_mode and not openai_api_key: + # api key was not found in .env or in the environment variables + await self.wait_for_args() # type: ignore[no-untyped-call] + args = list(self.latest_args) + textbox_api_key = args[3] if len(args[3]) > 0 else None + if textbox_api_key is not None: + openai_api_key = textbox_api_key + self._key_source = "textbox" + self._provided_api_key = textbox_api_key + else: + openai_api_key = config.OPENAI_API_KEY + else: + if not openai_api_key or not openai_api_key.strip(): + # In headless console mode, LocalStream now blocks startup until the key is provided. + # However, unit tests may invoke this handler directly with a stubbed client. + # To keep tests hermetic without requiring a real key, fall back to a placeholder. + logger.warning("OPENAI_API_KEY missing. Proceeding with a placeholder (tests/offline).") + openai_api_key = "DUMMY" + + self.client = AsyncOpenAI(api_key=openai_api_key) + + max_attempts = 3 + for attempt in range(1, max_attempts + 1): + try: + await self._run_realtime_session() + # Normal exit from the session, stop retrying + return + except ConnectionClosedError as e: + # Abrupt close (e.g., "no close frame received or sent") → retry + logger.warning("Realtime websocket closed unexpectedly (attempt %d/%d): %s", attempt, max_attempts, e) + if attempt < max_attempts: + # exponential backoff with jitter + base_delay = 2 ** (attempt - 1) # 1s, 2s, 4s, 8s, etc. + jitter = random.uniform(0, 0.5) + delay = base_delay + jitter + logger.info("Retrying in %.1f seconds...", delay) + await asyncio.sleep(delay) + continue + raise + finally: + # never keep a stale reference + self.connection = None + try: + self._connected_event.clear() + except Exception: + pass + + async def _restart_session(self) -> None: + """Force-close the current session and start a fresh one in background. + + Does not block the caller while the new session is establishing. + """ + try: + if self.connection is not None: + try: + await self.connection.close() + except Exception: + pass + finally: + self.connection = None + + # Ensure we have a client (start_up must have run once) + if getattr(self, "client", None) is None: + logger.warning("Cannot restart: OpenAI client not initialized yet.") + return + + # Fire-and-forget new session and wait briefly for connection + try: + self._connected_event.clear() + except Exception: + pass + asyncio.create_task(self._run_realtime_session(), name="openai-realtime-restart") + try: + await asyncio.wait_for(self._connected_event.wait(), timeout=5.0) + logger.info("Realtime session restarted and connected.") + except asyncio.TimeoutError: + logger.warning("Realtime session restart timed out; continuing in background.") + except Exception as e: + logger.warning("_restart_session failed: %s", e) + + async def _safe_response_create(self, **kwargs: Any) -> None: + """Enqueue a response.create() kwargs for the sender worker _response_sender_loop(). + + This method never blocks the caller. + """ + await self._pending_responses.put(kwargs) + + async def _response_sender_loop(self) -> None: + """Dedicated worker that sends ``response.create()`` calls serially. + + This logic was designed to comply with the response.create() docstring specification for event ordering: + https://github.com/openai/openai-python/blob/3e0c05b84a2056870abf3bd6a5e7849020209cc3/src/openai/resources/realtime/realtime.py#L649C1-L651C30 + + For each queued request the worker: + 1. Waits until no response is active (_response_done_event). + 2. Sends response.create(). + 3. Waits for the response cycle to complete (response.done). + 4. If the server rejected with active_response, retries from step 1. + """ + while self.connection: + try: + kwargs = await self._pending_responses.get() + except asyncio.CancelledError: + return + + sent = False + max_retries = 5 + attempts = 0 + while not sent and self.connection and attempts < max_retries: + try: + await asyncio.wait_for(self._response_done_event.wait(), timeout=_RESPONSE_DONE_TIMEOUT) + except asyncio.TimeoutError: + logger.debug("Timed out waiting for previous response to finish; forcing ahead") + self._response_done_event.set() + + if not self.connection: + break + + self._last_response_rejected = False + try: + await self.connection.response.create(**kwargs) + except Exception as e: + logger.debug("_response_sender_loop: send failed: %s", e) + self._response_done_event.set() + break + + try: + await asyncio.wait_for(self._response_done_event.wait(), timeout=_RESPONSE_DONE_TIMEOUT) + except asyncio.TimeoutError: + logger.debug("Timed out waiting for response.done; assuming response completed") + self._response_done_event.set() + break + + # Check if we were rejected + if self._last_response_rejected: + attempts += 1 + if attempts >= max_retries: + logger.debug("response.create rejected %d times; giving up", attempts) + break + logger.debug("response.create was rejected; retrying (%d/%d)", attempts, max_retries) + continue + + sent = True + + async def _handle_tool_result(self, bg_tool: ToolNotification) -> None: + """Process the result of a tool call.""" + if bg_tool.error is not None: + logger.error("Tool '%s' (id=%s) failed with error: %s", bg_tool.tool_name, bg_tool.id, bg_tool.error) + tool_result = {"error": bg_tool.error} + elif bg_tool.result is not None: + tool_result = bg_tool.result + logger.info( + "Tool '%s' (id=%s) executed successfully.", + bg_tool.tool_name, bg_tool.id, + ) + logger.debug("Tool '%s' full result: %s", bg_tool.tool_name, tool_result) + else: + logger.warning("Tool '%s' (id=%s) returned no result and no error", bg_tool.tool_name, bg_tool.id) + tool_result = {"error": "No result returned from tool execution"} + + # Connection may have closed while tool was running + if not self.connection: + logger.warning("Connection closed during tool '%s' (id=%s) execution; cannot send result back", bg_tool.tool_name, bg_tool.id) + return + + try: + # Send the tool result back + if isinstance(bg_tool.id, str): + await self.connection.conversation.item.create( + item={ + "type": "function_call_output", + "call_id": bg_tool.id, + "output": json.dumps(tool_result), + }, + ) + + await self.output_queue.put( + AdditionalOutputs( + { + "role": "assistant", + "content": json.dumps(tool_result), + # Gradio UI metadata.status accept only "pending" and "done". Do not accept bg.tool.status values. + "metadata": { + "title": f"🛠️ Used tool {bg_tool.tool_name}", + "status": "done", + }, + }, + ), + ) + + if bg_tool.tool_name == "camera" and "b64_im" in tool_result: + # use raw base64, don't json.dumps (which adds quotes) + b64_im = tool_result["b64_im"] + if not isinstance(b64_im, str): + logger.warning("Unexpected type for b64_im: %s", type(b64_im)) + b64_im = str(b64_im) + await self.connection.conversation.item.create( + item={ + "type": "message", + "role": "user", + "content": [ + { + "type": "input_image", + "image_url": f"data:image/jpeg;base64,{b64_im}", + }, + ], + }, + ) + logger.info("Added camera image to conversation") + + if self.deps.camera_worker is not None: + np_img = self.deps.camera_worker.get_latest_frame() + if np_img is not None: + # Camera frames are BGR from OpenCV; convert so Gradio displays correct colors. + rgb_frame = cv2.cvtColor(np_img, cv2.COLOR_BGR2RGB) + else: + rgb_frame = None + img = gr.Image(value=rgb_frame) + + await self.output_queue.put( + AdditionalOutputs( + { + "role": "assistant", + "content": img, + }, + ), + ) + + # If this tool call was triggered by an idle signal, don't make the robot speak. + # For other tool calls, let the robot reply out loud. + if not bg_tool.is_idle_tool_call: + await self._safe_response_create( + response={ + "instructions": "Use the tool result just returned and answer concisely in speech.", + }, + ) + + # Re-synchronize the head wobble after a tool call that may have taken some time + if self.deps.head_wobbler is not None: + self.deps.head_wobbler.reset() + + except ConnectionClosedError: + logger.warning("Connection closed while sending tool result") + self.connection = None + self._response_done_event.set() + + async def _run_realtime_session(self) -> None: + """Establish and manage a single realtime session.""" + async with self.client.realtime.connect(model=config.MODEL_NAME) as conn: + try: + await conn.session.update( + session={ + "type": "realtime", + "instructions": get_session_instructions(), + "audio": { + "input": { + "format": { + "type": "audio/pcm", + "rate": self.input_sample_rate, + }, + "transcription": {"model": "gpt-4o-transcribe", "language": "en"}, + "turn_detection": { + "type": "server_vad", + "interrupt_response": True, + }, + }, + "output": { + "format": { + "type": "audio/pcm", + "rate": self.output_sample_rate, + }, + "voice": get_session_voice(), + }, + }, + "tools": get_tool_specs(), # type: ignore[typeddict-item] + "tool_choice": "auto", + }, + ) + logger.info( + "Realtime session initialized with locked_profile=%r voice=%r", + LOCKED_PROFILE, + get_session_voice(), + ) + # If we reached here, the session update succeeded which implies the API key worked. + # Persist the key to a newly created .env (copied from .env.example) if needed. + self._persist_api_key_if_needed() + except Exception: + logger.exception("Realtime session.update failed; aborting startup") + return + + logger.info("Realtime session updated successfully") + + # Manage event received from the openai server + self.connection = conn + try: + self._connected_event.set() + except Exception: + pass + + + response_sender_task: asyncio.Task[None] | None = None + try: + # Start the background tool manager + self.tool_manager.start_up(tool_callbacks=[self._handle_tool_result]) + + # Start the response sender worker + response_sender_task = asyncio.create_task( + self._response_sender_loop(), name="response-sender" + ) + + async for event in self.connection: + logger.debug(f"OpenAI event: {event.type}") + if event.type == "input_audio_buffer.speech_started": + if hasattr(self, "_clear_queue") and callable(self._clear_queue): + self._clear_queue() + if self.deps.head_wobbler is not None: + self.deps.head_wobbler.reset() + self.deps.movement_manager.set_listening(True) + logger.debug("User speech started") + + if event.type == "input_audio_buffer.speech_stopped": + self.deps.movement_manager.set_listening(False) + logger.debug("User speech stopped - server will auto-commit with VAD") + + if event.type in ( + "response.audio.done", + "response.output_audio.done", + "response.audio.completed", + "response.completed", + ): + logger.debug("response completed") + + if event.type == "response.created": + self._response_done_event.clear() + logger.debug("Response created (active)") + + if event.type == "response.done": + # Doesn't mean the audio is done playing + self._response_done_event.set() + logger.debug("Response done") + + response = getattr(event, "response", None) + usage = getattr(response, "usage", None) if response else None + if usage: + cost = _compute_response_cost(usage) + self.cumulative_cost += cost + logger.debug("Cost: $%.4f | Cumulative: $%.4f", cost, self.cumulative_cost) + else: + logger.warning("No usage data available for cost tracking") + + # Handle partial transcription (user speaking in real-time) + if event.type == "conversation.item.input_audio_transcription.partial": + logger.debug(f"User partial transcript: {event.transcript}") + + # Increment sequence + self.partial_transcript_sequence += 1 + current_sequence = self.partial_transcript_sequence + + # Cancel previous debounce task if it exists + if self.partial_transcript_task and not self.partial_transcript_task.done(): + self.partial_transcript_task.cancel() + try: + await self.partial_transcript_task + except asyncio.CancelledError: + pass + + # Start new debounce timer with sequence number + self.partial_transcript_task = asyncio.create_task( + self._emit_debounced_partial(event.transcript, current_sequence) + ) + + # Handle completed transcription (user finished speaking) + if event.type == "conversation.item.input_audio_transcription.completed": + logger.debug(f"User transcript: {event.transcript}") + + # Cancel any pending partial emission + if self.partial_transcript_task and not self.partial_transcript_task.done(): + self.partial_transcript_task.cancel() + try: + await self.partial_transcript_task + except asyncio.CancelledError: + pass + + await self.output_queue.put(AdditionalOutputs({"role": "user", "content": event.transcript})) + + # Handle assistant transcription + if event.type in ("response.audio_transcript.done", "response.output_audio_transcript.done"): + logger.debug(f"Assistant transcript: {event.transcript}") + await self.output_queue.put(AdditionalOutputs({"role": "assistant", "content": event.transcript})) + + # Handle audio delta + if event.type in ("response.audio.delta", "response.output_audio.delta"): + if self.deps.head_wobbler is not None: + self.deps.head_wobbler.feed(event.delta) + self.last_activity_time = asyncio.get_event_loop().time() + logger.debug("last activity time updated to %s", self.last_activity_time) + await self.output_queue.put( + ( + self.output_sample_rate, + np.frombuffer(base64.b64decode(event.delta), dtype=np.int16).reshape(1, -1), + ), + ) + + # ---- tool-calling plumbing ---- + if event.type == "response.function_call_arguments.done": + tool_name = getattr(event, "name", None) + args_json_str = getattr(event, "arguments", None) + call_id: str = str(getattr(event, "call_id", uuid.uuid4())) + + logger.info( + "Tool call received — tool_name=%r, call_id=%s, is_idle=%s, args=%s", + tool_name, call_id, self.is_idle_tool_call, args_json_str, + ) + + if not isinstance(tool_name, str) or not isinstance(args_json_str, str): + logger.error( + "Invalid tool call: tool_name=%s (type=%s), args=%s (type=%s), call_id=%s", + tool_name, type(tool_name).__name__, + args_json_str, type(args_json_str).__name__, + call_id, + ) + continue + + bg_tool = await self.tool_manager.start_tool( + call_id=call_id, + tool_call_routine=ToolCallRoutine( + tool_name=tool_name, + args_json_str=args_json_str, + deps=self.deps, + ), + is_idle_tool_call=self.is_idle_tool_call, + ) + + await self.output_queue.put( + AdditionalOutputs( + { + "role": "assistant", + "content": f"🛠️ Used tool {tool_name} with args {args_json_str}. The tool is now running. Tool ID: {bg_tool.tool_id}", + }, + ), + ) + + if self.is_idle_tool_call: + self.is_idle_tool_call = False + else: + await self._safe_response_create( + response={ + "instructions": "Notify what the tool has been running giving meaningful information about the task", + }, + ) + + logger.info("Started background tool: %s (id=%s, call_id=%s)", tool_name, bg_tool.tool_id, call_id) + + # server error + if event.type == "error": + err = getattr(event, "error", None) + msg = getattr(err, "message", str(err) if err else "unknown error") + code = getattr(err, "code", "") + + if code == "conversation_already_has_active_response": + # response.create was rejected. The sender worker + # is waiting on _response_done_event; when the active + # response finishes it will wake up and see this flag. + self._last_response_rejected = True + logger.debug("response.create rejected; worker will retry after active response finishes") + else: + logger.error("Realtime error [%s]: %s (raw=%s)", code, msg, err) + + # Only show user-facing errors, not internal state errors + if code not in ("input_audio_buffer_commit_empty",): + await self.output_queue.put( + AdditionalOutputs({"role": "assistant", "content": f"[error] {msg}"}) + ) + finally: + # Stop the response sender worker. + if response_sender_task is not None: + response_sender_task.cancel() + try: + await response_sender_task + except asyncio.CancelledError: + pass + + # Stop background tool manager tasks (listener + cleanup) in all paths. + await self.tool_manager.shutdown() + + # Microphone receive + async def receive(self, frame: Tuple[int, NDArray[np.int16]]) -> None: + """Receive audio frame from the microphone and send it to the OpenAI server. + + Handles both mono and stereo audio formats, converting to the expected + mono format for OpenAI's API. Resamples if the input sample rate differs + from the expected rate. + + Args: + frame: A tuple containing (sample_rate, audio_data). + + """ + if not self.connection: + return + + input_sample_rate, audio_frame = frame + + # Reshape if needed + if audio_frame.ndim == 2: + # Scipy channels last convention + if audio_frame.shape[1] > audio_frame.shape[0]: + audio_frame = audio_frame.T + # Multiple channels -> Mono channel + if audio_frame.shape[1] > 1: + audio_frame = audio_frame[:, 0] + + # Resample if needed + if self.input_sample_rate != input_sample_rate: + audio_frame = resample(audio_frame, int(len(audio_frame) * self.input_sample_rate / input_sample_rate)) + + # Cast if needed + audio_frame = audio_to_int16(audio_frame) + + # Send to OpenAI (guard against races during reconnect) + try: + audio_message = base64.b64encode(audio_frame.tobytes()).decode("utf-8") + await self.connection.input_audio_buffer.append(audio=audio_message) + except Exception as e: + logger.debug("Dropping audio frame: connection not ready (%s)", e) + return + + async def emit(self) -> Tuple[int, NDArray[np.int16]] | AdditionalOutputs | None: + """Emit audio frame to be played by the speaker.""" + # sends to the stream the stuff put in the output queue by the openai event handler + # This is called periodically by the fastrtc Stream + + # Handle idle + idle_duration = asyncio.get_event_loop().time() - self.last_activity_time + if idle_duration > 15.0 and self.deps.movement_manager.is_idle(): + try: + await self.send_idle_signal(idle_duration) + except Exception as e: + logger.warning("Idle signal skipped (connection closed?): %s", e) + return None + + self.last_activity_time = asyncio.get_event_loop().time() # avoid repeated resets + + return await wait_for_item(self.output_queue) # type: ignore[no-any-return] + + async def shutdown(self) -> None: + """Shutdown the handler.""" + self._shutdown_requested = True + + # Unblock the response sender worker so it can exit + self._response_done_event.set() + + # Stop background tool manager tasks (listener + cleanup) + await self.tool_manager.shutdown() + + # Cancel any pending debounce task + if self.partial_transcript_task and not self.partial_transcript_task.done(): + self.partial_transcript_task.cancel() + try: + await self.partial_transcript_task + except asyncio.CancelledError: + pass + + if self.connection: + try: + await self.connection.close() + except ConnectionClosedError as e: + logger.debug(f"Connection already closed during shutdown: {e}") + except Exception as e: + logger.debug(f"connection.close() ignored: {e}") + finally: + self.connection = None + + # Clear any remaining items in the output queue + while not self.output_queue.empty(): + try: + self.output_queue.get_nowait() + except asyncio.QueueEmpty: + break + + def format_timestamp(self) -> str: + """Format current timestamp with date, time, and elapsed seconds.""" + loop_time = asyncio.get_event_loop().time() # monotonic + elapsed_seconds = loop_time - self.start_time + dt = datetime.now() # wall-clock + return f"[{dt.strftime('%Y-%m-%d %H:%M:%S')} | +{elapsed_seconds:.1f}s]" + + async def send_idle_signal(self, idle_duration: float) -> None: + """Send an idle signal to the openai server.""" + logger.debug("Sending idle signal") + self.is_idle_tool_call = True + timestamp_msg = f"[Idle time update: {self.format_timestamp()} - No activity for {idle_duration:.1f}s] You've been idle for a while. Feel free to get creative - dance, show an emotion, look around, do nothing, or just be yourself!" + if not self.connection: + logger.debug("No connection, cannot send idle signal") + return + await self.connection.conversation.item.create( + item={ + "type": "message", + "role": "user", + "content": [{"type": "input_text", "text": timestamp_msg}], + }, + ) + await self._safe_response_create( + response={ + "instructions": "You MUST respond with function calls only - no speech or text. Choose appropriate actions for idle behavior.", + "tool_choice": "required", + }, + ) + + def _persist_api_key_if_needed(self) -> None: + """Persist the API key into `.env` inside `instance_path/` when appropriate. + + - Only runs in Gradio mode when key came from the textbox and is non-empty. + - Only saves if `self.instance_path` is not None. + - Writes `.env` to `instance_path/.env` (does not overwrite if it already exists). + - If `instance_path/.env.example` exists, copies its contents while overriding OPENAI_API_KEY. + """ + try: + if not self.gradio_mode: + logger.warning("Not in Gradio mode; skipping API key persistence.") + return + + if self._key_source != "textbox": + logger.info("API key not provided via textbox; skipping persistence.") + return + + key = (self._provided_api_key or "").strip() + if not key: + logger.warning("No API key provided via textbox; skipping persistence.") + return + if self.instance_path is None: + logger.warning("Instance path is None; cannot persist API key.") + return + + # Update the current process environment for downstream consumers + try: + import os + + os.environ["OPENAI_API_KEY"] = key + except Exception: # best-effort + pass + + target_dir = Path(self.instance_path) + env_path = target_dir / ".env" + if env_path.exists(): + # Respect existing user configuration + logger.info(".env already exists at %s; not overwriting.", env_path) + return + + example_path = target_dir / ".env.example" + content_lines: list[str] = [] + if example_path.exists(): + try: + content = example_path.read_text(encoding="utf-8") + content_lines = content.splitlines() + except Exception as e: + logger.warning("Failed to read .env.example at %s: %s", example_path, e) + + # Replace or append the OPENAI_API_KEY line + replaced = False + for i, line in enumerate(content_lines): + if line.strip().startswith("OPENAI_API_KEY="): + content_lines[i] = f"OPENAI_API_KEY={key}" + replaced = True + break + if not replaced: + content_lines.append(f"OPENAI_API_KEY={key}") + + # Ensure file ends with newline + final_text = "\n".join(content_lines) + "\n" + env_path.write_text(final_text, encoding="utf-8") + logger.info("Created %s and stored OPENAI_API_KEY for future runs.", env_path) + except Exception as e: + # Never crash the app for QoL persistence; just log. + logger.warning("Could not persist OPENAI_API_KEY to .env: %s", e) diff --git a/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/profiles/__init__.py b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/profiles/__init__.py new file mode 100644 index 00000000..f2f5f454 --- /dev/null +++ b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/profiles/__init__.py @@ -0,0 +1 @@ +"""Profiles for Reachy Mini conversation app.""" diff --git a/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/profiles/_reachy_mini_conversation_app_locked_profile/__init__.py b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/profiles/_reachy_mini_conversation_app_locked_profile/__init__.py new file mode 100644 index 00000000..2657e8cf --- /dev/null +++ b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/profiles/_reachy_mini_conversation_app_locked_profile/__init__.py @@ -0,0 +1 @@ +"""Locked Reachy OpenShell profile.""" diff --git a/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/profiles/_reachy_mini_conversation_app_locked_profile/instructions.txt b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/profiles/_reachy_mini_conversation_app_locked_profile/instructions.txt new file mode 100644 index 00000000..358102c5 --- /dev/null +++ b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/profiles/_reachy_mini_conversation_app_locked_profile/instructions.txt @@ -0,0 +1,3 @@ +You are a helpful assistant controlling a Reachy Mini robot for OpenShell research. +Keep responses concise, friendly, and concrete. +Use the sweep_look tool when looking around would help. diff --git a/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/profiles/_reachy_mini_conversation_app_locked_profile/sweep_look.py b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/profiles/_reachy_mini_conversation_app_locked_profile/sweep_look.py new file mode 100644 index 00000000..f80499d1 --- /dev/null +++ b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/profiles/_reachy_mini_conversation_app_locked_profile/sweep_look.py @@ -0,0 +1,115 @@ +import logging +from typing import Any, Dict + +import numpy as np + +from reachy_mini.utils import create_head_pose +from reachy_mini_conversation_app.goto_queue_move import GotoQueueMove +from reachy_mini_conversation_app.tools.core_tools import Tool, ToolDependencies + + +logger = logging.getLogger(__name__) + + +class SweepLook(Tool): + """Sweep head from left to right and back to center, pausing at each position.""" + + name = "sweep_look" + description = "Sweep head from left to right while rotating the body, pausing at each extreme, then return to center" + parameters_schema = { + "type": "object", + "properties": {}, + "required": [], + } + + async def __call__(self, deps: ToolDependencies, **kwargs: Any) -> Dict[str, Any]: + """Execute sweep look: left -> hold -> right -> hold -> center.""" + logger.info("Tool call: sweep_look") + + deps.movement_manager.clear_move_queue() + + current_head_pose = deps.reachy_mini.get_current_head_pose() + head_joints, antenna_joints = deps.reachy_mini.get_current_joint_positions() + + current_body_yaw = head_joints[0] + current_antenna1 = antenna_joints[0] + current_antenna2 = antenna_joints[1] + + max_angle = 0.9 * np.pi + transition_duration = 3.0 + hold_duration = 1.0 + + left_head_pose = create_head_pose(0, 0, 0, 0, 0, max_angle, degrees=False) + move_to_left = GotoQueueMove( + target_head_pose=left_head_pose, + start_head_pose=current_head_pose, + target_antennas=(current_antenna1, current_antenna2), + start_antennas=(current_antenna1, current_antenna2), + target_body_yaw=current_body_yaw + max_angle, + start_body_yaw=current_body_yaw, + duration=transition_duration, + ) + + hold_left = GotoQueueMove( + target_head_pose=left_head_pose, + start_head_pose=left_head_pose, + target_antennas=(current_antenna1, current_antenna2), + start_antennas=(current_antenna1, current_antenna2), + target_body_yaw=current_body_yaw + max_angle, + start_body_yaw=current_body_yaw + max_angle, + duration=hold_duration, + ) + + center_head_pose = create_head_pose(0, 0, 0, 0, 0, 0, degrees=False) + return_to_center_from_left = GotoQueueMove( + target_head_pose=center_head_pose, + start_head_pose=left_head_pose, + target_antennas=(current_antenna1, current_antenna2), + start_antennas=(current_antenna1, current_antenna2), + target_body_yaw=current_body_yaw, + start_body_yaw=current_body_yaw + max_angle, + duration=transition_duration, + ) + + right_head_pose = create_head_pose(0, 0, 0, 0, 0, -max_angle, degrees=False) + move_to_right = GotoQueueMove( + target_head_pose=right_head_pose, + start_head_pose=center_head_pose, + target_antennas=(current_antenna1, current_antenna2), + start_antennas=(current_antenna1, current_antenna2), + target_body_yaw=current_body_yaw - max_angle, + start_body_yaw=current_body_yaw, + duration=transition_duration, + ) + + hold_right = GotoQueueMove( + target_head_pose=right_head_pose, + start_head_pose=right_head_pose, + target_antennas=(current_antenna1, current_antenna2), + start_antennas=(current_antenna1, current_antenna2), + target_body_yaw=current_body_yaw - max_angle, + start_body_yaw=current_body_yaw - max_angle, + duration=hold_duration, + ) + + return_to_center_final = GotoQueueMove( + target_head_pose=center_head_pose, + start_head_pose=right_head_pose, + target_antennas=(current_antenna1, current_antenna2), + start_antennas=(current_antenna1, current_antenna2), + target_body_yaw=current_body_yaw, + start_body_yaw=current_body_yaw - max_angle, + duration=transition_duration, + ) + + deps.movement_manager.queue_move(move_to_left) + deps.movement_manager.queue_move(hold_left) + deps.movement_manager.queue_move(return_to_center_from_left) + deps.movement_manager.queue_move(move_to_right) + deps.movement_manager.queue_move(hold_right) + deps.movement_manager.queue_move(return_to_center_final) + + total_duration = transition_duration * 4 + hold_duration * 2 + deps.movement_manager.set_moving_state(total_duration) + + return {"status": f"sweeping look left-right-center, total {total_duration:.1f}s"} diff --git a/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/profiles/_reachy_mini_conversation_app_locked_profile/tools.txt b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/profiles/_reachy_mini_conversation_app_locked_profile/tools.txt new file mode 100644 index 00000000..d5f05cb2 --- /dev/null +++ b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/profiles/_reachy_mini_conversation_app_locked_profile/tools.txt @@ -0,0 +1,5 @@ +dance +stop_dance +play_emotion +stop_emotion +sweep_look diff --git a/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/prompts.py b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/prompts.py new file mode 100644 index 00000000..d174c6b6 --- /dev/null +++ b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/prompts.py @@ -0,0 +1,47 @@ +import sys +import logging +from pathlib import Path + +from reachy_mini_conversation_app.config import LOCKED_PROFILE, DEFAULT_PROFILES_DIRECTORY + + +logger = logging.getLogger(__name__) + + +INSTRUCTIONS_FILENAME = "instructions.txt" +VOICE_FILENAME = "voice.txt" + + +def _locked_profile_path() -> Path: + return DEFAULT_PROFILES_DIRECTORY / LOCKED_PROFILE + + +def get_session_instructions() -> str: + """Load the locked profile instructions for the realtime session.""" + instructions_file = _locked_profile_path() / INSTRUCTIONS_FILENAME + logger.info("Loading prompt from locked profile '%s'", LOCKED_PROFILE) + + try: + if instructions_file.exists(): + instructions = instructions_file.read_text(encoding="utf-8").strip() + if instructions: + return instructions + logger.error("Locked profile '%s' has empty %s", LOCKED_PROFILE, INSTRUCTIONS_FILENAME) + sys.exit(1) + logger.error("Locked profile '%s' has no %s", LOCKED_PROFILE, INSTRUCTIONS_FILENAME) + sys.exit(1) + except Exception as e: + logger.error("Failed to load instructions from locked profile '%s': %s", LOCKED_PROFILE, e) + sys.exit(1) + + +def get_session_voice(default: str = "cedar") -> str: + """Resolve the locked profile voice.""" + try: + voice_file = _locked_profile_path() / VOICE_FILENAME + if voice_file.exists(): + voice = voice_file.read_text(encoding="utf-8").strip() + return voice or default + except Exception: + pass + return default diff --git a/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/static/index.html b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/static/index.html new file mode 100644 index 00000000..058cff29 --- /dev/null +++ b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/static/index.html @@ -0,0 +1,54 @@ + + + + + + Reachy OpenShell - Settings + + + +
    +
    +
    +

    Loading…

    +
    +
    +
    +
    Headless control
    +

    Reachy OpenShell

    +

    Configure your OpenAI API key for the conversation app.

    +
    + + + + +
    + + + + diff --git a/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/static/main.js b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/static/main.js new file mode 100644 index 00000000..4932fc8d --- /dev/null +++ b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/static/main.js @@ -0,0 +1,136 @@ +const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms)); + +async function fetchWithTimeout(url, options = {}, timeoutMs = 2000) { + const controller = new AbortController(); + const id = setTimeout(() => controller.abort(), timeoutMs); + try { + return await fetch(url, { ...options, signal: controller.signal }); + } finally { + clearTimeout(id); + } +} + +async function waitForStatus(timeoutMs = 15000) { + const loadingText = document.querySelector("#loading p"); + let attempts = 0; + const deadline = Date.now() + timeoutMs; + while (true) { + attempts += 1; + try { + const url = new URL("/status", window.location.origin); + url.searchParams.set("_", Date.now().toString()); + const resp = await fetchWithTimeout(url, {}, 2000); + if (resp.ok) return await resp.json(); + } catch (e) {} + if (loadingText) { + loadingText.textContent = attempts > 8 ? "Starting backend…" : "Loading…"; + } + if (Date.now() >= deadline) return null; + await sleep(500); + } +} + +async function validateKey(key) { + const body = { openai_api_key: key }; + const resp = await fetch("/validate_api_key", { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify(body), + }); + const data = await resp.json().catch(() => ({})); + if (!resp.ok) { + throw new Error(data.error || "validation_failed"); + } + return data; +} + +async function saveKey(key) { + const body = { openai_api_key: key }; + const resp = await fetch("/openai_api_key", { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify(body), + }); + if (!resp.ok) { + const data = await resp.json().catch(() => ({})); + throw new Error(data.error || "save_failed"); + } + return await resp.json(); +} + +function show(el, flag) { + el.classList.toggle("hidden", !flag); +} + +async function init() { + const loading = document.getElementById("loading"); + const statusEl = document.getElementById("status"); + const formPanel = document.getElementById("form-panel"); + const configuredPanel = document.getElementById("configured"); + const saveBtn = document.getElementById("save-btn"); + const changeKeyBtn = document.getElementById("change-key-btn"); + const input = document.getElementById("api-key"); + + show(loading, true); + show(formPanel, false); + show(configuredPanel, false); + + const st = (await waitForStatus()) || { has_key: false }; + + if (st.has_key) { + show(configuredPanel, true); + } else { + show(formPanel, true); + } + show(loading, false); + + changeKeyBtn.addEventListener("click", () => { + show(configuredPanel, false); + show(formPanel, true); + input.value = ""; + statusEl.textContent = ""; + statusEl.className = "status"; + }); + + input.addEventListener("input", () => { + input.classList.remove("error"); + }); + + saveBtn.addEventListener("click", async () => { + const key = input.value.trim(); + if (!key) { + statusEl.textContent = "Please enter a valid key."; + statusEl.className = "status warn"; + input.classList.add("error"); + return; + } + statusEl.textContent = "Validating API key..."; + statusEl.className = "status"; + input.classList.remove("error"); + try { + const validation = await validateKey(key); + if (!validation.valid) { + statusEl.textContent = "Invalid API key. Please check your key and try again."; + statusEl.className = "status error"; + input.classList.add("error"); + return; + } + statusEl.textContent = "Key valid! Saving..."; + statusEl.className = "status ok"; + await saveKey(key); + statusEl.textContent = "Saved. Reloading…"; + statusEl.className = "status ok"; + window.location.reload(); + } catch (e) { + input.classList.add("error"); + if (e.message === "invalid_api_key") { + statusEl.textContent = "Invalid API key. Please check your key and try again."; + } else { + statusEl.textContent = "Failed to validate/save key. Please try again."; + } + statusEl.className = "status error"; + } + }); +} + +window.addEventListener("DOMContentLoaded", init); \ No newline at end of file diff --git a/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/static/style.css b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/static/style.css new file mode 100644 index 00000000..1f8f0c8f --- /dev/null +++ b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/static/style.css @@ -0,0 +1,210 @@ +:root { + --bg: #060b1a; + --bg-2: #071023; + --panel: rgba(11, 18, 36, 0.8); + --border: rgba(255, 255, 255, 0.08); + --text: #eaf2ff; + --muted: #9fb6d7; + --ok: #4ce0b3; + --warn: #ffb547; + --error: #ff5c70; + --accent: #45c4ff; + --accent-2: #5ef0c1; + --shadow: 0 20px 70px rgba(0, 0, 0, 0.45); +} + +* { box-sizing: border-box; } +body { + margin: 0; + min-height: 100vh; + font-family: "Space Grotesk", "Inter", "Segoe UI", sans-serif; + background: radial-gradient(circle at 20% 20%, rgba(69, 196, 255, 0.16), transparent 35%), + radial-gradient(circle at 80% 0%, rgba(94, 240, 193, 0.16), transparent 32%), + linear-gradient(135deg, var(--bg), var(--bg-2)); + color: var(--text); +} + +.ambient { + position: fixed; + inset: 0; + background: radial-gradient(circle at 30% 60%, rgba(255, 255, 255, 0.05), transparent 35%), + radial-gradient(circle at 75% 30%, rgba(69, 196, 255, 0.08), transparent 32%); + filter: blur(60px); + z-index: 0; + pointer-events: none; +} + +.loading { + position: fixed; + inset: 0; + background: rgba(5, 10, 24, 0.92); + backdrop-filter: blur(4px); + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + z-index: 9999; +} +.loading .spinner { + width: 46px; + height: 46px; + border: 4px solid rgba(255,255,255,0.15); + border-top-color: var(--accent); + border-radius: 50%; + animation: spin 1s linear infinite; + margin-bottom: 12px; +} +.loading p { color: var(--muted); margin: 0; letter-spacing: 0.4px; } +@keyframes spin { to { transform: rotate(360deg); } } + +.container { + position: relative; + max-width: 600px; + margin: 10vh auto; + padding: 0 24px 40px; + z-index: 1; +} + +.hero { + margin-bottom: 24px; +} +.hero h1 { + margin: 6px 0 6px; + font-size: 32px; + letter-spacing: -0.4px; +} +.subtitle { + margin: 0; + color: var(--muted); + line-height: 1.5; +} +.pill { + display: inline-flex; + align-items: center; + gap: 6px; + padding: 6px 12px; + border-radius: 999px; + background: rgba(94, 240, 193, 0.1); + color: var(--accent-2); + font-size: 12px; + letter-spacing: 0.3px; + border: 1px solid rgba(94, 240, 193, 0.25); +} + +.panel { + background: var(--panel); + border: 1px solid var(--border); + border-radius: 14px; + padding: 18px 18px 16px; + box-shadow: var(--shadow); + backdrop-filter: blur(10px); + margin-top: 16px; +} +.panel-heading { + display: flex; + align-items: center; + justify-content: space-between; + gap: 12px; + margin-bottom: 8px; +} +.panel-heading h2 { + margin: 2px 0; + font-size: 22px; +} +.eyebrow { + margin: 0; + text-transform: uppercase; + font-size: 11px; + letter-spacing: 0.5px; + color: var(--muted); +} +.muted { color: var(--muted); } +.chip { + display: inline-flex; + align-items: center; + padding: 6px 10px; + border-radius: 999px; + font-size: 12px; + color: var(--text); + background: rgba(255, 255, 255, 0.08); + border: 1px solid var(--border); +} +.chip-ok { + background: rgba(76, 224, 179, 0.15); + color: var(--ok); + border-color: rgba(76, 224, 179, 0.4); +} + +.hidden { display: none; } +label { + display: block; + margin: 8px 0 6px; + font-size: 13px; + color: var(--muted); + letter-spacing: 0.2px; +} +input[type="password"], +input[type="text"] { + width: 100%; + padding: 12px 14px; + border: 1px solid var(--border); + border-radius: 10px; + background: rgba(255, 255, 255, 0.04); + color: var(--text); + transition: border 0.15s ease, box-shadow 0.15s ease; +} +input:focus { + border-color: rgba(94, 240, 193, 0.7); + outline: none; + box-shadow: 0 0 0 3px rgba(94, 240, 193, 0.15); +} +input.error { + border-color: var(--error); + box-shadow: 0 0 0 3px rgba(255, 92, 112, 0.15); +} + +button { + display: inline-flex; + align-items: center; + justify-content: center; + margin-top: 12px; + padding: 11px 16px; + border: none; + border-radius: 10px; + background: linear-gradient(120deg, var(--accent), var(--accent-2)); + color: #031022; + cursor: pointer; + font-weight: 600; + letter-spacing: 0.2px; + box-shadow: 0 14px 40px rgba(69, 196, 255, 0.25); + transition: transform 0.12s ease, filter 0.12s ease, box-shadow 0.12s ease; +} +button:hover { filter: brightness(1.06); transform: translateY(-1px); } +button:active { transform: translateY(0); } +button.ghost { + background: rgba(255, 255, 255, 0.05); + color: var(--text); + box-shadow: none; + border: 1px solid var(--border); +} +button.ghost:hover { border-color: rgba(94, 240, 193, 0.4); } +.actions { + display: flex; + align-items: center; + gap: 12px; + flex-wrap: wrap; +} +.status { + margin: 0; + color: var(--muted); + font-size: 13px; +} +.status.ok { color: var(--ok); } +.status.warn { color: var(--warn); } +.status.error { color: var(--error); } + +@media (max-width: 760px) { + .hero h1 { font-size: 26px; } + button { width: 100%; justify-content: center; } + .actions { flex-direction: column; align-items: flex-start; } +} \ No newline at end of file diff --git a/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/tools/__init__.py b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/tools/__init__.py new file mode 100644 index 00000000..6bc971c2 --- /dev/null +++ b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/tools/__init__.py @@ -0,0 +1 @@ +"""Tools loaded by the locked Reachy OpenShell profile.""" diff --git a/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/tools/background_tool_manager.py b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/tools/background_tool_manager.py new file mode 100644 index 00000000..c7859c81 --- /dev/null +++ b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/tools/background_tool_manager.py @@ -0,0 +1,412 @@ +"""Background tool orchestrator for non-blocking tool execution. + +Allows tools to run long operations asynchronously while the robot +continues conversing. Tools can be tracked, cancelled, and their +completion is announced vocally via a silent notification queue. +""" + +from __future__ import annotations +import time +import asyncio +import logging +from typing import Any, Dict, Callable, Optional, Coroutine + +from pydantic import Field, BaseModel, PrivateAttr + +from reachy_mini_conversation_app.tools.core_tools import ( + ToolDependencies, + dispatch_tool_call, + dispatch_tool_call_with_manager, +) +from reachy_mini_conversation_app.tools.tool_constants import ToolState, SystemTool + + +logger = logging.getLogger(__name__) + +_SYSTEM_TOOL_NAMES: set[str] = {t.value for t in SystemTool} + +class ToolProgress(BaseModel): + """Progress of a background tool.""" + + """the progress of the tool""" + progress: float = Field(..., ge=0.0, le=1.0) + + """the message of the tool""" + message: Optional[str] = None + + +class ToolCallRoutine(BaseModel): + """Encapsulates an async callable with its arguments for deferred execution.""" + + model_config = {"arbitrary_types_allowed": True} + + """the name of the tool""" + tool_name: str + + """the JSON arguments for the tool call""" + args_json_str: str + + """the dependencies for the tool call""" + deps: "ToolDependencies" + + async def __call__(self, tool_manager: BackgroundToolManager) -> Any: + """Execute the stored callable with its arguments.""" + if self.tool_name in _SYSTEM_TOOL_NAMES: + # For safety purposes, we only allow system tools to be called with the tool manager + return await dispatch_tool_call_with_manager(tool_name=self.tool_name, args_json=self.args_json_str, deps=self.deps, tool_manager=tool_manager) + return await dispatch_tool_call(tool_name=self.tool_name, args_json=self.args_json_str, deps=self.deps) + + +class ToolNotification(BaseModel): + """Notification payload for completed tools.""" + + """the ID of the tool""" + id: str + + """the name of the tool""" + tool_name: str + + """whether the tool call was triggered by an idle signal""" + is_idle_tool_call: bool + + """the status of the tool""" + status: ToolState + + """the result of the tool""" + result: Optional[Dict[str, Any]] = None + + """the error of the tool""" + error: Optional[str] = None + + +class BackgroundTool(ToolNotification): + """Represents a background tool.""" + + """the progress of the tool""" + progress: Optional[ToolProgress] = None + + """the start time of the tool""" + started_at: float = Field(default_factory=time.monotonic) + + """the completion time of the tool""" + completed_at: Optional[float] = None + + """the async tool execution task""" + _task: Optional[asyncio.Task[None]] = PrivateAttr(default=None) + + @property + def tool_id(self) -> str: + """Get the name of the tool.""" + return f"{self.tool_name}-{self.id}-{self.started_at}" + + def get_notification(self) -> ToolNotification: + """Get the notification for the tool.""" + return ToolNotification( + id=self.id, + tool_name=self.tool_name, + is_idle_tool_call=self.is_idle_tool_call, + status=self.status, + result=self.result, + error=self.error, + ) + + +class BackgroundToolManager(BaseModel): + """Manages background tools for non-blocking tool execution. + + Features: + - Start async tools without blocking the conversation + - Track tool status and progress + - Cancel running tools + + """ + + """the dictionary of tools""" + _tools: Dict[str, BackgroundTool] = PrivateAttr(default_factory=dict) + + """the async queue for notifications""" + _notification_queue: asyncio.Queue[ToolNotification] = PrivateAttr(default_factory=asyncio.Queue) + + """the event loop""" + _loop: Optional[asyncio.AbstractEventLoop] = PrivateAttr(default=None) + + """internal lifecycle tasks (notification listener, periodic cleanup)""" + _lifecycle_tasks: list[asyncio.Task[None]] = PrivateAttr(default_factory=list) + + """the maximum duration of a tool execution in seconds (default: 1 day)""" + _max_tool_duration_seconds: float = PrivateAttr(default=86400) + + """the maximum time to keep a completed/failed/cancelled tool in memory (default: 1 hour)""" + _max_tool_memory_seconds: float = PrivateAttr(default=3600) + + def set_loop( + self, + loop: Optional[asyncio.AbstractEventLoop] = None, + ) -> None: + """Set the event loop. + + Args: + loop: The event loop (defaults to current running loop) + + """ + if loop is not None: + self._loop = loop + else: + try: + self._loop = asyncio.get_running_loop() + except RuntimeError: + self._loop = asyncio.new_event_loop() + logger.debug("BackgroundToolManager: event loop set") + + + async def start_tool( + self, + call_id: str, + tool_call_routine: ToolCallRoutine, + is_idle_tool_call: bool, + with_progress: bool = False, + ) -> BackgroundTool: + """Start a new background tool. + + Args: + call_id: The ID of the tool + tool_call_routine: The ToolCallRoutine containing the callable and its arguments + with_progress: Whether to track progress (0.0-1.0) + is_idle_tool_call: Whether the tool call was triggered by an idle signal + + Returns: + BackgroundTool object with tool ID + + """ + tool_name = tool_call_routine.tool_name + id = call_id + bg_tool = BackgroundTool( + id=id, + tool_name=tool_name, + is_idle_tool_call=is_idle_tool_call, + progress=ToolProgress(progress=0.0) if with_progress else None, + status=ToolState.RUNNING, + ) + self._tools[bg_tool.tool_id] = bg_tool + + async_task = asyncio.create_task( + self._run_tool(bg_tool, tool_call_routine), + name=f"bg-{tool_name}-{id}", + ) + bg_tool._task = async_task + + logger.info(f"Started background tool: {bg_tool.tool_name} (id={id})") + + return bg_tool + + async def _run_tool( + self, + bg_tool: BackgroundTool, + tool_call_routine: ToolCallRoutine, + ) -> None: + """Execute the tool and handle completion.""" + result: dict[str, Any] = await tool_call_routine(self) + bg_tool.completed_at = time.monotonic() + error = result.get("error") + + if error is not None: + if error == "Tool cancelled": + bg_tool.status = ToolState.CANCELLED + logger.debug(f"Background tool cancelled: {bg_tool.tool_name} (id={bg_tool.id})") + else: + bg_tool.status = ToolState.FAILED + logger.debug(f"Background tool failed: {bg_tool.tool_name} (id={bg_tool.id}): {bg_tool.error}") + bg_tool.error = result["error"] + + else: + bg_tool.result = result + bg_tool.status = ToolState.COMPLETED + logger.debug(f"Background tool completed: {bg_tool.tool_name} (id={bg_tool.id})") + + await self._notification_queue.put(bg_tool.get_notification()) + logger.debug(f"Queued notification for tool: {bg_tool.tool_name} (id={bg_tool.id})") + + async def update_progress( + self, + tool_id: str, + progress: float, + message: Optional[str] = None, + ) -> bool: + """Update progress for a tool (for tools with with_progress=True). + + Args: + tool_id: The tool ID + progress: Progress value between 0.0 and 1.0 + message: Optional progress message (e.g., "50% downloaded") + + Returns: + True if updated successfully, False if tool not found or not tracking progress + + """ + tool = self._tools.get(tool_id) + if tool is None: + return False + + if tool.progress is None: + # Tool not tracking progress + return False + + tool.progress = ToolProgress(progress=max(0.0, min(1.0, progress)), message=message) + logger.debug(f"Tool {tool_id} progress: {progress:.1%} - {message or ''}") + return True + + async def cancel_tool(self, tool_id: str, log: bool = True) -> bool: + """Cancel a running tool by ID. + + Args: + tool_id: The tool ID to cancel + log: Whether to log the cancellation + + Returns: + True if cancelled, False if tool not found or not running + + """ + tool = self._tools.get(tool_id) + if tool is None: + if log: + logger.warning(f"Cannot cancel tool {tool_id}: not found") + return False + + if tool.status != ToolState.RUNNING: + if log: + logger.warning(f"Cannot cancel tool {tool_id}: status is {tool.status.value}") + return True + + if tool._task: + tool._task.cancel() + if log: + logger.info(f"Cancelled tool: {tool.tool_name} (id={tool_id})") + return True + + return False + + def start_up(self, tool_callbacks: list[Callable[[ToolNotification], Coroutine[Any, Any, None]]]) -> None: + """Start the background tool manager. + + This method starts two concurrent tasks: + - _listener: Listens for completed BackgroundTool notifications and calls the callbacks. + - _cleanup: Cleans up completed/failed/cancelled tools that have been in memory for too long and times out tools that have been running too long. + + Args: + tool_callbacks: A list of async or sync callables that receive the completed BackgroundTool notifications. + + """ + self.set_loop() + + async def _listener() -> None: + while True: + bg_tool = await self._notification_queue.get() + for callback in tool_callbacks: + await callback(bg_tool) + + async def _cleanup(interval_seconds: float = 5 * 60) -> None: + while True: + await asyncio.sleep(interval_seconds) + await self.cleanup_tools() + await self.timeout_tools() + + self._lifecycle_tasks = [ + asyncio.create_task(_cleanup(), name="bg-tool-cleanup"), + asyncio.create_task(_listener(), name="bg-tool-listener-callback"), + ] + + logger.info( + "BackgroundToolManager started. " + "Max tool execution duration: %s seconds (tools running longer will be auto-cancelled). " + "Max tool memory retention: %s seconds (completed/failed/cancelled tools older than this are purged).", + self._max_tool_duration_seconds, self._max_tool_memory_seconds, + ) + + async def shutdown(self) -> None: + """Cancel all background tasks (listener, cleanup) and running tools.""" + for task in self._lifecycle_tasks: + task.cancel() + for task in self._lifecycle_tasks: + try: + await task + except asyncio.CancelledError: + pass + self._lifecycle_tasks.clear() + + for tool_id in list(self._tools): + await self.cancel_tool(tool_id, log=False) + + logger.info("BackgroundToolManager shut down") + + async def timeout_tools(self) -> int: + """Cancel tools that have been running too long. + + Returns: + Number of tools cancelled + + """ + now = time.monotonic() + to_cancel = [] + + for tool_id, tool in self._tools.items(): + if tool.status == ToolState.RUNNING: + if tool.started_at and (now - tool.started_at) > self._max_tool_duration_seconds: + to_cancel.append(tool_id) + + for tool_id in to_cancel: + await self.cancel_tool(tool_id) + + if to_cancel: + logger.debug(f"Timed out {len(to_cancel)} tools") + + return len(to_cancel) + + async def cleanup_tools(self) -> int: + """Remove completed/failed/cancelled tools that have been in memory for too long. + + Returns: + Number of tools removed + + """ + now = time.monotonic() + to_remove = [] + + for tool_id, tool in self._tools.items(): + if tool.status in (ToolState.COMPLETED, ToolState.FAILED, ToolState.CANCELLED): + if tool.completed_at and (now - tool.completed_at) > self._max_tool_memory_seconds: + to_remove.append(tool_id) + + for tool_id in to_remove: + del self._tools[tool_id] + + if to_remove: + logger.debug(f"Cleaned up {len(to_remove)} old tools") + + return len(to_remove) + + def get_tool(self, tool_id: str) -> Optional[BackgroundTool]: + """Get a tool by ID.""" + return self._tools.get(tool_id) + + def get_running_tools(self) -> list[BackgroundTool]: + """Get all currently running tools.""" + return [t for t in self._tools.values() if t.status == ToolState.RUNNING] + + def get_all_tools(self, limit: Optional[int] = None) -> list[BackgroundTool]: + """Get recent tools (most recent first). + + Args: + limit: Maximum number of tools to return (None means all) + + Returns: + List of tools sorted by start time (most recent first) + + """ + sorted_tools = sorted( + self._tools.values(), + key=lambda t: t.started_at, + reverse=True, + ) + if limit is not None: + return sorted_tools[:limit] + return sorted_tools diff --git a/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/tools/camera.py b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/tools/camera.py new file mode 100644 index 00000000..0c7fbb8f --- /dev/null +++ b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/tools/camera.py @@ -0,0 +1,68 @@ +import base64 +import asyncio +import logging +from typing import Any, Dict + +import cv2 + +from reachy_mini_conversation_app.tools.core_tools import Tool, ToolDependencies + + +logger = logging.getLogger(__name__) + + +class Camera(Tool): + """Take a picture with the camera and ask a question about it.""" + + name = "camera" + description = "Take a picture with the camera and ask a question about it." + parameters_schema = { + "type": "object", + "properties": { + "question": { + "type": "string", + "description": "The question to ask about the picture", + }, + }, + "required": ["question"], + } + + async def __call__(self, deps: ToolDependencies, **kwargs: Any) -> Dict[str, Any]: + """Take a picture with the camera and ask a question about it.""" + image_query = (kwargs.get("question") or "").strip() + if not image_query: + logger.warning("camera: empty question") + return {"error": "question must be a non-empty string"} + + logger.info("Tool call: camera question=%s", image_query[:120]) + + # Get frame from camera worker buffer (like main_works.py) + if deps.camera_worker is not None: + frame = deps.camera_worker.get_latest_frame() + if frame is None: + logger.error("No frame available from camera worker") + return {"error": "No frame available"} + else: + logger.error("Camera worker not available") + return {"error": "Camera worker not available"} + + # Use vision manager for processing if available + if deps.vision_manager is not None: + vision_result = await asyncio.to_thread( + deps.vision_manager.processor.process_image, frame, image_query, + ) + if isinstance(vision_result, dict) and "error" in vision_result: + return vision_result + return ( + {"image_description": vision_result} + if isinstance(vision_result, str) + else {"error": "vision returned non-string"} + ) + + # Encode image directly to JPEG bytes without writing to file + success, buffer = cv2.imencode('.jpg', frame) + if not success: + raise RuntimeError("Failed to encode frame as JPEG") + + b64_encoded = base64.b64encode(buffer.tobytes()).decode("utf-8") + return {"b64_im": b64_encoded} diff --git a/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/tools/core_tools.py b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/tools/core_tools.py new file mode 100644 index 00000000..38bd525e --- /dev/null +++ b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/tools/core_tools.py @@ -0,0 +1,213 @@ +from __future__ import annotations +import abc +import json +import asyncio +import inspect +import logging +import importlib +from typing import TYPE_CHECKING, Any, Dict, List +from dataclasses import dataclass + +from reachy_mini import ReachyMini +from reachy_mini_conversation_app.config import LOCKED_PROFILE, DEFAULT_PROFILES_DIRECTORY +from reachy_mini_conversation_app.tools.tool_constants import SystemTool + + +if TYPE_CHECKING: + from reachy_mini_conversation_app.tools.background_tool_manager import BackgroundToolManager + + +logger = logging.getLogger(__name__) + + +DEFAULT_PROFILES_MODULE = "reachy_mini_conversation_app.profiles" + + +if not logger.handlers: + handler = logging.StreamHandler() + formatter = logging.Formatter("%(asctime)s %(levelname)s %(name)s:%(lineno)d | %(message)s") + handler.setFormatter(formatter) + logger.addHandler(handler) + logger.setLevel(logging.INFO) + + +ALL_TOOLS: Dict[str, "Tool"] = {} +ALL_TOOL_SPECS: List[Dict[str, Any]] = [] +_TOOLS_INITIALIZED = False + + +def get_concrete_subclasses(base: type[Tool]) -> List[type[Tool]]: + """Recursively find all concrete (non-abstract) subclasses of a base class.""" + result: List[type[Tool]] = [] + for cls in base.__subclasses__(): + if not inspect.isabstract(cls): + result.append(cls) + result.extend(get_concrete_subclasses(cls)) + return result + + +@dataclass +class ToolDependencies: + """External dependencies injected into tools.""" + + reachy_mini: ReachyMini + movement_manager: Any + camera_worker: Any | None = None + vision_manager: Any | None = None + head_wobbler: Any | None = None + motion_duration_s: float = 1.0 + + +class Tool(abc.ABC): + """Base abstraction for tools used in function-calling.""" + + name: str + description: str + parameters_schema: Dict[str, Any] + + def spec(self) -> Dict[str, Any]: + """Return the function spec for LLM consumption.""" + return { + "type": "function", + "name": self.name, + "description": self.description, + "parameters": self.parameters_schema, + } + + @abc.abstractmethod + async def __call__(self, deps: ToolDependencies, **kwargs: Any) -> Dict[str, Any]: + """Async tool execution entrypoint.""" + raise NotImplementedError + + +def _try_import_tool(module_path: str) -> bool: + """Import a tool module, returning False only when that module does not exist.""" + try: + importlib.import_module(module_path) + return True + except ModuleNotFoundError as exc: + if exc.name != module_path: + raise + return False + + +def _format_error(error: Exception) -> str: + """Format an exception for logging.""" + if isinstance(error, ModuleNotFoundError): + return f"Missing dependency: {error}" + if isinstance(error, ImportError): + return f"Import error: {error}" + return f"{type(error).__name__}: {error}" + + +def _load_profile_tools() -> None: + """Load tools from the locked profile's tools.txt file.""" + profile = LOCKED_PROFILE + logger.info("Loading tools for locked profile: %s", profile) + + profile_module_path = DEFAULT_PROFILES_DIRECTORY / profile + tools_txt_path = profile_module_path / "tools.txt" + + if not tools_txt_path.exists(): + raise RuntimeError(f"tools.txt not found at {tools_txt_path}") + + try: + lines = tools_txt_path.read_text(encoding="utf-8").splitlines() + except Exception as e: + raise RuntimeError(f"Failed to read tools.txt: {e}") from e + + tool_names = [] + for line in lines: + line = line.strip() + if not line or line.startswith("#"): + continue + tool_names.append(line) + + tool_names.extend({tool.value for tool in SystemTool}) + + logger.info("Found %d tools to load: %s", len(tool_names), tool_names) + + for tool_name in tool_names: + profile_import_path = f"{DEFAULT_PROFILES_MODULE}.{profile}.{tool_name}" + shared_module_path = f"reachy_mini_conversation_app.tools.{tool_name}" + + try: + if _try_import_tool(profile_import_path): + logger.info("Loaded profile tool: %s", tool_name) + continue + except Exception as e: + raise RuntimeError(f"Failed to load profile tool '{tool_name}': {_format_error(e)}") from e + + try: + if _try_import_tool(shared_module_path): + logger.info("Loaded built-in tool: %s", tool_name) + continue + except Exception as e: + raise RuntimeError(f"Failed to load built-in tool '{tool_name}': {_format_error(e)}") from e + + raise RuntimeError(f"Tool '{tool_name}' was not found in the locked profile or built-in tools") + + +def _initialize_tools() -> None: + """Populate registry once, even if module is imported repeatedly.""" + global ALL_TOOLS, ALL_TOOL_SPECS, _TOOLS_INITIALIZED + + if _TOOLS_INITIALIZED: + logger.debug("Tools already initialized; skipping reinitialization.") + return + + _load_profile_tools() + + ALL_TOOLS = {cls.name: cls() for cls in get_concrete_subclasses(Tool)} # type: ignore[type-abstract] + ALL_TOOL_SPECS = [tool.spec() for tool in ALL_TOOLS.values()] + + for tool_name, tool in ALL_TOOLS.items(): + logger.info(f"tool registered: {tool_name} - {tool.description}") + + _TOOLS_INITIALIZED = True + + +_initialize_tools() + + +def get_tool_specs(exclusion_list: list[str] | None = None) -> list[Dict[str, Any]]: + """Get tool specs, optionally excluding some tools.""" + exclusion_list = exclusion_list or [] + return [spec for spec in ALL_TOOL_SPECS if spec.get("name") not in exclusion_list] + + +# Dispatcher +def _safe_load_obj(args_json: str) -> Dict[str, Any]: + try: + parsed_args = json.loads(args_json or "{}") + return parsed_args if isinstance(parsed_args, dict) else {} + except Exception: + logger.warning("bad args_json=%r", args_json) + return {} + + +async def _dispatch_tool_call(tool_name: str, args: Dict[str, Any], deps: ToolDependencies) -> Dict[str, Any]: + tool = ALL_TOOLS.get(tool_name) + if not tool: + return {"error": f"unknown tool: {tool_name}"} + try: + return await tool(deps, **args) + except asyncio.CancelledError: + logger.info("Tool cancelled: %s", tool_name) + return {"error": "Tool cancelled"} + except Exception as e: + msg = f"{type(e).__name__}: {e}" + logger.exception("Tool error in %s: %s", tool_name, msg) + return {"error": msg} + + +async def dispatch_tool_call(tool_name: str, args_json: str, deps: ToolDependencies) -> Dict[str, Any]: + """Dispatch a tool call by name with JSON args and dependencies.""" + return await _dispatch_tool_call(tool_name, _safe_load_obj(args_json), deps) + + +async def dispatch_tool_call_with_manager(tool_name: str, args_json: str, deps: ToolDependencies, tool_manager: "BackgroundToolManager") -> Dict[str, Any]: + """Dispatch a tool call, injecting a BackgroundToolManager into the args.""" + args = _safe_load_obj(args_json) + args["tool_manager"] = tool_manager + return await _dispatch_tool_call(tool_name, args, deps) diff --git a/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/tools/dance.py b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/tools/dance.py new file mode 100644 index 00000000..833cd552 --- /dev/null +++ b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/tools/dance.py @@ -0,0 +1,86 @@ +import logging +from typing import Any, Dict + +from reachy_mini_conversation_app.tools.core_tools import Tool, ToolDependencies + + +logger = logging.getLogger(__name__) + +# Initialize dance library +try: + from reachy_mini_dances_library.collection.dance import AVAILABLE_MOVES + from reachy_mini_conversation_app.dance_emotion_moves import DanceQueueMove + + DANCE_AVAILABLE = True +except ImportError as e: + logger.warning(f"Dance library not available: {e}") + AVAILABLE_MOVES = {} + DANCE_AVAILABLE = False + + +class Dance(Tool): + """Play a named or random dance move once (or repeat). Non-blocking.""" + + name = "dance" + description = "Play a named or random dance move once (or repeat). Non-blocking." + parameters_schema = { + "type": "object", + "properties": { + "move": { + "type": "string", + "description": """Name of the move; use 'random' or omit for random. + Here is a list of the available moves: + simple_nod: A simple, continuous up-and-down nodding motion. + head_tilt_roll: A continuous side-to-side head roll (ear to shoulder). + side_to_side_sway: A smooth, side-to-side sway of the entire head. + dizzy_spin: A circular 'dizzy' head motion combining roll and pitch. + stumble_and_recover: A simulated stumble and recovery with multiple axis movements. Good vibes + interwoven_spirals: A complex spiral motion using three axes at different frequencies. + sharp_side_tilt: A sharp, quick side-to-side tilt using a triangle waveform. + side_peekaboo: A multi-stage peekaboo performance, hiding and peeking to each side. + yeah_nod: An emphatic two-part yeah nod using transient motions. + uh_huh_tilt: A combined roll-and-pitch uh-huh gesture of agreement. + neck_recoil: A quick, transient backward recoil of the neck. + chin_lead: A forward motion led by the chin, combining translation and pitch. + groovy_sway_and_roll: A side-to-side sway combined with a corresponding roll for a groovy effect. + chicken_peck: A sharp, forward, chicken-like pecking motion. + side_glance_flick: A quick glance to the side that holds, then returns. + polyrhythm_combo: A 3-beat sway and a 2-beat nod create a polyrhythmic feel. + grid_snap: A robotic, grid-snapping motion using square waveforms. + pendulum_swing: A simple, smooth pendulum-like swing using a roll motion. + jackson_square: Traces a rectangle via a 5-point path, with sharp twitches on arrival at each checkpoint. + """, + }, + "repeat": { + "type": "integer", + "description": "How many times to repeat the move (default 1).", + }, + }, + "required": [], + } + + async def __call__(self, deps: ToolDependencies, **kwargs: Any) -> Dict[str, Any]: + """Play a named or random dance move once (or repeat). Non-blocking.""" + if not DANCE_AVAILABLE: + return {"error": "Dance system not available"} + + move_name = kwargs.get("move") + repeat = int(kwargs.get("repeat", 1)) + + logger.info("Tool call: dance move=%s repeat=%d", move_name, repeat) + + if not move_name or move_name == "random": + import random + + move_name = random.choice(list(AVAILABLE_MOVES.keys())) + + if move_name not in AVAILABLE_MOVES: + return {"error": f"Unknown dance move '{move_name}'. Available: {list(AVAILABLE_MOVES.keys())}"} + + # Add dance moves to queue + movement_manager = deps.movement_manager + for _ in range(repeat): + dance_move = DanceQueueMove(move_name) + movement_manager.queue_move(dance_move) + + return {"status": "queued", "move": move_name, "repeat": repeat} diff --git a/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/tools/do_nothing.py b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/tools/do_nothing.py new file mode 100644 index 00000000..c64588f6 --- /dev/null +++ b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/tools/do_nothing.py @@ -0,0 +1,30 @@ +import logging +from typing import Any, Dict + +from reachy_mini_conversation_app.tools.core_tools import Tool, ToolDependencies + + +logger = logging.getLogger(__name__) + + +class DoNothing(Tool): + """Choose to do nothing - stay still and silent. Use when you want to be contemplative or just chill.""" + + name = "do_nothing" + description = "Choose to do nothing - stay still and silent. Use when you want to be contemplative or just chill." + parameters_schema = { + "type": "object", + "properties": { + "reason": { + "type": "string", + "description": "Optional reason for doing nothing (e.g., 'contemplating existence', 'saving energy', 'being mysterious')", + }, + }, + "required": [], + } + + async def __call__(self, deps: ToolDependencies, **kwargs: Any) -> Dict[str, Any]: + """Do nothing - stay still and silent.""" + reason = kwargs.get("reason", "just chilling") + logger.info("Tool call: do_nothing reason=%s", reason) + return {"status": "doing nothing", "reason": reason} diff --git a/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/tools/head_tracking.py b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/tools/head_tracking.py new file mode 100644 index 00000000..57fa178d --- /dev/null +++ b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/tools/head_tracking.py @@ -0,0 +1,31 @@ +import logging +from typing import Any, Dict + +from reachy_mini_conversation_app.tools.core_tools import Tool, ToolDependencies + + +logger = logging.getLogger(__name__) + + +class HeadTracking(Tool): + """Toggle head tracking state.""" + + name = "head_tracking" + description = "Toggle head tracking state." + parameters_schema = { + "type": "object", + "properties": {"start": {"type": "boolean"}}, + "required": ["start"], + } + + async def __call__(self, deps: ToolDependencies, **kwargs: Any) -> Dict[str, Any]: + """Enable or disable head tracking.""" + enable = bool(kwargs.get("start")) + + # Update camera worker head tracking state + if deps.camera_worker is not None: + deps.camera_worker.set_head_tracking_enabled(enable) + + status = "started" if enable else "stopped" + logger.info("Tool call: head_tracking %s", status) + return {"status": f"head tracking {status}"} diff --git a/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/tools/move_head.py b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/tools/move_head.py new file mode 100644 index 00000000..4633572e --- /dev/null +++ b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/tools/move_head.py @@ -0,0 +1,79 @@ +import logging +from typing import Any, Dict, Tuple, Literal + +from reachy_mini.utils import create_head_pose +from reachy_mini_conversation_app.goto_queue_move import GotoQueueMove +from reachy_mini_conversation_app.tools.core_tools import Tool, ToolDependencies + + +logger = logging.getLogger(__name__) + +Direction = Literal["left", "right", "up", "down", "front"] + + +class MoveHead(Tool): + """Move head in a given direction.""" + + name = "move_head" + description = "Move your head in a given direction: left, right, up, down or front." + parameters_schema = { + "type": "object", + "properties": { + "direction": { + "type": "string", + "enum": ["left", "right", "up", "down", "front"], + }, + }, + "required": ["direction"], + } + + # mapping: direction -> args for create_head_pose + DELTAS: Dict[str, Tuple[int, int, int, int, int, int]] = { + "left": (0, 0, 0, 0, 0, 40), + "right": (0, 0, 0, 0, 0, -40), + "up": (0, 0, 0, 0, -30, 0), + "down": (0, 0, 0, 0, 30, 0), + "front": (0, 0, 0, 0, 0, 0), + } + + async def __call__(self, deps: ToolDependencies, **kwargs: Any) -> Dict[str, Any]: + """Move head in a given direction.""" + direction_raw = kwargs.get("direction") + if not isinstance(direction_raw, str): + return {"error": "direction must be a string"} + direction: Direction = direction_raw # type: ignore[assignment] + logger.info("Tool call: move_head direction=%s", direction) + + deltas = self.DELTAS.get(direction, self.DELTAS["front"]) + target = create_head_pose(*deltas, degrees=True) + + # Use new movement manager + try: + movement_manager = deps.movement_manager + + # Get current state for interpolation + current_head_pose = deps.reachy_mini.get_current_head_pose() + _, current_antennas = deps.reachy_mini.get_current_joint_positions() + + # Create goto move + goto_move = GotoQueueMove( + target_head_pose=target, + start_head_pose=current_head_pose, + target_antennas=(0, 0), # Reset antennas to default + start_antennas=( + current_antennas[0], + current_antennas[1], + ), # Skip body_yaw + target_body_yaw=0, # Reset body yaw + start_body_yaw=current_antennas[0], # body_yaw is first in joint positions + duration=deps.motion_duration_s, + ) + + movement_manager.queue_move(goto_move) + movement_manager.set_moving_state(deps.motion_duration_s) + + return {"status": f"looking {direction}"} + + except Exception as e: + logger.error("move_head failed") + return {"error": f"move_head failed: {type(e).__name__}: {e}"} diff --git a/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/tools/play_emotion.py b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/tools/play_emotion.py new file mode 100644 index 00000000..34b2fdac --- /dev/null +++ b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/tools/play_emotion.py @@ -0,0 +1,84 @@ +import logging +from typing import Any, Dict + +from reachy_mini_conversation_app.tools.core_tools import Tool, ToolDependencies + + +logger = logging.getLogger(__name__) + +# Initialize emotion library +try: + from reachy_mini.motion.recorded_move import RecordedMoves + from reachy_mini_conversation_app.dance_emotion_moves import EmotionQueueMove + + # Note: huggingface_hub automatically reads HF_TOKEN from environment variables + RECORDED_MOVES = RecordedMoves("pollen-robotics/reachy-mini-emotions-library") + EMOTION_AVAILABLE = True +except ImportError as e: + logger.warning(f"Emotion library not available: {e}") + RECORDED_MOVES = None + EMOTION_AVAILABLE = False + + +def get_available_emotions_and_descriptions() -> str: + """Get formatted list of available emotions with descriptions.""" + if not EMOTION_AVAILABLE: + return "Emotions not available" + + try: + emotion_names = RECORDED_MOVES.list_moves() + output = "Available emotions:\n" + for name in emotion_names: + description = RECORDED_MOVES.get(name).description + output += f" - {name}: {description}\n" + return output + except Exception as e: + return f"Error getting emotions: {e}" + + +class PlayEmotion(Tool): + """Play a pre-recorded emotion.""" + + name = "play_emotion" + description = "Play a pre-recorded emotion" + parameters_schema = { + "type": "object", + "properties": { + "emotion": { + "type": "string", + "description": f"""Name of the emotion to play. + Here is a list of the available emotions: + {get_available_emotions_and_descriptions()} + """, + }, + }, + "required": ["emotion"], + } + + async def __call__(self, deps: ToolDependencies, **kwargs: Any) -> Dict[str, Any]: + """Play a pre-recorded emotion.""" + if not EMOTION_AVAILABLE: + return {"error": "Emotion system not available"} + + emotion_name = kwargs.get("emotion") + if not emotion_name: + return {"error": "Emotion name is required"} + + logger.info("Tool call: play_emotion emotion=%s", emotion_name) + + # Check if emotion exists + try: + emotion_names = RECORDED_MOVES.list_moves() + if emotion_name not in emotion_names: + return {"error": f"Unknown emotion '{emotion_name}'. Available: {emotion_names}"} + + # Add emotion to queue + movement_manager = deps.movement_manager + emotion_move = EmotionQueueMove(emotion_name, RECORDED_MOVES) + movement_manager.queue_move(emotion_move) + + return {"status": "queued", "emotion": emotion_name} + + except Exception as e: + logger.exception("Failed to play emotion") + return {"error": f"Failed to play emotion: {e!s}"} diff --git a/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/tools/stop_dance.py b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/tools/stop_dance.py new file mode 100644 index 00000000..ab14e84a --- /dev/null +++ b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/tools/stop_dance.py @@ -0,0 +1,31 @@ +import logging +from typing import Any, Dict + +from reachy_mini_conversation_app.tools.core_tools import Tool, ToolDependencies + + +logger = logging.getLogger(__name__) + + +class StopDance(Tool): + """Stop the current dance move.""" + + name = "stop_dance" + description = "Stop the current dance move" + parameters_schema = { + "type": "object", + "properties": { + "dummy": { + "type": "boolean", + "description": "dummy boolean, set it to true", + }, + }, + "required": ["dummy"], + } + + async def __call__(self, deps: ToolDependencies, **kwargs: Any) -> Dict[str, Any]: + """Stop the current dance move.""" + logger.info("Tool call: stop_dance") + movement_manager = deps.movement_manager + movement_manager.clear_move_queue() + return {"status": "stopped dance and cleared queue"} diff --git a/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/tools/stop_emotion.py b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/tools/stop_emotion.py new file mode 100644 index 00000000..b5d2323f --- /dev/null +++ b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/tools/stop_emotion.py @@ -0,0 +1,31 @@ +import logging +from typing import Any, Dict + +from reachy_mini_conversation_app.tools.core_tools import Tool, ToolDependencies + + +logger = logging.getLogger(__name__) + + +class StopEmotion(Tool): + """Stop the current emotion.""" + + name = "stop_emotion" + description = "Stop the current emotion" + parameters_schema = { + "type": "object", + "properties": { + "dummy": { + "type": "boolean", + "description": "dummy boolean, set it to true", + }, + }, + "required": ["dummy"], + } + + async def __call__(self, deps: ToolDependencies, **kwargs: Any) -> Dict[str, Any]: + """Stop the current emotion.""" + logger.info("Tool call: stop_emotion") + movement_manager = deps.movement_manager + movement_manager.clear_move_queue() + return {"status": "stopped emotion and cleared queue"} diff --git a/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/tools/task_cancel.py b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/tools/task_cancel.py new file mode 100644 index 00000000..6e3c6e89 --- /dev/null +++ b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/tools/task_cancel.py @@ -0,0 +1,74 @@ +"""Tool cancel tool - cancel running background tools.""" + +import logging +from typing import TYPE_CHECKING, Any, Dict + +from reachy_mini_conversation_app.tools.core_tools import Tool, ToolDependencies +from reachy_mini_conversation_app.tools.tool_constants import ToolState + + +if TYPE_CHECKING: + from reachy_mini_conversation_app.tools.background_tool_manager import BackgroundToolManager + + +logger = logging.getLogger(__name__) + + +class TaskCancel(Tool): + """Cancel a running background tool task.""" + + name = "task_cancel" + description = ( + "Cancel a running background tool task. " + "Use this when the user wants to stop a tool that's running in the background. " + "Requires confirmation before cancelling." + ) + parameters_schema = { + "type": "object", + "properties": { + "tool_id": { + "type": "string", + "description": "The tool ID to cancel", + } + }, + "required": ["tool_id"], + } + + async def __call__(self, deps: ToolDependencies, **kwargs: Any) -> Dict[str, Any]: + """Cancel a background tool.""" + tool_id = kwargs.get("tool_id", "") + tool_manager: BackgroundToolManager | None = kwargs.get("tool_manager") + + if tool_manager is None: + return {"error": "Tool manager is required."} + + logger.info(f"Tool call: tool_cancel tool_id={tool_id}") + + if not tool_id: + return {"error": "Tool ID is required."} + + tool = tool_manager.get_tool(tool_id) + + if not tool: + return {"error": f"Tool {tool_id} not found."} + + # Check if tool is still running + if tool.status != ToolState.RUNNING: + return { + "status": f"{tool.status.value}", + "message": f"Tool '{tool.tool_name}' is not running (status: {tool.status.value}).", + "tool_id": tool_id, + } + + # Cancel the tool + if await tool_manager.cancel_tool(tool_id): + return { + "status": "cancelled", + "message": f"Tool '{tool.tool_name}' has been cancelled.", + "tool_id": tool_id, + "tool_name": tool.tool_name, + } + else: + return { + "error": f"Could not cancel tool {tool_id}. It may have already completed.", + } diff --git a/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/tools/task_status.py b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/tools/task_status.py new file mode 100644 index 00000000..a5d0138d --- /dev/null +++ b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/tools/task_status.py @@ -0,0 +1,104 @@ +"""Tool status tool - check status of background tools.""" + +import time +import logging +from typing import TYPE_CHECKING, Any, Dict + +from reachy_mini_conversation_app.tools.core_tools import Tool, ToolDependencies +from reachy_mini_conversation_app.tools.tool_constants import SystemTool + + +if TYPE_CHECKING: + from reachy_mini_conversation_app.tools.background_tool_manager import BackgroundToolManager + + +logger = logging.getLogger(__name__) + + +class TaskStatus(Tool): + """Check status of background tool tasks.""" + + name = "task_status" + description = ( + "Check the status of background tool tasks. " + "Use this when the user asks about running tools or wants to know what's happening in the background." + ) + parameters_schema = { + "type": "object", + "properties": { + "tool_id": { + "type": "string", + "description": "Specific tool ID to check (optional, shows all running tools if omitted)", + }, + }, + "required": [], + } + + async def __call__(self, deps: ToolDependencies, **kwargs: Any) -> Dict[str, Any]: + """Get status of background tools.""" + tool_id: str | None = kwargs.get("tool_id") + tool_manager: BackgroundToolManager | None = kwargs.get("tool_manager") + + if tool_manager is None: + return {"error": "Tool manager is required."} + + logger.info(f"Tool call: tool_status tool_id={tool_id}") + + if tool_id: + tool = tool_manager.get_tool(tool_id) + if not tool: + return {"error": f"Tool {tool_id} not found."} + + result: Dict[str, Any] = { + "tool_id": tool.tool_id, + "name": tool.tool_name, + "status": tool.status.value, + "started_at": tool.started_at, + } + if tool.completed_at: + result["completed_at"] = tool.completed_at + + if tool.progress is not None: + result["progress_percent"] = f"{tool.progress.progress:.0%}" + if tool.progress.message: + result["progress_message"] = tool.progress.message + + if tool.result: + result["result"] = tool.result + if tool.error: + result["error"] = tool.error + + return result + + # Get all running tools + running = tool_manager.get_running_tools() + if not running: + return { + "status": "idle", + "message": "No tools running in the background.", + } + + tools_info = [] + for tool in [tool for tool in running if tool.tool_name not in [system_tool.value for system_tool in SystemTool]]: + elapsed = time.monotonic() - tool.started_at + tool_info: Dict[str, Any] = { + "tool_id": tool.tool_id, + "name": tool.tool_name, + "status": tool.status.value, + "elapsed_seconds": round(elapsed, 1), + } + + # Add progress if tracking + if tool.progress is not None: + tool_info["progress_percent"] = f"{tool.progress.progress:.0%}" + if tool.progress.message: + tool_info["progress_message"] = tool.progress.message + + tools_info.append(tool_info) + + return { + "status": "running", + "count": len(tools_info), + "message": f"{len(tools_info)} tool(s) running in the background.", + "tools": tools_info, + } diff --git a/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/tools/tool_constants.py b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/tools/tool_constants.py new file mode 100644 index 00000000..da163c09 --- /dev/null +++ b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/tools/tool_constants.py @@ -0,0 +1,17 @@ +from enum import Enum + + +class ToolState(Enum): + """Status of a background tool.""" + + RUNNING = "running" + COMPLETED = "completed" + FAILED = "failed" + CANCELLED = "cancelled" + + +class SystemTool(Enum): + """System tools are tools that are used to manage the background tool manager.""" + + TASK_STATUS = "task_status" + TASK_CANCEL = "task_cancel" diff --git a/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/utils.py b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/utils.py new file mode 100644 index 00000000..67e28275 --- /dev/null +++ b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/utils.py @@ -0,0 +1,123 @@ +import logging +import argparse +import warnings +from typing import Any, Tuple, Optional + +from reachy_mini import ReachyMini +from reachy_mini_conversation_app.camera_worker import CameraWorker + + +def parse_args() -> Tuple[argparse.Namespace, list]: # type: ignore + """Parse command line arguments.""" + parser = argparse.ArgumentParser("Reachy Mini Conversation App") + parser.add_argument( + "--head-tracker", + choices=["yolo", "mediapipe", None], + default=None, + help="Choose head tracker (default: None)", + ) + parser.add_argument("--no-camera", default=False, action="store_true", help="Disable camera usage") + parser.add_argument( + "--local-vision", + default=False, + action="store_true", + help="Use local vision model instead of gpt-realtime vision", + ) + parser.add_argument("--gradio", default=False, action="store_true", help="Open gradio interface") + parser.add_argument("--debug", default=False, action="store_true", help="Enable debug logging") + parser.add_argument( + "--robot-name", + type=str, + default=None, + help="[Optional] Robot name/prefix for Zenoh topics (must match daemon's --robot-name). Only needed for development with multiple robots.", + ) + return parser.parse_known_args() + + +def handle_vision_stuff(args: argparse.Namespace, current_robot: ReachyMini) -> Tuple[CameraWorker | None, Any, Any]: + """Initialize camera, head tracker, camera worker, and vision manager. + + By default, vision is handled by gpt-realtime model when camera tool is used. + If --local-vision flag is used, a local vision model will process images periodically. + """ + camera_worker = None + head_tracker = None + vision_manager = None + + if not args.no_camera: + # Initialize head tracker if specified + if args.head_tracker is not None: + if args.head_tracker == "yolo": + from reachy_mini_conversation_app.vision.yolo_head_tracker import HeadTracker + + head_tracker = HeadTracker() + elif args.head_tracker == "mediapipe": + from reachy_mini_toolbox.vision import HeadTracker # type: ignore[no-redef] + + head_tracker = HeadTracker() + + # Initialize camera worker + camera_worker = CameraWorker(current_robot, head_tracker) + + # Initialize vision manager only if local vision is requested + if args.local_vision: + try: + from reachy_mini_conversation_app.vision.processors import initialize_vision_manager + + vision_manager = initialize_vision_manager(camera_worker) + except ImportError as e: + raise ImportError( + "To use --local-vision, please install the extra dependencies: pip install '.[local_vision]'", + ) from e + else: + logging.getLogger(__name__).info( + "Using gpt-realtime for vision (default). Use --local-vision for local processing.", + ) + + return camera_worker, head_tracker, vision_manager + + +def setup_logger(debug: bool) -> logging.Logger: + """Setups the logger.""" + log_level = "DEBUG" if debug else "INFO" + logging.basicConfig( + level=getattr(logging, log_level, logging.INFO), + format="%(asctime)s %(levelname)s %(name)s:%(lineno)d | %(message)s", + ) + logger = logging.getLogger(__name__) + + # Suppress WebRTC warnings + warnings.filterwarnings("ignore", message=".*AVCaptureDeviceTypeExternal.*") + warnings.filterwarnings("ignore", category=UserWarning, module="aiortc") + + # Tame third-party noise (looser in DEBUG) + if log_level == "DEBUG": + logging.getLogger("aiortc").setLevel(logging.INFO) + logging.getLogger("fastrtc").setLevel(logging.INFO) + logging.getLogger("aioice").setLevel(logging.INFO) + logging.getLogger("openai").setLevel(logging.INFO) + logging.getLogger("websockets").setLevel(logging.INFO) + else: + logging.getLogger("aiortc").setLevel(logging.ERROR) + logging.getLogger("fastrtc").setLevel(logging.ERROR) + logging.getLogger("aioice").setLevel(logging.WARNING) + return logger + +def log_connection_troubleshooting(logger: logging.Logger, robot_name: Optional[str]) -> None: + """Log troubleshooting steps for connection issues.""" + logger.error("Troubleshooting steps:") + logger.error(" 1. Verify reachy-mini-daemon is running") + + if robot_name is not None: + logger.error( + f" 2. Daemon must be started with: --robot-name '{robot_name}'" + ) + else: + logger.error( + " 2. If daemon uses --robot-name, add the same flag here: " + "--robot-name " + ) + + logger.error(" 3. For wireless: check network connectivity") + logger.error(" 4. Review daemon logs") + logger.error(" 5. Restart the daemon") diff --git a/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/vision/__init__.py b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/vision/__init__.py new file mode 100644 index 00000000..60dc15c4 --- /dev/null +++ b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/vision/__init__.py @@ -0,0 +1 @@ +"""Nothing (for ruff).""" diff --git a/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/vision/processors.py b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/vision/processors.py new file mode 100644 index 00000000..71598d8b --- /dev/null +++ b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/vision/processors.py @@ -0,0 +1,331 @@ +import os +import time +import base64 +import logging +import threading +from typing import Any, Dict +from dataclasses import dataclass + +import cv2 +import numpy as np +import torch +from numpy.typing import NDArray +from transformers import AutoProcessor, AutoModelForImageTextToText +from huggingface_hub import snapshot_download + +from reachy_mini_conversation_app.config import config + + +logger = logging.getLogger(__name__) + + +@dataclass +class VisionConfig: + """Configuration for vision processing.""" + + model_path: str = config.LOCAL_VISION_MODEL + vision_interval: float = 5.0 + max_new_tokens: int = 64 + jpeg_quality: int = 85 + max_retries: int = 3 + retry_delay: float = 1.0 + device_preference: str = "auto" # "auto", "cuda", "cpu" + + +class VisionProcessor: + """Handles SmolVLM2 model loading and inference.""" + + def __init__(self, vision_config: VisionConfig | None = None): + """Initialize the vision processor.""" + self.vision_config = vision_config or VisionConfig() + self.model_path = self.vision_config.model_path + self.device = self._determine_device() + self.processor = None + self.model = None + self._initialized = False + + def _determine_device(self) -> str: + pref = self.vision_config.device_preference + if pref == "cpu": + return "cpu" + if pref == "cuda": + return "cuda" if torch.cuda.is_available() else "cpu" + if pref == "mps": + return "mps" if torch.backends.mps.is_available() else "cpu" + # auto: prefer mps on Apple, then cuda, else cpu + if torch.backends.mps.is_available(): + return "mps" + return "cuda" if torch.cuda.is_available() else "cpu" + + def initialize(self) -> bool: + """Load model and processor onto the selected device.""" + try: + logger.info(f"Loading SmolVLM2 model on {self.device} (HF_HOME={config.HF_HOME})") + self.processor = AutoProcessor.from_pretrained(self.model_path) # type: ignore + + # Select dtype depending on device + if self.device == "cuda": + dtype = torch.bfloat16 + elif self.device == "mps": + dtype = torch.float32 # best for MPS + else: + dtype = torch.float32 + + model_kwargs: Dict[str, Any] = {"dtype": dtype} + + # flash_attention_2 is CUDA-only; skip on MPS/CPU + if self.device == "cuda": + model_kwargs["_attn_implementation"] = "flash_attention_2" + + # Load model weights + self.model = AutoModelForImageTextToText.from_pretrained(self.model_path, **model_kwargs).to(self.device) # type: ignore + + if self.model is not None: + self.model.eval() + self._initialized = True + return True + + except Exception as e: + logger.error(f"Failed to initialize vision model: {e}") + return False + + def process_image( + self, + cv2_image: NDArray[np.uint8], + prompt: str = "Briefly describe what you see in one sentence.", + ) -> str: + """Process CV2 image and return description with retry logic.""" + if not self._initialized or self.processor is None or self.model is None: + return "Vision model not initialized" + + for attempt in range(self.vision_config.max_retries): + try: + # Convert to JPEG bytes + success, jpeg_buffer = cv2.imencode( + ".jpg", + cv2_image, + [cv2.IMWRITE_JPEG_QUALITY, self.vision_config.jpeg_quality], + ) + if not success: + return "Failed to encode image" + + # Convert to base64 + image_base64 = base64.b64encode(jpeg_buffer.tobytes()).decode("utf-8") + + messages = [ + { + "role": "user", + "content": [ + { + "type": "image", + "url": f"data:image/jpeg;base64,{image_base64}", + }, + {"type": "text", "text": prompt}, + ], + }, + ] + + inputs = self.processor.apply_chat_template( + messages, + add_generation_prompt=True, + tokenize=True, + return_dict=True, + return_tensors="pt", + ) + + # Move tensors to device WITHOUT forcing dtype (keeps input_ids as torch.long) + inputs = {k: (v.to(self.device) if hasattr(v, "to") else v) for k, v in inputs.items()} + + with torch.no_grad(): + generated_ids = self.model.generate( + **inputs, + do_sample=False, + max_new_tokens=self.vision_config.max_new_tokens, + pad_token_id=self.processor.tokenizer.eos_token_id, + ) + + generated_texts = self.processor.batch_decode( + generated_ids, + skip_special_tokens=True, + ) + + # Extract just the response part + full_text = generated_texts[0] + response = self._extract_response(full_text) + + # Clean up GPU memory if using CUDA + if self.device == "cuda": + torch.cuda.empty_cache() + elif self.device == "mps": + torch.mps.empty_cache() + + return response.replace(chr(10), " ").strip() + + except torch.cuda.OutOfMemoryError as e: + logger.error(f"CUDA OOM on attempt {attempt + 1}: {e}") + if self.device == "cuda": + torch.cuda.empty_cache() + if attempt < self.vision_config.max_retries - 1: + time.sleep(self.vision_config.retry_delay * (attempt + 1)) + else: + return "GPU out of memory - vision processing failed" + + except Exception as e: + logger.error(f"Vision processing failed (attempt {attempt + 1}): {e}") + if attempt < self.vision_config.max_retries - 1: + time.sleep(self.vision_config.retry_delay) + else: + return f"Vision processing error after {self.vision_config.max_retries} attempts" + + def _extract_response(self, full_text: str) -> str: + """Extract the assistant's response from the full generated text.""" + # Handle different response formats + markers = ["assistant\n", "Assistant:", "Response:", "\n\n"] + + for marker in markers: + if marker in full_text: + response = full_text.split(marker)[-1].strip() + if response: # Ensure we got a meaningful response + return response + + # Fallback: return the full text cleaned up + return full_text.strip() + + def get_model_info(self) -> Dict[str, Any]: + """Get information about the loaded model.""" + return { + "initialized": self._initialized, + "device": self.device, + "model_path": self.model_path, + "cuda_available": torch.cuda.is_available(), + "gpu_memory": torch.cuda.get_device_properties(0).total_memory // (1024**3) + if torch.cuda.is_available() + else "N/A", + } + + +class VisionManager: + """Manages periodic vision processing and scene understanding.""" + + def __init__(self, camera: Any, vision_config: VisionConfig | None = None): + """Initialize vision manager with camera and configuration.""" + self.camera = camera + self.vision_config = vision_config or VisionConfig() + self.vision_interval = self.vision_config.vision_interval + self.processor = VisionProcessor(self.vision_config) + + self._last_processed_time = 0.0 + self._stop_event = threading.Event() + self._thread: threading.Thread | None = None + + # Initialize processor + if not self.processor.initialize(): + logger.error("Failed to initialize vision processor") + raise RuntimeError("Vision processor initialization failed") + + def start(self) -> None: + """Start the vision processing loop in a thread.""" + self._stop_event.clear() + self._thread = threading.Thread(target=self._working_loop, daemon=True) + self._thread.start() + logger.info("Local vision processing started") + + def stop(self) -> None: + """Stop the vision processing loop.""" + self._stop_event.set() + if self._thread is not None: + self._thread.join() + logger.info("Local vision processing stopped") + + def _working_loop(self) -> None: + """Vision processing loop (runs in separate thread).""" + while not self._stop_event.is_set(): + try: + current_time = time.time() + + if current_time - self._last_processed_time >= self.vision_interval: + frame = self.camera.get_latest_frame() + if frame is not None: + description = self.processor.process_image( + frame, + "Briefly describe what you see in one sentence.", + ) + + # Only update if we got a valid response + if description and not description.startswith(("Vision", "Failed", "Error")): + self._last_processed_time = current_time + logger.debug(f"Vision update: {description}") + else: + logger.warning(f"Invalid vision response: {description}") + + time.sleep(1.0) # Check every second + + except Exception: + logger.exception("Vision processing loop error") + time.sleep(5.0) # Longer sleep on error + + logger.info("Vision loop finished") + + def get_status(self) -> Dict[str, Any]: + """Get comprehensive status information.""" + return { + "last_processed": self._last_processed_time, + "processor_info": self.processor.get_model_info(), + "config": { + "interval": self.vision_interval, + }, + } + + +def initialize_vision_manager(camera_worker: Any) -> VisionManager | None: + """Initialize vision manager with model download and configuration. + + Args: + camera_worker: CameraWorker instance for frame capture + Returns: + VisionManager instance or None if initialization fails + + """ + try: + model_id = config.LOCAL_VISION_MODEL + cache_dir = os.path.expanduser(config.HF_HOME) + + # Prepare cache directory + os.makedirs(cache_dir, exist_ok=True) + os.environ["HF_HOME"] = cache_dir + logger.info("HF_HOME set to %s", cache_dir) + + # Download model to cache + logger.info(f"Downloading vision model {model_id} to cache...") + snapshot_download( + repo_id=model_id, + repo_type="model", + cache_dir=cache_dir, + ) + logger.info(f"Model {model_id} downloaded to {cache_dir}") + + # Configure vision processing + vision_config = VisionConfig( + model_path=model_id, + vision_interval=5.0, + max_new_tokens=64, + jpeg_quality=85, + max_retries=3, + retry_delay=1.0, + device_preference="auto", + ) + + # Initialize vision manager + vision_manager = VisionManager(camera_worker, vision_config) + + # Log device info + device_info = vision_manager.processor.get_model_info() + logger.info( + f"Vision processing enabled: {device_info.get('model_path')} on {device_info.get('device')}", + ) + + return vision_manager + + except Exception as e: + logger.error(f"Failed to initialize vision manager: {e}") + return None diff --git a/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/vision/yolo_head_tracker.py b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/vision/yolo_head_tracker.py new file mode 100644 index 00000000..3619bc7e --- /dev/null +++ b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/vision/yolo_head_tracker.py @@ -0,0 +1,148 @@ +from __future__ import annotations +import logging +from typing import Tuple + +import numpy as np +from numpy.typing import NDArray + + +try: + from supervision import Detections + from ultralytics import YOLO # type: ignore +except ImportError as e: + raise ImportError( + "To use YOLO head tracker, please install the extra dependencies: pip install '.[yolo_vision]'", + ) from e +from huggingface_hub import hf_hub_download + + +logger = logging.getLogger(__name__) + + +class HeadTracker: + """Lightweight head tracker using YOLO for face detection.""" + + def __init__( + self, + model_repo: str = "AdamCodd/YOLOv11n-face-detection", + model_filename: str = "model.pt", + confidence_threshold: float = 0.3, + device: str = "cpu", + ) -> None: + """Initialize YOLO-based head tracker. + + Args: + model_repo: HuggingFace model repository + model_filename: Model file name + confidence_threshold: Minimum confidence for face detection + device: Device to run inference on ('cpu' or 'cuda') + + """ + self.confidence_threshold = confidence_threshold + + try: + # Download and load YOLO model + model_path = hf_hub_download(repo_id=model_repo, filename=model_filename) + self.model = YOLO(model_path).to(device) + logger.info(f"YOLO face detection model loaded from {model_repo}") + except Exception as e: + logger.error(f"Failed to load YOLO model: {e}") + raise + + def _select_best_face(self, detections: Detections) -> int | None: + """Select the best face based on confidence and area (largest face with highest confidence). + + Args: + detections: Supervision detections object + + Returns: + Index of best face or None if no valid faces + + """ + if detections.xyxy.shape[0] == 0: + return None + + # Check if confidence is available + if detections.confidence is None: + return None + + # Filter by confidence threshold + valid_mask = detections.confidence >= self.confidence_threshold + if not np.any(valid_mask): + return None + + valid_indices = np.where(valid_mask)[0] + + # Calculate areas for valid detections + boxes = detections.xyxy[valid_indices] + areas = (boxes[:, 2] - boxes[:, 0]) * (boxes[:, 3] - boxes[:, 1]) + + # Combine confidence and area (weighted towards larger faces) + confidences = detections.confidence[valid_indices] + scores = confidences * 0.7 + (areas / np.max(areas)) * 0.3 + + # Return index of best face + best_idx = valid_indices[np.argmax(scores)] + return int(best_idx) + + def _bbox_to_mp_coords(self, bbox: NDArray[np.float32], w: int, h: int) -> NDArray[np.float32]: + """Convert bounding box center to MediaPipe-style coordinates [-1, 1]. + + Args: + bbox: Bounding box [x1, y1, x2, y2] + w: Image width + h: Image height + + Returns: + Center point in [-1, 1] coordinates + + """ + center_x = (bbox[0] + bbox[2]) / 2.0 + center_y = (bbox[1] + bbox[3]) / 2.0 + + # Normalize to [0, 1] then to [-1, 1] + norm_x = (center_x / w) * 2.0 - 1.0 + norm_y = (center_y / h) * 2.0 - 1.0 + + return np.array([norm_x, norm_y], dtype=np.float32) + + def get_head_position(self, img: NDArray[np.uint8]) -> Tuple[NDArray[np.float32] | None, float | None]: + """Get head position from face detection. + + Args: + img: Input image + + Returns: + Tuple of (eye_center [-1,1], roll_angle) + + """ + h, w = img.shape[:2] + + try: + # Run YOLO inference + results = self.model(img, verbose=False) + detections = Detections.from_ultralytics(results[0]) + + # Select best face + face_idx = self._select_best_face(detections) + if face_idx is None: + logger.debug("No face detected above confidence threshold") + return None, None + + bbox = detections.xyxy[face_idx] + + if detections.confidence is not None: + confidence = detections.confidence[face_idx] + logger.debug(f"Face detected with confidence: {confidence:.2f}") + + # Get face center in [-1, 1] coordinates + face_center = self._bbox_to_mp_coords(bbox, w, h) + + # Roll is 0 since we don't have keypoints for precise angle estimation + roll = 0.0 + + return face_center, roll + + except Exception as e: + logger.error(f"Error in head position detection: {e}") + return None, None diff --git a/projects/reachy-mini-openshell/src/reachy_openshell/__init__.py b/projects/reachy-mini-openshell/src/reachy_openshell/__init__.py deleted file mode 100644 index 3dc1f76b..00000000 --- a/projects/reachy-mini-openshell/src/reachy_openshell/__init__.py +++ /dev/null @@ -1 +0,0 @@ -__version__ = "0.1.0" diff --git a/projects/reachy-mini-openshell/src/reachy_openshell/backend.py b/projects/reachy-mini-openshell/src/reachy_openshell/backend.py deleted file mode 100644 index c9f97acf..00000000 --- a/projects/reachy-mini-openshell/src/reachy_openshell/backend.py +++ /dev/null @@ -1,195 +0,0 @@ -from __future__ import annotations - -import argparse -import asyncio -import os -import sys -import urllib.error -import urllib.request -from dataclasses import asdict, dataclass -from typing import Any - -from . import __version__ - -LOCAL_HOSTS = {"localhost", "127.0.0.1", "::1"} - -try: - from fastapi import FastAPI, HTTPException -except ImportError: # pragma: no cover - exercised only when optional deps are absent. - FastAPI = None # type: ignore[assignment] - HTTPException = None # type: ignore[assignment] - - -@dataclass(frozen=True) -class Settings: - reachy_host: str - reachy_port: int - connection_mode: str - media_backend: str - timeout: float - - @classmethod - def from_env(cls) -> "Settings": - host = os.getenv("REACHY_HOST", "localhost") - return cls( - reachy_host=host, - reachy_port=_env_int("REACHY_PORT", 8000), - connection_mode=os.getenv("REACHY_CONNECTION_MODE", _default_connection_mode(host)), - media_backend=os.getenv("REACHY_MEDIA_BACKEND", "no_media"), - timeout=_env_float("REACHY_TIMEOUT", 5.0), - ) - - @property - def daemon_base_url(self) -> str: - return f"http://{self.reachy_host}:{self.reachy_port}" - - -def _env_int(name: str, default: int) -> int: - raw = os.getenv(name) - if raw is None: - return default - try: - return int(raw) - except ValueError as exc: - raise ValueError(f"{name} must be an integer, got {raw!r}") from exc - - -def _env_float(name: str, default: float) -> float: - raw = os.getenv(name) - if raw is None: - return default - try: - return float(raw) - except ValueError as exc: - raise ValueError(f"{name} must be a number, got {raw!r}") from exc - - -def _default_connection_mode(host: str) -> str: - return "localhost_only" if host in LOCAL_HOSTS else "network" - - -def daemon_status(settings: Settings) -> dict[str, Any]: - url = f"{settings.daemon_base_url}/api/daemon/status" - try: - with urllib.request.urlopen(url, timeout=settings.timeout) as response: - body = response.read(4096).decode("utf-8", errors="replace") - return { - "ok": 200 <= response.status < 500, - "status_code": response.status, - "url": url, - "body": body, - } - except (urllib.error.URLError, TimeoutError, OSError) as exc: - return { - "ok": False, - "url": url, - "error": str(exc), - } - - -def run_smoke_motion(settings: Settings) -> dict[str, Any]: - try: - from reachy_mini import ReachyMini - from reachy_mini.utils import create_head_pose - except ImportError as exc: - raise RuntimeError( - "Reachy Mini SDK is not installed. Install with `uv pip install -e '.[sdk]'` " - "or include the `sim` extra for local simulator work." - ) from exc - - with ReachyMini( - host=settings.reachy_host, - port=settings.reachy_port, - connection_mode=settings.connection_mode, - spawn_daemon=False, - media_backend=settings.media_backend, - timeout=settings.timeout, - ) as mini: - mini.goto_target( - head=create_head_pose(z=20, roll=10, mm=True, degrees=True), - duration=1.0, - ) - mini.goto_target(antennas=[0.6, -0.6], duration=0.3) - mini.goto_target(antennas=[-0.6, 0.6], duration=0.3) - mini.goto_target( - head=create_head_pose(), - antennas=[0.0, 0.0], - duration=1.0, - ) - - return { - "ok": True, - "reachy": asdict(settings), - "motion": "smoke", - } - - -def _create_app() -> Any: - if FastAPI is None: - return None - - api = FastAPI( - title="Reachy Mini OpenShell Backend", - version=__version__, - ) - - @api.get("/health") - def health() -> dict[str, Any]: - settings = Settings.from_env() - status = daemon_status(settings) - return { - "ok": status["ok"], - "reachy": asdict(settings), - "daemon": status, - } - - @api.post("/moves/smoke") - async def smoke_move() -> dict[str, Any]: - settings = Settings.from_env() - try: - return await asyncio.to_thread(run_smoke_motion, settings) - except Exception as exc: # pragma: no cover - depends on live daemon. - raise HTTPException(status_code=502, detail=str(exc)) from exc - - return api - - -app = _create_app() - - -def main(argv: list[str] | None = None) -> int: - if FastAPI is None: - print( - "FastAPI is not installed. Install backend dependencies with " - '`uv pip install -e ".[backend]"`.', - file=sys.stderr, - ) - return 2 - - parser = argparse.ArgumentParser(description="Run the Reachy Mini OpenShell backend.") - parser.add_argument("--host", default=os.getenv("BACKEND_HOST", "127.0.0.1")) - parser.add_argument("--port", type=int, default=_env_int("BACKEND_PORT", 8080)) - parser.add_argument("--reachy-host", default=None) - parser.add_argument("--reachy-port", type=int, default=None) - parser.add_argument("--connection-mode", default=None) - parser.add_argument("--media-backend", default=None) - parser.add_argument("--log-level", default=os.getenv("UVICORN_LOG_LEVEL", "info")) - args = parser.parse_args(argv) - - if args.reachy_host is not None: - os.environ["REACHY_HOST"] = args.reachy_host - if args.reachy_port is not None: - os.environ["REACHY_PORT"] = str(args.reachy_port) - if args.connection_mode is not None: - os.environ["REACHY_CONNECTION_MODE"] = args.connection_mode - if args.media_backend is not None: - os.environ["REACHY_MEDIA_BACKEND"] = args.media_backend - - import uvicorn - - uvicorn.run(app, host=args.host, port=args.port, log_level=args.log_level) - return 0 - - -if __name__ == "__main__": - raise SystemExit(main()) diff --git a/projects/reachy-mini-openshell/src/reachy_openshell/smoke.py b/projects/reachy-mini-openshell/src/reachy_openshell/smoke.py deleted file mode 100644 index 5933427c..00000000 --- a/projects/reachy-mini-openshell/src/reachy_openshell/smoke.py +++ /dev/null @@ -1,115 +0,0 @@ -from __future__ import annotations - -import argparse -import os -import sys -from dataclasses import dataclass - -LOCAL_HOSTS = {"localhost", "127.0.0.1", "::1"} - - -@dataclass(frozen=True) -class ReachyTarget: - host: str - port: int - connection_mode: str - media_backend: str - timeout: float - - -def _env_int(name: str, default: int) -> int: - raw = os.getenv(name) - if raw is None: - return default - try: - return int(raw) - except ValueError as exc: - raise ValueError(f"{name} must be an integer, got {raw!r}") from exc - - -def _env_float(name: str, default: float) -> float: - raw = os.getenv(name) - if raw is None: - return default - try: - return float(raw) - except ValueError as exc: - raise ValueError(f"{name} must be a number, got {raw!r}") from exc - - -def _default_connection_mode(host: str) -> str: - return "localhost_only" if host in LOCAL_HOSTS else "network" - - -def build_parser() -> argparse.ArgumentParser: - default_host = os.getenv("REACHY_HOST", "localhost") - parser = argparse.ArgumentParser(description="Run a small Reachy Mini SDK smoke motion.") - parser.add_argument("--host", default=default_host) - parser.add_argument("--port", type=int, default=_env_int("REACHY_PORT", 8000)) - parser.add_argument( - "--connection-mode", - choices=["auto", "localhost_only", "network"], - default=os.getenv("REACHY_CONNECTION_MODE"), - ) - parser.add_argument("--media-backend", default=os.getenv("REACHY_MEDIA_BACKEND", "no_media")) - parser.add_argument("--timeout", type=float, default=_env_float("REACHY_TIMEOUT", 5.0)) - return parser - - -def target_from_args(args: argparse.Namespace) -> ReachyTarget: - return ReachyTarget( - host=args.host, - port=args.port, - connection_mode=args.connection_mode or _default_connection_mode(args.host), - media_backend=args.media_backend, - timeout=args.timeout, - ) - - -def run_motion(target: ReachyTarget) -> None: - try: - from reachy_mini import ReachyMini - from reachy_mini.utils import create_head_pose - except ImportError as exc: - raise RuntimeError( - "Reachy Mini SDK is not installed. Install with `uv pip install -e '.[sdk]'` " - "or `uv pip install -e '.[sim]'` for simulator work." - ) from exc - - with ReachyMini( - host=target.host, - port=target.port, - connection_mode=target.connection_mode, - spawn_daemon=False, - media_backend=target.media_backend, - timeout=target.timeout, - ) as mini: - print(f"Connected to Reachy Mini daemon at {target.host}:{target.port}") - print("Moving head and antennas...") - mini.goto_target( - head=create_head_pose(z=20, roll=10, mm=True, degrees=True), - duration=1.0, - ) - mini.goto_target(antennas=[0.6, -0.6], duration=0.3) - mini.goto_target(antennas=[-0.6, 0.6], duration=0.3) - mini.goto_target( - head=create_head_pose(), - antennas=[0.0, 0.0], - duration=1.0, - ) - print("Smoke motion complete.") - - -def main(argv: list[str] | None = None) -> int: - args = build_parser().parse_args(argv) - target = target_from_args(args) - try: - run_motion(target) - except Exception as exc: - print(f"Reachy smoke motion failed: {exc}", file=sys.stderr) - return 1 - return 0 - - -if __name__ == "__main__": - raise SystemExit(main()) diff --git a/projects/reachy-mini-openshell/style.css b/projects/reachy-mini-openshell/style.css new file mode 100644 index 00000000..c8bbe123 --- /dev/null +++ b/projects/reachy-mini-openshell/style.css @@ -0,0 +1,113 @@ +:root { + --bg: #060b1a; + --bg-2: #071023; + --panel: rgba(11, 18, 36, 0.8); + --border: rgba(255, 255, 255, 0.08); + --text: #eaf2ff; + --muted: #9fb6d7; + --accent: #45c4ff; + --accent-2: #5ef0c1; + --shadow: 0 20px 70px rgba(0, 0, 0, 0.45); +} + +* { box-sizing: border-box; } +body { + margin: 0; + min-height: 100vh; + font-family: "Space Grotesk", "Inter", "Segoe UI", sans-serif; + background: radial-gradient(circle at 20% 20%, rgba(69, 196, 255, 0.16), transparent 35%), + radial-gradient(circle at 80% 0%, rgba(94, 240, 193, 0.16), transparent 32%), + linear-gradient(135deg, var(--bg), var(--bg-2)); + color: var(--text); +} + +.ambient { + position: fixed; + inset: 0; + background: radial-gradient(circle at 30% 60%, rgba(255, 255, 255, 0.05), transparent 35%), + radial-gradient(circle at 75% 30%, rgba(69, 196, 255, 0.08), transparent 32%); + filter: blur(60px); + z-index: 0; + pointer-events: none; +} + +.container { + position: relative; + max-width: 600px; + margin: 10vh auto; + padding: 0 24px 40px; + z-index: 1; +} + +.hero { + margin-bottom: 24px; +} +.hero h1 { + margin: 6px 0 6px; + font-size: 32px; + letter-spacing: -0.4px; +} +.subtitle { + margin: 0; + color: var(--muted); + line-height: 1.5; +} +.pill { + display: inline-flex; + align-items: center; + gap: 6px; + padding: 6px 12px; + border-radius: 999px; + background: rgba(94, 240, 193, 0.1); + color: var(--accent-2); + font-size: 12px; + letter-spacing: 0.3px; + border: 1px solid rgba(94, 240, 193, 0.25); +} + +.panel { + background: var(--panel); + border: 1px solid var(--border); + border-radius: 14px; + padding: 18px 18px 16px; + box-shadow: var(--shadow); + backdrop-filter: blur(10px); + margin-top: 16px; +} +.panel-heading { + display: flex; + align-items: center; + justify-content: space-between; + gap: 12px; + margin-bottom: 8px; +} +.panel-heading h2 { + margin: 2px 0; + font-size: 22px; +} +.eyebrow { + margin: 0; + text-transform: uppercase; + font-size: 11px; + letter-spacing: 0.5px; + color: var(--muted); +} +.muted { color: var(--muted); } + +pre { + background: rgba(0, 0, 0, 0.3); + border: 1px solid var(--border); + border-radius: 8px; + padding: 12px 14px; + overflow-x: auto; + margin: 12px 0 0; +} +code { + font-family: "SF Mono", "Fira Code", monospace; + font-size: 13px; + color: var(--accent); +} + +@media (max-width: 760px) { + .hero h1 { font-size: 26px; } +} \ No newline at end of file diff --git a/projects/reachy-mini-openshell/tests/audio/test_head_wobbler.py b/projects/reachy-mini-openshell/tests/audio/test_head_wobbler.py new file mode 100644 index 00000000..853dcfbe --- /dev/null +++ b/projects/reachy-mini-openshell/tests/audio/test_head_wobbler.py @@ -0,0 +1,110 @@ +"""Regression tests for the audio-driven head wobble behaviour.""" + +import math +import time +import base64 +import threading +from typing import Any, List, Tuple +from collections.abc import Callable + +import numpy as np + +from reachy_mini_conversation_app.audio.head_wobbler import HeadWobbler + + +def _make_audio_chunk(duration_s: float = 0.3, frequency_hz: float = 220.0) -> str: + """Generate a base64-encoded mono PCM16 sine wave.""" + sample_rate = 24000 + sample_count = int(sample_rate * duration_s) + t = np.linspace(0, duration_s, sample_count, endpoint=False) + wave = 0.6 * np.sin(2 * math.pi * frequency_hz * t) + pcm = np.clip(wave * np.iinfo(np.int16).max, -32768, 32767).astype(np.int16) + return base64.b64encode(pcm.tobytes()).decode("ascii") + + +def _wait_for(predicate: Callable[[], bool], timeout: float = 0.6) -> bool: + """Poll `predicate` until true or timeout.""" + end_time = time.time() + timeout + while time.time() < end_time: + if predicate(): + return True + time.sleep(0.01) + return False + + +def _start_wobbler() -> Tuple[HeadWobbler, List[Tuple[float, Tuple[float, float, float, float, float, float]]]]: + captured: List[Tuple[float, Tuple[float, float, float, float, float, float]]] = [] + + def capture(offsets: Tuple[float, float, float, float, float, float]) -> None: + captured.append((time.time(), offsets)) + + wobbler = HeadWobbler(set_speech_offsets=capture) + wobbler.start() + return wobbler, captured + + +def test_reset_drops_pending_offsets() -> None: + """Reset should stop wobble output derived from pre-reset audio.""" + wobbler, captured = _start_wobbler() + try: + wobbler.feed(_make_audio_chunk(duration_s=0.35)) + assert _wait_for(lambda: len(captured) > 0), "wobbler did not emit initial offsets" + + pre_reset_count = len(captured) + wobbler.reset() + time.sleep(0.3) + assert len(captured) == pre_reset_count, "offsets continued after reset without new audio" + finally: + wobbler.stop() + + +def test_reset_allows_future_offsets() -> None: + """After reset, fresh audio must still produce wobble offsets.""" + wobbler, captured = _start_wobbler() + try: + wobbler.feed(_make_audio_chunk(duration_s=0.35)) + assert _wait_for(lambda: len(captured) > 0), "wobbler did not emit initial offsets" + + wobbler.reset() + pre_second_count = len(captured) + + wobbler.feed(_make_audio_chunk(duration_s=0.35, frequency_hz=440.0)) + assert _wait_for(lambda: len(captured) > pre_second_count), "no offsets after reset" + assert wobbler._thread is not None and wobbler._thread.is_alive() + finally: + wobbler.stop() + + +def test_reset_during_inflight_chunk_keeps_worker(monkeypatch: Any) -> None: + """Simulate reset during chunk processing to ensure the worker survives.""" + wobbler, captured = _start_wobbler() + ready = threading.Event() + release = threading.Event() + + original_feed = wobbler.sway.feed + + def blocking_feed(pcm, sr): # type: ignore[no-untyped-def] + ready.set() + release.wait(timeout=2.0) + return original_feed(pcm, sr) + + monkeypatch.setattr(wobbler.sway, "feed", blocking_feed) + + try: + wobbler.feed(_make_audio_chunk(duration_s=0.35)) + assert ready.wait(timeout=1.0), "worker thread did not dequeue audio" + + wobbler.reset() + release.set() + + # Allow the worker to finish processing the first chunk (which should be discarded) + time.sleep(0.1) + + assert wobbler._thread is not None and wobbler._thread.is_alive(), "worker thread died after reset" + + pre_second = len(captured) + wobbler.feed(_make_audio_chunk(duration_s=0.35, frequency_hz=440.0)) + assert _wait_for(lambda: len(captured) > pre_second), "no offsets emitted after in-flight reset" + assert wobbler._thread.is_alive() + finally: + wobbler.stop() diff --git a/projects/reachy-mini-openshell/tests/conftest.py b/projects/reachy-mini-openshell/tests/conftest.py new file mode 100644 index 00000000..0e7310d4 --- /dev/null +++ b/projects/reachy-mini-openshell/tests/conftest.py @@ -0,0 +1,15 @@ +"""Pytest configuration for path setup.""" + +import os +import sys +from pathlib import Path + + +PROJECT_ROOT = Path(__file__).resolve().parents[1] +SRC_PATH = PROJECT_ROOT / "src" +if str(SRC_PATH) not in sys.path: + sys.path.insert(0, str(SRC_PATH)) + + +# Make tests reproducible by ignoring machine-specific .env config. +os.environ["REACHY_MINI_SKIP_DOTENV"] = "1" diff --git a/projects/reachy-mini-openshell/tests/test_openai_realtime.py b/projects/reachy-mini-openshell/tests/test_openai_realtime.py new file mode 100644 index 00000000..39a82e3e --- /dev/null +++ b/projects/reachy-mini-openshell/tests/test_openai_realtime.py @@ -0,0 +1,544 @@ +import random +import asyncio +import logging +from typing import Any +from datetime import datetime, timezone +from unittest.mock import MagicMock + +import pytest + +import reachy_mini_conversation_app.openai_realtime as rt_mod +import reachy_mini_conversation_app.tools.background_tool_manager as btm_mod +from reachy_mini_conversation_app.openai_realtime import OpenaiRealtimeHandler, _compute_response_cost +from reachy_mini_conversation_app.tools.core_tools import ToolDependencies +from reachy_mini_conversation_app.tools.background_tool_manager import ToolCallRoutine + + +def _build_handler(loop: asyncio.AbstractEventLoop) -> OpenaiRealtimeHandler: + asyncio.set_event_loop(loop) + deps = ToolDependencies(reachy_mini=MagicMock(), movement_manager=MagicMock()) + return OpenaiRealtimeHandler(deps) + + +def test_format_timestamp_uses_wall_clock() -> None: + """Test that format_timestamp uses wall clock time.""" + loop = asyncio.new_event_loop() + try: + print("Testing format_timestamp...") + handler = _build_handler(loop) + formatted = handler.format_timestamp() + print(f"Formatted timestamp: {formatted}") + finally: + asyncio.set_event_loop(None) + loop.close() + + # Extract year from "[YYYY-MM-DD ...]" + year = int(formatted[1:5]) + assert year == datetime.now(timezone.utc).year + +@pytest.mark.asyncio +async def test_start_up_retries_on_abrupt_close(monkeypatch: Any, caplog: Any) -> None: + """First connection dies with ConnectionClosedError during iteration -> retried. + + Second connection iterates cleanly (no events) -> start_up returns without raising. + Ensures handler clears self.connection at the end. + """ + caplog.set_level(logging.WARNING) + + # Use a local Exception as the module's ConnectionClosedError to avoid ws dependency + FakeCCE = type("FakeCCE", (Exception,), {}) + monkeypatch.setattr(rt_mod, "ConnectionClosedError", FakeCCE) + + # Make asyncio.sleep return immediately (for backoff) + _real_sleep = asyncio.sleep + async def _mock_sleep(*_a: Any, **_kw: Any) -> None: await _real_sleep(0) + monkeypatch.setattr(asyncio, "sleep", _mock_sleep, raising=False) + + attempt_counter = {"n": 0} + + class FakeConn: + """Minimal realtime connection stub.""" + + def __init__(self, mode: str): + self._mode = mode + + class _Session: + async def update(self, **_kw: Any) -> None: return None + self.session = _Session() + + class _InputAudioBuffer: + async def append(self, **_kw: Any) -> None: return None + self.input_audio_buffer = _InputAudioBuffer() + + class _Item: + async def create(self, **_kw: Any) -> None: return None + + class _Conversation: + item = _Item() + self.conversation = _Conversation() + + class _Response: + async def create(self, **_kw: Any) -> None: return None + async def cancel(self, **_kw: Any) -> None: return None + self.response = _Response() + + async def __aenter__(self) -> "FakeConn": return self + async def __aexit__(self, exc_type: Any, exc: Any, tb: Any) -> bool: return False + async def close(self) -> None: return None + + # Async iterator protocol + def __aiter__(self) -> "FakeConn": return self + async def __anext__(self) -> None: + if self._mode == "raise_on_iter": + raise FakeCCE("abrupt close (simulated)") + raise StopAsyncIteration # clean exit (no events) + + class FakeRealtime: + def connect(self, **_kw: Any) -> FakeConn: + attempt_counter["n"] += 1 + mode = "raise_on_iter" if attempt_counter["n"] == 1 else "clean" + return FakeConn(mode) + + class FakeClient: + def __init__(self, **_kw: Any) -> None: self.realtime = FakeRealtime() + + # Patch the OpenAI client used by the handler + monkeypatch.setattr(rt_mod, "AsyncOpenAI", FakeClient) + + # Build handler with minimal deps + deps = ToolDependencies(reachy_mini=MagicMock(), movement_manager=MagicMock()) + handler = rt_mod.OpenaiRealtimeHandler(deps) + + # Run: should retry once and exit cleanly + await handler.start_up() + + # Validate: two attempts total (fail -> retry -> succeed), and connection cleared + assert attempt_counter["n"] == 2 + assert handler.connection is None + + # Optional: confirm we logged the unexpected close once + warnings = [r for r in caplog.records if r.levelname == "WARNING" and "closed unexpectedly" in r.msg] + assert len(warnings) == 1 + +# ---- Cost calculation tests ---- + + +def _make_usage( + audio_in: int | None = 0, + text_in: int | None = 0, + image_in: int | None = 0, + audio_out: int | None = 0, + text_out: int | None = 0, + has_input: bool = True, + has_output: bool = True, +) -> MagicMock: + """Build a fake usage object matching the OpenAI response.usage shape.""" + usage = MagicMock() + if has_input: + inp = MagicMock() + inp.audio_tokens = audio_in + inp.text_tokens = text_in + inp.image_tokens = image_in + usage.input_token_details = inp + else: + usage.input_token_details = None + if has_output: + out = MagicMock() + out.audio_tokens = audio_out + out.text_tokens = text_out + usage.output_token_details = out + else: + usage.output_token_details = None + return usage + + +@pytest.mark.parametrize( + "usage_kwargs, expect_positive", + [ + # All token types present → positive cost + ({"audio_in": 1000, "text_in": 2000, "image_in": 500, "audio_out": 800, "text_out": 300}, True), + # All None tokens → must not crash + ({"audio_in": None, "text_in": None, "image_in": None, "audio_out": None, "text_out": None}, False), + # Mix of None and valid ints + ({"audio_in": None, "text_in": 500, "image_in": None, "audio_out": 1000, "text_out": None}, True), + # Missing input/output details entirely + ({"has_input": False, "has_output": False}, False), + ], + ids=["normal", "all_none", "mixed", "missing_details"], +) +def test_compute_response_cost(usage_kwargs: dict[str, Any], expect_positive: bool) -> None: + """Verify _compute_response_cost handles various token combinations without crashing.""" + usage = _make_usage(**usage_kwargs) + cost = _compute_response_cost(usage) + if expect_positive: + assert cost > 0 + else: + assert cost == 0.0 + + +# ---- Stress test: response.create rejection + retry ---- + + +@pytest.mark.asyncio +async def test_response_sender_retries_on_active_response_rejection(monkeypatch: Any, caplog: Any) -> None: + """Stress test: response.create rejection + retry via real event processing. + + Tool results (is_idle_tool_call=False) queue response.create calls via + _safe_response_create. When the server rejects some with + ``conversation_already_has_active_response``, the error event flows through + the event handler and _response_sender_loop retries the rejected request. + + The full _run_realtime_session event loop runs so that the error-handling + code path (setting _last_response_rejected) is exercised by real event + processing, not mocked out. + """ + caplog.set_level(logging.DEBUG) + + FakeCCE = type("FakeCCE", (Exception,), {}) + monkeypatch.setattr(rt_mod, "ConnectionClosedError", FakeCCE) + monkeypatch.setattr(rt_mod, "get_session_instructions", lambda: "test") + monkeypatch.setattr(rt_mod, "get_session_voice", lambda: "alloy") + monkeypatch.setattr(rt_mod, "get_tool_specs", lambda: []) + + N_TOOL_RESULTS = 400 + REJECT_CALL_NUMBERS = {1, 3, 5, 10, 25, 50, 75, 100, 150, 200, 300, 399} + EXPECTED_TOTAL_CALLS = N_TOOL_RESULTS + len(REJECT_CALL_NUMBERS) + + event_queue: asyncio.Queue[Any] = asyncio.Queue() + response_create_log: list[tuple[int, dict[str, Any]]] = [] + handler_ref: list[Any] = [] + + # ---- Fake event / error objects mirroring the OpenAI SDK shapes ---- + + class FakeError: + def __init__(self, message: str, code: str) -> None: + self.message = message + self.code = code + self.type = "invalid_request_error" + self.event_id = None + self.param = None + + def __repr__(self) -> str: + return ( + f"RealtimeError(message='{self.message}', type='{self.type}', " + f"code='{self.code}', event_id=None, param=None)" + ) + + class FakeEvent: + def __init__(self, etype: str, **kwargs: Any) -> None: + self.type = etype + for k, v in kwargs.items(): + setattr(self, k, v) + + # ---- Fake connection components ---- + + class FakeResponseAPI: + """Mimics connection.response. + + Pushes server events into the shared event_queue so they flow + through the real event-handling code. Also guards the serialization + invariant: every create() must arrive when no response is active. + """ + + def __init__(self) -> None: + self._call_count = 0 + self._serialization_violations: list[int] = [] + + async def create(self, **kwargs: Any) -> None: + self._call_count += 1 + n = self._call_count + response_create_log.append((n, kwargs)) + + h = handler_ref[0] + + # Real backend rejects when a response is already active. + if not h._response_done_event.is_set(): + self._serialization_violations.append(n) + await event_queue.put( + FakeEvent( + "error", + error=FakeError( + message=( + f"Conversation already has an active response in " + f"progress: resp_fake{n}. Wait until the response " + f"is finished before creating a new one." + ), + code="conversation_already_has_active_response", + ), + ) + ) + await asyncio.sleep(0) + await event_queue.put( + FakeEvent("response.done", response=MagicMock()) + ) + return + + # Intentional rejections (simulating a race where another + # response sneaks in right after our check). + if n in REJECT_CALL_NUMBERS: + await event_queue.put( + FakeEvent( + "error", + error=FakeError( + message=( + f"Conversation already has an active response in " + f"progress: resp_fake{n}. Wait until the response " + f"is finished before creating a new one." + ), + code="conversation_already_has_active_response", + ), + ) + ) + await asyncio.sleep(0) + else: + await event_queue.put(FakeEvent("response.created")) + + await event_queue.put( + FakeEvent("response.done", response=MagicMock()) + ) + + + async def cancel(self, **_kw: Any) -> None: + pass + + fake_response_api = FakeResponseAPI() + + class FakeSession: + async def update(self, **_kw: Any) -> None: + pass + + class FakeInputAudioBuffer: + async def append(self, **_kw: Any) -> None: + pass + + class FakeItem: + async def create(self, **_kw: Any) -> None: + pass + + class FakeConversation: + item = FakeItem() + + class FakeConn: + session = FakeSession() + input_audio_buffer = FakeInputAudioBuffer() + conversation = FakeConversation() + response = fake_response_api + + async def __aenter__(self) -> "FakeConn": + return self + + async def __aexit__(self, *_a: Any) -> bool: + return False + + async def close(self) -> None: + pass + + def __aiter__(self) -> "FakeConn": + return self + + async def __anext__(self) -> FakeEvent: + event: FakeEvent = await event_queue.get() + if event is None: # sentinel → end iteration + raise StopAsyncIteration + return event + + class FakeRealtime: + def connect(self, **_kw: Any) -> FakeConn: + return FakeConn() + + class FakeClient: + def __init__(self, **_kw: Any) -> None: + self.realtime = FakeRealtime() + + monkeypatch.setattr(rt_mod, "AsyncOpenAI", FakeClient) + + # Patch dispatch_tool_call so tools complete with a result. + async def _fake_dispatch( + tool_name: str, args_json: str, deps: Any, **_kw: Any + ) -> dict[str, Any]: + await asyncio.sleep(random.uniform(0.3, 0.5)) + return {"ok": True, "tool": tool_name} + + monkeypatch.setattr(btm_mod, "dispatch_tool_call", _fake_dispatch) + + # ---- Build handler and start the full realtime session ---- + + deps = ToolDependencies(reachy_mini=MagicMock(), movement_manager=MagicMock()) + handler = rt_mod.OpenaiRealtimeHandler(deps) + handler_ref.append(handler) + + asyncio.create_task(handler.start_up()) + + # ---- Start tools via the real BackgroundToolManager pipeline ---- + # start_tool → _run_tool → notification queue → listener → _handle_tool_result + + for i in range(N_TOOL_RESULTS): + await handler.tool_manager.start_tool( + call_id=f"call_{i}", + tool_call_routine=ToolCallRoutine( + tool_name="test_tool", + args_json_str=f'{{"index": {i}}}', + deps=deps, + ), + is_idle_tool_call=False, + ) + + # Yield so spawned tool tasks, the listener, and the sender can drain. + await asyncio.sleep(5) + + # ---- Tear down ---- + + await event_queue.put(None) # sentinel stops event iteration + + await handler.shutdown() + + + # ---- Assertions ---- + + # Serialization: every response.create() must have been called only when + # no response was in-flight (_response_done_event was set). Any violation + # means the sender fired a new request before the previous one finished. + assert fake_response_api._serialization_violations == [], ( + f"response.create() was called while a response was still active on " + f"call(s) {fake_response_api._serialization_violations}" + ) + + # Total response.create() calls = tool results + retries for rejected ones + assert fake_response_api._call_count == EXPECTED_TOTAL_CALLS, ( + f"Expected {EXPECTED_TOTAL_CALLS} response.create calls " + f"({N_TOOL_RESULTS} results + {len(REJECT_CALL_NUMBERS)} retries), " + f"got {fake_response_api._call_count}" + ) + + # The error event handler must have set _last_response_rejected for each + # rejection (the log message comes from the event handler code path). + rejection_logs = [ + r for r in caplog.records + if "worker will retry" in getattr(r, "msg", "") + ] + assert len(rejection_logs) == len(REJECT_CALL_NUMBERS), ( + f"Expected {len(REJECT_CALL_NUMBERS)} rejection entries from error handler, " + f"got {len(rejection_logs)}" + ) + + # The sender loop must have retried after each rejection. + retry_logs = [ + r for r in caplog.records + if "response.create was rejected; retrying" in getattr(r, "msg", "") + ] + assert len(retry_logs) == len(REJECT_CALL_NUMBERS), ( + f"Expected {len(REJECT_CALL_NUMBERS)} retry entries from sender loop, " + f"got {len(retry_logs)}" + ) + + +# ---- Response creation timeout guard tests ---- + + +@pytest.mark.asyncio +async def test_response_sender_loop_times_out_waiting_for_response_done( + monkeypatch: Any, caplog: Any, +) -> None: + """If response.done is never received the sender loop should time out. + + Rather than hang forever, it force-sets the event and moves on. + """ + caplog.set_level(logging.DEBUG) + + monkeypatch.setattr(rt_mod, "_RESPONSE_DONE_TIMEOUT", 0.3) + + deps = ToolDependencies(reachy_mini=MagicMock(), movement_manager=MagicMock()) + handler = rt_mod.OpenaiRealtimeHandler(deps) + + create_count = 0 + + class FakeResponse: + async def create(self, **_kw: Any) -> None: + nonlocal create_count + create_count += 1 + # Simulate response.created clearing the event, but never + # send response.done (so the event stays cleared forever). + handler._response_done_event.clear() + + async def cancel(self, **_kw: Any) -> None: + pass + + fake_conn = MagicMock() + fake_conn.response = FakeResponse() + handler.connection = fake_conn + + # Queue two requests + await handler._safe_response_create(instructions="req1") + await handler._safe_response_create(instructions="req2") + + sender_task = asyncio.create_task(handler._response_sender_loop()) + + # Give enough time for both requests to time out (0.3s each + margin) + await asyncio.sleep(1.5) + + handler.connection = None # signal the loop to exit + handler._response_done_event.set() + await asyncio.wait_for(sender_task, timeout=2.0) + + assert create_count == 2, f"Expected 2 response.create calls, got {create_count}" + + timeout_logs = [ + r for r in caplog.records + if "Timed out waiting for response.done" in r.getMessage() + ] + assert len(timeout_logs) == 2, ( + f"Expected 2 timeout warnings, got {len(timeout_logs)}" + ) + + +@pytest.mark.asyncio +async def test_response_sender_loop_times_out_waiting_for_previous_response( + monkeypatch: Any, caplog: Any, +) -> None: + """If a previous response never completes, the pre-condition wait times out. + + It should force-set the event and proceed to send. + """ + caplog.set_level(logging.DEBUG) + + monkeypatch.setattr(rt_mod, "_RESPONSE_DONE_TIMEOUT", 0.3) + + deps = ToolDependencies(reachy_mini=MagicMock(), movement_manager=MagicMock()) + handler = rt_mod.OpenaiRealtimeHandler(deps) + + # Pretend a response is already in-flight (event cleared) + handler._response_done_event.clear() + + created = asyncio.Event() + + class FakeResponse: + async def create(self, **_kw: Any) -> None: + # Immediately complete the response cycle so the loop can finish + handler._response_done_event.set() + created.set() + + async def cancel(self, **_kw: Any) -> None: + pass + + fake_conn = MagicMock() + fake_conn.response = FakeResponse() + handler.connection = fake_conn + + await handler._safe_response_create(instructions="waiting_req") + + sender_task = asyncio.create_task(handler._response_sender_loop()) + + # Wait for the request to be sent (after timing out on the pre-condition) + await asyncio.wait_for(created.wait(), timeout=2.0) + + handler.connection = None + handler._response_done_event.set() + await asyncio.wait_for(sender_task, timeout=2.0) + + timeout_logs = [ + r for r in caplog.records + if "Timed out waiting for previous response" in r.getMessage() + ] + assert len(timeout_logs) == 1, ( + f"Expected 1 pre-condition timeout warning, got {len(timeout_logs)}" + ) diff --git a/projects/reachy-mini-openshell/tests/test_reachy_constructors.py b/projects/reachy-mini-openshell/tests/test_reachy_constructors.py deleted file mode 100644 index 59547309..00000000 --- a/projects/reachy-mini-openshell/tests/test_reachy_constructors.py +++ /dev/null @@ -1,85 +0,0 @@ -from __future__ import annotations - -import os -import sys -import types -import unittest -from contextlib import contextmanager, redirect_stdout -from io import StringIO -from unittest.mock import patch - -from reachy_openshell import backend, smoke - - -class FakeReachyMini: - calls: list[dict[str, object]] = [] - - def __init__(self, **kwargs: object) -> None: - self.calls.append(kwargs) - - def __enter__(self) -> "FakeReachyMini": - return self - - def __exit__(self, *_args: object) -> None: - return None - - def goto_target(self, **_kwargs: object) -> None: - return None - - -@contextmanager -def fake_reachy_modules(): - original = { - name: sys.modules.get(name) - for name in ("reachy_mini", "reachy_mini.utils") - } - - reachy_module = types.ModuleType("reachy_mini") - reachy_module.ReachyMini = FakeReachyMini - utils_module = types.ModuleType("reachy_mini.utils") - utils_module.create_head_pose = lambda **kwargs: {"head_pose": kwargs} - - sys.modules["reachy_mini"] = reachy_module - sys.modules["reachy_mini.utils"] = utils_module - FakeReachyMini.calls = [] - - try: - yield - finally: - for name, module in original.items(): - if module is None: - sys.modules.pop(name, None) - else: - sys.modules[name] = module - - -class ReachyConstructorTests(unittest.TestCase): - def test_backend_smoke_motion_disables_media_by_default(self) -> None: - with patch.dict(os.environ, {}, clear=True): - settings = backend.Settings.from_env() - - with fake_reachy_modules(): - backend.run_smoke_motion(settings) - - self.assertEqual(FakeReachyMini.calls[0]["media_backend"], "no_media") - - def test_smoke_cli_disables_media_by_default(self) -> None: - with patch.dict(os.environ, {}, clear=True): - target = smoke.target_from_args(smoke.build_parser().parse_args([])) - - with fake_reachy_modules(), redirect_stdout(StringIO()): - smoke.run_motion(target) - - self.assertEqual(FakeReachyMini.calls[0]["media_backend"], "no_media") - - def test_smoke_cli_uses_network_mode_for_non_local_cli_host(self) -> None: - with patch.dict(os.environ, {}, clear=True): - target = smoke.target_from_args( - smoke.build_parser().parse_args(["--host", "host.openshell.internal"]) - ) - - self.assertEqual(target.connection_mode, "network") - - -if __name__ == "__main__": - unittest.main() diff --git a/projects/reachy-mini-openshell/tests/tools/test_background_tool_manager.py b/projects/reachy-mini-openshell/tests/tools/test_background_tool_manager.py new file mode 100644 index 00000000..90b7a7f1 --- /dev/null +++ b/projects/reachy-mini-openshell/tests/tools/test_background_tool_manager.py @@ -0,0 +1,545 @@ +"""Tests for BackgroundToolManager.""" + +from __future__ import annotations +import asyncio +from typing import Any +from unittest.mock import AsyncMock, MagicMock + +import pytest + +from reachy_mini_conversation_app.tools.tool_constants import ToolState +from reachy_mini_conversation_app.tools.background_tool_manager import ( + ToolProgress, + BackgroundTool, + ToolCallRoutine, + ToolNotification, + BackgroundToolManager, +) + + +# --------------------------------------------------------------------------- +# Helpers +# --------------------------------------------------------------------------- + + +def _make_routine( + tool_name: str = "test_tool", + result: dict[str, Any] | None = None, + error: Exception | None = None, + delay: float = 0.0, +) -> ToolCallRoutine: + """Create a mock ToolCallRoutine that returns *result* or raises *error*. + + If *delay* > 0, the routine will sleep for that many seconds before + returning / raising so we can test cancellation and progress. + + Mirrors the contract of ``_dispatch_tool_call`` in core_tools: exceptions + (including ``CancelledError``) are caught and returned as + ``{"error": "..."}`` dicts so that ``_run_tool`` never sees a raw raise. + """ + routine = MagicMock(spec=ToolCallRoutine) + routine.tool_name = tool_name + routine.args_json_str = "{}" + + async def _call(manager: BackgroundToolManager) -> dict[str, Any]: + try: + if delay: + await asyncio.sleep(delay) + if error is not None: + raise error + return result or {"ok": True} + except asyncio.CancelledError: + return {"error": "Tool cancelled"} + except Exception as e: + return {"error": f"{type(e).__name__}: {e}"} + + routine.__call__ = _call # type: ignore[method-assign] + routine.side_effect = _call + return routine + + +# --------------------------------------------------------------------------- +# Model / data-class sanity checks +# --------------------------------------------------------------------------- + + +class TestToolProgress: + """Validate ToolProgress construction and bounds.""" + + def test_valid_progress(self) -> None: + """Accept valid progress values and messages.""" + p = ToolProgress(progress=0.5, message="halfway") + assert p.progress == 0.5 + assert p.message == "halfway" + + def test_bounds(self) -> None: + """Allow 0.0 and 1.0 as boundary values.""" + assert ToolProgress(progress=0.0).progress == 0.0 + assert ToolProgress(progress=1.0).progress == 1.0 + + def test_out_of_bounds_raises(self) -> None: + """Reject progress values outside [0, 1].""" + with pytest.raises(Exception): + ToolProgress(progress=-0.1) + with pytest.raises(Exception): + ToolProgress(progress=1.1) + + +class TestToolNotification: + """Validate ToolNotification construction.""" + + def test_creation(self) -> None: + """Create a notification and verify its fields.""" + n = ToolNotification( + id="abc", + tool_name="my_tool", + is_idle_tool_call=False, + status=ToolState.COMPLETED, + result={"data": 1}, + ) + assert n.id == "abc" + assert n.status == ToolState.COMPLETED + assert n.result == {"data": 1} + assert n.error is None + + +class TestBackgroundTool: + """Validate BackgroundTool helpers.""" + + def test_tool_id(self) -> None: + """Verify the composite tool_id property includes started_at.""" + t = BackgroundTool( + id="123", + tool_name="weather", + is_idle_tool_call=False, + status=ToolState.RUNNING, + ) + assert t.tool_id == f"weather-123-{t.started_at}" + + def test_get_notification(self) -> None: + """Convert a BackgroundTool to a ToolNotification.""" + t = BackgroundTool( + id="1", + tool_name="t", + is_idle_tool_call=True, + status=ToolState.COMPLETED, + result={"x": 1}, + error=None, + ) + n = t.get_notification() + assert isinstance(n, ToolNotification) + assert n.id == "1" + assert n.tool_name == "t" + assert n.is_idle_tool_call is True + assert n.status == ToolState.COMPLETED + assert n.result == {"x": 1} + + +# --------------------------------------------------------------------------- +# BackgroundToolManager +# --------------------------------------------------------------------------- + + +@pytest.fixture +def manager() -> BackgroundToolManager: + """Return a fresh BackgroundToolManager for each test.""" + return BackgroundToolManager() + + +class TestSetLoop: + """Verify event-loop assignment via set_loop.""" + + @pytest.mark.asyncio + async def test_set_loop_uses_running_loop(self, manager: BackgroundToolManager) -> None: + """Default to the current running loop.""" + manager.set_loop() + assert manager._loop is asyncio.get_running_loop() + + def test_set_loop_explicit(self, manager: BackgroundToolManager) -> None: + """Accept an explicitly provided loop.""" + loop = asyncio.new_event_loop() + try: + manager.set_loop(loop) + assert manager._loop is loop + finally: + loop.close() + + def test_set_loop_creates_new_when_no_running(self, manager: BackgroundToolManager) -> None: + """When called outside an async context it falls back to a new loop.""" + manager.set_loop() + assert manager._loop is not None + + +class TestStartTool: + """Verify tool registration via start_tool.""" + + @pytest.mark.asyncio + async def test_start_registers_tool(self, manager: BackgroundToolManager) -> None: + """Register a tool and verify its initial state.""" + routine = _make_routine("greet") + bg = await manager.start_tool( + call_id="c1", + tool_call_routine=routine, + is_idle_tool_call=False, + ) + assert bg.tool_name == "greet" + assert bg.id == "c1" + assert bg.status == ToolState.RUNNING + assert manager.get_tool(bg.tool_id) is bg + + # Let the task finish + await asyncio.sleep(0.05) + + @pytest.mark.asyncio + async def test_start_with_progress(self, manager: BackgroundToolManager) -> None: + """Initialize progress tracking when requested.""" + routine = _make_routine("slow", delay=0.1) + bg = await manager.start_tool( + call_id="c2", + tool_call_routine=routine, + is_idle_tool_call=True, + with_progress=True, + ) + assert bg.progress is not None + assert bg.progress.progress == 0.0 + await asyncio.sleep(0.15) + + +class TestRunToolLifecycle: + """Test _run_tool via start_tool (the public entry point).""" + + @pytest.mark.asyncio + async def test_successful_completion(self, manager: BackgroundToolManager) -> None: + """Complete a tool and verify result, status, and notification.""" + routine = _make_routine("ok_tool", result={"answer": 42}) + bg = await manager.start_tool("c1", routine, is_idle_tool_call=False) + + # Wait for the task to finish + await asyncio.sleep(0.05) + + assert bg.status == ToolState.COMPLETED + assert bg.result == {"answer": 42} + assert bg.completed_at is not None + assert bg.error is None + + # Notification should be queued + notification = manager._notification_queue.get_nowait() + assert notification.status == ToolState.COMPLETED + + @pytest.mark.asyncio + async def test_tool_failure(self, manager: BackgroundToolManager) -> None: + """Mark a tool as FAILED when it raises an exception.""" + routine = _make_routine("bad_tool", error=ValueError("boom")) + bg = await manager.start_tool("c1", routine, is_idle_tool_call=False) + + await asyncio.sleep(0.05) + + assert bg.status == ToolState.FAILED + assert "ValueError: boom" in (bg.error or "") + assert bg.completed_at is not None + + notification = manager._notification_queue.get_nowait() + assert notification.status == ToolState.FAILED + + @pytest.mark.asyncio + async def test_tool_cancellation(self, manager: BackgroundToolManager) -> None: + """Cancel a running tool and verify CANCELLED status.""" + routine = _make_routine("long_tool", delay=10.0) + bg = await manager.start_tool("c1", routine, is_idle_tool_call=False) + + # Give the task a moment to start, then cancel + await asyncio.sleep(0.02) + cancelled = await manager.cancel_tool(bg.tool_id) + assert cancelled is True + + # Let cancellation propagate + await asyncio.sleep(0.05) + + assert bg.status == ToolState.CANCELLED + assert bg.error == "Tool cancelled" + assert bg.completed_at is not None + + +class TestUpdateProgress: + """Verify progress updates on running tools.""" + + @pytest.mark.asyncio + async def test_update_progress_success(self, manager: BackgroundToolManager) -> None: + """Update progress value and message on a tracked tool.""" + routine = _make_routine("prog", delay=0.5) + bg = await manager.start_tool("c1", routine, is_idle_tool_call=False, with_progress=True) + + ok = await manager.update_progress(bg.tool_id, 0.5, "half done") + assert ok is True + assert bg.progress is not None + assert bg.progress.progress == 0.5 + assert bg.progress.message == "half done" + + # Cancel to clean up + await manager.cancel_tool(bg.tool_id) + await asyncio.sleep(0.05) + + @pytest.mark.asyncio + async def test_update_progress_clamps(self, manager: BackgroundToolManager) -> None: + """Clamp out-of-range progress values to [0, 1].""" + routine = _make_routine("prog", delay=0.5) + bg = await manager.start_tool("c1", routine, is_idle_tool_call=False, with_progress=True) + + await manager.update_progress(bg.tool_id, 1.5) + assert bg.progress is not None + assert bg.progress.progress == 1.0 + + await manager.update_progress(bg.tool_id, -0.5) + assert bg.progress.progress == 0.0 + + await manager.cancel_tool(bg.tool_id) + await asyncio.sleep(0.05) + + @pytest.mark.asyncio + async def test_update_progress_unknown_tool(self, manager: BackgroundToolManager) -> None: + """Return False for an unknown tool_id.""" + ok = await manager.update_progress("nonexistent", 0.5) + assert ok is False + + @pytest.mark.asyncio + async def test_update_progress_no_tracking(self, manager: BackgroundToolManager) -> None: + """Return False when progress tracking is disabled.""" + routine = _make_routine("fast", delay=0.5) + bg = await manager.start_tool("c1", routine, is_idle_tool_call=False, with_progress=False) + + ok = await manager.update_progress(bg.tool_id, 0.5) + assert ok is False + + await manager.cancel_tool(bg.tool_id) + await asyncio.sleep(0.05) + + +class TestCancelTool: + """Verify tool cancellation behaviour.""" + + @pytest.mark.asyncio + async def test_cancel_nonexistent(self, manager: BackgroundToolManager) -> None: + """Return False when the tool_id does not exist.""" + result = await manager.cancel_tool("does-not-exist") + assert result is False + + @pytest.mark.asyncio + async def test_cancel_already_completed(self, manager: BackgroundToolManager) -> None: + """Return True when cancelling an already-completed tool.""" + routine = _make_routine("done") + bg = await manager.start_tool("c1", routine, is_idle_tool_call=False) + await asyncio.sleep(0.05) # let it finish + assert bg.status == ToolState.COMPLETED + + # Cancelling a completed tool should return True (not running, no-op) + result = await manager.cancel_tool(bg.tool_id) + assert result is True + + +class TestTimeoutTools: + """Verify automatic timeout of long-running tools.""" + + @pytest.mark.asyncio + async def test_timeout_cancels_old_tools(self, manager: BackgroundToolManager) -> None: + """Cancel tools exceeding max duration.""" + # Use a very short max duration + manager._max_tool_duration_seconds = 0.01 + + routine = _make_routine("slow", delay=10.0) + await manager.start_tool("c1", routine, is_idle_tool_call=False) + + # Wait longer than the timeout + await asyncio.sleep(0.05) + + count = await manager.timeout_tools() + assert count == 1 + + await asyncio.sleep(0.05) + + @pytest.mark.asyncio + async def test_timeout_ignores_recent_tools(self, manager: BackgroundToolManager) -> None: + """Leave recent tools untouched.""" + manager._max_tool_duration_seconds = 9999 + + routine = _make_routine("fast", delay=10.0) + bg = await manager.start_tool("c1", routine, is_idle_tool_call=False) + + count = await manager.timeout_tools() + assert count == 0 + + await manager.cancel_tool(bg.tool_id) + await asyncio.sleep(0.05) + + +class TestCleanupTools: + """Verify cleanup of completed tools from memory.""" + + @pytest.mark.asyncio + async def test_cleanup_removes_old_completed(self, manager: BackgroundToolManager) -> None: + """Remove completed tools past the retention window.""" + manager._max_tool_memory_seconds = 0.01 + + routine = _make_routine("old") + bg = await manager.start_tool("c1", routine, is_idle_tool_call=False) + await asyncio.sleep(0.05) + assert bg.status == ToolState.COMPLETED + + # Wait for the memory retention to expire + await asyncio.sleep(0.05) + + removed = await manager.cleanup_tools() + assert removed == 1 + assert manager.get_tool(bg.tool_id) is None + + @pytest.mark.asyncio + async def test_cleanup_keeps_recent_completed(self, manager: BackgroundToolManager) -> None: + """Keep recently completed tools.""" + manager._max_tool_memory_seconds = 9999 + + routine = _make_routine("recent") + bg = await manager.start_tool("c1", routine, is_idle_tool_call=False) + await asyncio.sleep(0.05) + + removed = await manager.cleanup_tools() + assert removed == 0 + assert manager.get_tool(bg.tool_id) is not None + + @pytest.mark.asyncio + async def test_cleanup_ignores_running(self, manager: BackgroundToolManager) -> None: + """Never remove still-running tools.""" + manager._max_tool_memory_seconds = 0.0 # immediate expiry + + routine = _make_routine("still_going", delay=10.0) + bg = await manager.start_tool("c1", routine, is_idle_tool_call=False) + + removed = await manager.cleanup_tools() + assert removed == 0 + + await manager.cancel_tool(bg.tool_id) + await asyncio.sleep(0.05) + + +class TestGetters: + """Verify tool retrieval helpers.""" + + @pytest.mark.asyncio + async def test_get_tool(self, manager: BackgroundToolManager) -> None: + """Return None for missing tools and the instance for known ones.""" + assert manager.get_tool("nope") is None + + routine = _make_routine("x") + bg = await manager.start_tool("1", routine, is_idle_tool_call=False) + assert manager.get_tool(bg.tool_id) is bg + await asyncio.sleep(0.05) + + @pytest.mark.asyncio + async def test_get_running_tools(self, manager: BackgroundToolManager) -> None: + """Return only tools that are still running.""" + r1 = _make_routine("a", delay=10.0) + r2 = _make_routine("b", delay=10.0) + r3 = _make_routine("c") # finishes immediately + + bg1 = await manager.start_tool("1", r1, is_idle_tool_call=False) + bg2 = await manager.start_tool("2", r2, is_idle_tool_call=False) + await manager.start_tool("3", r3, is_idle_tool_call=False) + await asyncio.sleep(0.05) # let r3 finish + + running = manager.get_running_tools() + assert len(running) == 2 + names = {t.tool_name for t in running} + assert names == {"a", "b"} + + # Clean up + await manager.cancel_tool(bg1.tool_id) + await manager.cancel_tool(bg2.tool_id) + await asyncio.sleep(0.05) + + @pytest.mark.asyncio + async def test_get_all_tools_sorted(self, manager: BackgroundToolManager) -> None: + """Tools are returned most-recent-first.""" + r1 = _make_routine("first") + r2 = _make_routine("second") + + await manager.start_tool("1", r1, is_idle_tool_call=False) + await asyncio.sleep(0.02) # ensure different started_at + await manager.start_tool("2", r2, is_idle_tool_call=False) + + await asyncio.sleep(0.05) + + all_tools = manager.get_all_tools() + assert len(all_tools) == 2 + assert all_tools[0].tool_name == "second" + assert all_tools[1].tool_name == "first" + + @pytest.mark.asyncio + async def test_get_all_tools_limit(self, manager: BackgroundToolManager) -> None: + """Respect the limit parameter on get_all_tools.""" + for i in range(5): + r = _make_routine(f"t{i}") + await manager.start_tool(str(i), r, is_idle_tool_call=False) + + await asyncio.sleep(0.05) + + limited = manager.get_all_tools(limit=3) + assert len(limited) == 3 + + +class TestStartUp: + """Verify start_up bootstraps background tasks.""" + + @pytest.mark.asyncio + async def test_startup_creates_tasks(self, manager: BackgroundToolManager) -> None: + """start_up should create the listener and cleanup background tasks.""" + callback = AsyncMock() + manager.start_up(tool_callbacks=[callback]) + + # Start a tool and let it complete — the listener should invoke the callback + routine = _make_routine("ping") + await manager.start_tool("c1", routine, is_idle_tool_call=False) + await asyncio.sleep(0.1) + + assert callback.call_count == 1 + notification = callback.call_args[0][0] + assert isinstance(notification, ToolNotification) + assert notification.status == ToolState.COMPLETED + + @pytest.mark.asyncio + async def test_startup_multiple_callbacks(self, manager: BackgroundToolManager) -> None: + """Invoke all registered callbacks on completion.""" + cb1 = AsyncMock() + cb2 = AsyncMock() + manager.start_up(tool_callbacks=[cb1, cb2]) + + routine = _make_routine("multi") + await manager.start_tool("c1", routine, is_idle_tool_call=False) + await asyncio.sleep(0.1) + + assert cb1.call_count == 1 + assert cb2.call_count == 1 + + +class TestNotificationQueue: + """Verify notifications are enqueued on tool completion or failure.""" + + @pytest.mark.asyncio + async def test_notifications_queued_on_completion(self, manager: BackgroundToolManager) -> None: + """Queue a COMPLETED notification with the tool result.""" + routine = _make_routine("notif", result={"v": 1}) + await manager.start_tool("c1", routine, is_idle_tool_call=False) + await asyncio.sleep(0.05) + + n = manager._notification_queue.get_nowait() + assert n.tool_name == "notif" + assert n.status == ToolState.COMPLETED + assert n.result == {"v": 1} + + @pytest.mark.asyncio + async def test_notifications_queued_on_failure(self, manager: BackgroundToolManager) -> None: + """Queue a FAILED notification with the error message.""" + routine = _make_routine("fail", error=RuntimeError("oops")) + await manager.start_tool("c1", routine, is_idle_tool_call=False) + await asyncio.sleep(0.05) + + n = manager._notification_queue.get_nowait() + assert n.status == ToolState.FAILED + assert "RuntimeError: oops" in (n.error or "") diff --git a/projects/reachy-mini-openshell/tests/vision/test_processors.py b/projects/reachy-mini-openshell/tests/vision/test_processors.py new file mode 100644 index 00000000..bfde6fad --- /dev/null +++ b/projects/reachy-mini-openshell/tests/vision/test_processors.py @@ -0,0 +1,498 @@ +"""Tests for the vision processing module.""" + +import time +from typing import Any +from unittest.mock import Mock, MagicMock, patch + +import numpy as np +import pytest + +from reachy_mini_conversation_app.vision.processors import ( + VisionConfig, + VisionManager, + VisionProcessor, + initialize_vision_manager, +) + + +def test_vision_config_defaults() -> None: + """Test VisionConfig has sensible defaults.""" + config = VisionConfig() + assert config.vision_interval == 5.0 + assert config.max_new_tokens == 64 + assert config.jpeg_quality == 85 + assert config.max_retries == 3 + assert config.retry_delay == 1.0 + assert config.device_preference == "auto" + + +def test_vision_config_custom_values() -> None: + """Test VisionConfig accepts custom values.""" + config = VisionConfig( + model_path="/custom/path", + vision_interval=10.0, + max_new_tokens=128, + jpeg_quality=95, + max_retries=5, + retry_delay=2.0, + device_preference="cpu", + ) + assert config.model_path == "/custom/path" + assert config.vision_interval == 10.0 + assert config.max_new_tokens == 128 + assert config.jpeg_quality == 95 + assert config.max_retries == 5 + assert config.retry_delay == 2.0 + assert config.device_preference == "cpu" + + + +@pytest.fixture +def mock_torch() -> Any: + """Mock torch module to avoid loading actual models.""" + with patch("reachy_mini_conversation_app.vision.processors.torch") as mock: + mock.cuda.is_available.return_value = False + mock.backends.mps.is_available.return_value = False + mock.float32 = "float32" + mock.bfloat16 = "bfloat16" + yield mock + + +@pytest.fixture +def mock_transformers() -> Any: + """Mock transformers module.""" + with patch("reachy_mini_conversation_app.vision.processors.AutoProcessor") as proc, \ + patch("reachy_mini_conversation_app.vision.processors.AutoModelForImageTextToText") as model: + + # Mock processor + mock_processor = MagicMock() + mock_processor.apply_chat_template.return_value = { + "input_ids": MagicMock(to=lambda x: MagicMock()), + "attention_mask": MagicMock(to=lambda x: MagicMock()), + "pixel_values": MagicMock(to=lambda x: MagicMock()), + } + mock_processor.batch_decode.return_value = ["assistant\nThis is a test description."] + mock_processor.tokenizer.eos_token_id = 2 + proc.from_pretrained.return_value = mock_processor + + # Mock model + mock_model_instance = MagicMock() + mock_model_instance.eval.return_value = None + mock_model_instance.generate.return_value = [[1, 2, 3]] + mock_model_instance.to.return_value = mock_model_instance + model.from_pretrained.return_value = mock_model_instance + + yield {"processor": proc, "model": model} + + +def test_vision_processor_device_selection_cpu(mock_torch: Any) -> None: + """Test VisionProcessor selects CPU when specified.""" + config = VisionConfig(device_preference="cpu") + processor = VisionProcessor(config) + assert processor.device == "cpu" + + +def test_vision_processor_device_selection_cuda_unavailable(mock_torch: Any) -> None: + """Test VisionProcessor falls back to CPU when CUDA unavailable.""" + mock_torch.cuda.is_available.return_value = False + config = VisionConfig(device_preference="cuda") + processor = VisionProcessor(config) + assert processor.device == "cpu" + + +def test_vision_processor_device_selection_cuda_available(mock_torch: Any) -> None: + """Test VisionProcessor selects CUDA when available.""" + mock_torch.cuda.is_available.return_value = True + config = VisionConfig(device_preference="cuda") + processor = VisionProcessor(config) + assert processor.device == "cuda" + + +def test_vision_processor_device_selection_mps_available(mock_torch: Any) -> None: + """Test VisionProcessor selects MPS when available on Apple Silicon.""" + mock_torch.backends.mps.is_available.return_value = True + config = VisionConfig(device_preference="mps") + processor = VisionProcessor(config) + assert processor.device == "mps" + + +def test_vision_processor_device_selection_auto_prefers_mps(mock_torch: Any) -> None: + """Test VisionProcessor auto mode prefers MPS on Apple Silicon.""" + mock_torch.backends.mps.is_available.return_value = True + mock_torch.cuda.is_available.return_value = False + config = VisionConfig(device_preference="auto") + processor = VisionProcessor(config) + assert processor.device == "mps" + + +def test_vision_processor_device_selection_auto_prefers_cuda_over_cpu(mock_torch: Any) -> None: + """Test VisionProcessor auto mode prefers CUDA over CPU.""" + mock_torch.backends.mps.is_available.return_value = False + mock_torch.cuda.is_available.return_value = True + config = VisionConfig(device_preference="auto") + processor = VisionProcessor(config) + assert processor.device == "cuda" + + +def test_vision_processor_initialization(mock_torch: Any, mock_transformers: Any) -> None: + """Test VisionProcessor initializes successfully.""" + config = VisionConfig(model_path="test/model") + processor = VisionProcessor(config) + + assert not processor._initialized + result = processor.initialize() + + assert result is True + assert processor._initialized + mock_transformers["processor"].from_pretrained.assert_called_once_with("test/model") + mock_transformers["model"].from_pretrained.assert_called_once() + + +def test_vision_processor_initialization_failure(mock_torch: Any) -> None: + """Test VisionProcessor handles initialization failure gracefully.""" + with patch("reachy_mini_conversation_app.vision.processors.AutoProcessor") as mock_proc: + mock_proc.from_pretrained.side_effect = Exception("Model not found") + + config = VisionConfig(model_path="invalid/model") + processor = VisionProcessor(config) + result = processor.initialize() + + assert result is False + assert not processor._initialized + + +def test_vision_processor_process_image_not_initialized(mock_torch: Any) -> None: + """Test process_image returns error when model not initialized.""" + processor = VisionProcessor() + test_image = np.zeros((480, 640, 3), dtype=np.uint8) + + result = processor.process_image(test_image) + assert result == "Vision model not initialized" + + +def test_vision_processor_process_image_success(mock_torch: Any, mock_transformers: Any) -> None: + """Test process_image processes an image successfully.""" + with patch("reachy_mini_conversation_app.vision.processors.cv2") as mock_cv2: + # Mock cv2.imencode to return success + mock_cv2.imencode.return_value = (True, np.array([1, 2, 3], dtype=np.uint8)) + mock_cv2.IMWRITE_JPEG_QUALITY = 1 + + processor = VisionProcessor() + processor.initialize() + + test_image = np.zeros((480, 640, 3), dtype=np.uint8) + result = processor.process_image(test_image, "Describe this image.") + + assert isinstance(result, str) + assert result == "This is a test description." + + +def test_vision_processor_process_image_encode_failure(mock_torch: Any, mock_transformers: Any) -> None: + """Test process_image handles image encoding failure.""" + with patch("reachy_mini_conversation_app.vision.processors.cv2") as mock_cv2: + mock_cv2.imencode.return_value = (False, None) + mock_cv2.IMWRITE_JPEG_QUALITY = 1 + + processor = VisionProcessor() + processor.initialize() + + test_image = np.zeros((480, 640, 3), dtype=np.uint8) + result = processor.process_image(test_image) + + assert result == "Failed to encode image" + + +def test_vision_processor_process_image_with_retry(mock_torch: Any, mock_transformers: Any) -> None: + """Test process_image retries on failure.""" + with patch("reachy_mini_conversation_app.vision.processors.cv2") as mock_cv2: + mock_cv2.imencode.return_value = (True, np.array([1, 2, 3], dtype=np.uint8)) + mock_cv2.IMWRITE_JPEG_QUALITY = 1 + + # Set up the OutOfMemoryError to be a proper exception + mock_torch.cuda.OutOfMemoryError = type("OutOfMemoryError", (Exception,), {}) + + processor = VisionProcessor(VisionConfig(max_retries=3, retry_delay=0.01)) + processor.initialize() + + # Make the model generate fail twice, then succeed + call_count = [0] + assert processor.model is not None + original_generate = processor.model.generate + + def failing_generate(*args: Any, **kwargs: Any) -> Any: + call_count[0] += 1 + if call_count[0] < 3: + raise Exception("Temporary failure") + return original_generate(*args, **kwargs) + + processor.model.generate = failing_generate + + test_image = np.zeros((480, 640, 3), dtype=np.uint8) + result = processor.process_image(test_image) + + assert isinstance(result, str) + assert call_count[0] == 3 + + +def test_vision_processor_extract_response_variants() -> None: + """Test _extract_response handles different response formats.""" + processor = VisionProcessor() + + # Test with "assistant\n" marker + result = processor._extract_response("user prompt\nassistant\nThe response text") + assert result == "The response text" + + # Test with "Assistant:" marker + result = processor._extract_response("User: prompt\nAssistant: Another response") + assert result == "Another response" + + # Test fallback to full text + result = processor._extract_response("Just some text without markers") + assert result == "Just some text without markers" + + +def test_vision_processor_get_model_info(mock_torch: Any, mock_transformers: Any) -> None: + """Test get_model_info returns correct information.""" + mock_torch.cuda.is_available.return_value = True + mock_torch.cuda.get_device_properties.return_value.total_memory = 8 * 1024**3 + + processor = VisionProcessor(VisionConfig(model_path="test/model", device_preference="cpu")) + processor.initialize() + + info = processor.get_model_info() + + assert info["initialized"] is True + assert info["device"] == "cpu" + assert info["model_path"] == "test/model" + assert "cuda_available" in info + + +@pytest.fixture +def mock_camera() -> Mock: + """Create a mock camera object.""" + camera = Mock() + camera.get_latest_frame.return_value = np.zeros((480, 640, 3), dtype=np.uint8) + return camera + + +def test_vision_manager_initialization(mock_torch: Any, mock_transformers: Any, mock_camera: Mock) -> None: + """Test VisionManager initializes successfully.""" + config = VisionConfig(vision_interval=2.0) + manager = VisionManager(mock_camera, config) + + assert manager.vision_interval == 2.0 + assert manager.processor._initialized + + +def test_vision_manager_initialization_failure(mock_torch: Any, mock_camera: Mock) -> None: + """Test VisionManager raises error when processor initialization fails.""" + with patch("reachy_mini_conversation_app.vision.processors.AutoProcessor") as mock_proc: + mock_proc.from_pretrained.side_effect = Exception("Model not found") + + with pytest.raises(RuntimeError, match="Vision processor initialization failed"): + VisionManager(mock_camera, VisionConfig()) + + +def test_vision_manager_start_stop(mock_torch: Any, mock_transformers: Any, mock_camera: Mock) -> None: + """Test VisionManager can start and stop.""" + manager = VisionManager(mock_camera, VisionConfig()) + + manager.start() + assert manager._thread is not None + assert manager._thread.is_alive() + assert not manager._stop_event.is_set() + + time.sleep(0.1) # Let thread run briefly + + manager.stop() + assert manager._stop_event.is_set() + assert not manager._thread.is_alive() + + +def test_vision_manager_processes_frames(mock_torch: Any, mock_transformers: Any, mock_camera: Mock) -> None: + """Test VisionManager processes frames at intervals.""" + with patch("reachy_mini_conversation_app.vision.processors.cv2") as mock_cv2: + mock_cv2.imencode.return_value = (True, np.array([1, 2, 3], dtype=np.uint8)) + mock_cv2.IMWRITE_JPEG_QUALITY = 1 + + config = VisionConfig(vision_interval=0.1) # Fast interval for testing + manager = VisionManager(mock_camera, config) + + manager.start() + time.sleep(0.3) # Wait for at least 2 processing cycles + manager.stop() + + # Camera should have been called at least once + assert mock_camera.get_latest_frame.call_count >= 1 + + +def test_vision_manager_handles_none_frame(mock_torch: Any, mock_transformers: Any, mock_camera: Mock) -> None: + """Test VisionManager handles None frame gracefully.""" + mock_camera.get_latest_frame.return_value = None + + config = VisionConfig(vision_interval=0.1) + manager = VisionManager(mock_camera, config) + + manager.start() + time.sleep(0.2) + manager.stop() + + # Verify camera was called but no crashes occurred + assert mock_camera.get_latest_frame.called + + +def test_vision_manager_handles_processing_error(mock_torch: Any, mock_transformers: Any, mock_camera: Mock) -> None: + """Test VisionManager handles processing errors gracefully.""" + with patch("reachy_mini_conversation_app.vision.processors.cv2") as mock_cv2: + mock_cv2.imencode.side_effect = Exception("Processing error") + mock_cv2.IMWRITE_JPEG_QUALITY = 1 + + config = VisionConfig(vision_interval=0.1) + manager = VisionManager(mock_camera, config) + + manager.start() + time.sleep(0.2) + manager.stop() + + # Verify thread stopped gracefully despite errors + assert manager._stop_event.is_set() + + +def test_vision_manager_get_status(mock_torch: Any, mock_transformers: Any, mock_camera: Mock) -> None: + """Test VisionManager get_status returns correct information.""" + manager = VisionManager(mock_camera, VisionConfig(vision_interval=5.0)) + + status = manager.get_status() + + assert "last_processed" in status + assert "processor_info" in status + assert "config" in status + assert status["config"]["interval"] == 5.0 + + +def test_vision_manager_skips_invalid_responses(mock_torch: Any, mock_transformers: Any, mock_camera: Mock) -> None: + """Test VisionManager doesn't update timestamp for invalid responses.""" + with patch("reachy_mini_conversation_app.vision.processors.cv2") as mock_cv2: + mock_cv2.imencode.return_value = (True, np.array([1, 2, 3], dtype=np.uint8)) + mock_cv2.IMWRITE_JPEG_QUALITY = 1 + + # Make processor return invalid response + config = VisionConfig(vision_interval=0.1) + manager = VisionManager(mock_camera, config) + + # Mock the processor's process_image method to return invalid response + with patch.object(manager.processor, 'process_image', return_value="Vision model not initialized"): + initial_time = manager._last_processed_time + + manager.start() + time.sleep(0.2) + manager.stop() + + # Last processed time should not have been updated + assert manager._last_processed_time == initial_time + + +def test_initialize_vision_manager_success(mock_torch: Any, mock_transformers: Any, mock_camera: Mock) -> None: + """Test initialize_vision_manager creates VisionManager successfully.""" + with patch("reachy_mini_conversation_app.vision.processors.snapshot_download") as mock_download, \ + patch("reachy_mini_conversation_app.vision.processors.os.makedirs"), \ + patch("reachy_mini_conversation_app.vision.processors.config") as mock_config: + + mock_config.LOCAL_VISION_MODEL = "test/model" + mock_config.HF_HOME = "/tmp/hf_cache" + + result = initialize_vision_manager(mock_camera) + + assert result is not None + assert isinstance(result, VisionManager) + mock_download.assert_called_once() + + +def test_initialize_vision_manager_download_failure(mock_torch: Any, mock_camera: Mock) -> None: + """Test initialize_vision_manager handles download failure.""" + with patch("reachy_mini_conversation_app.vision.processors.snapshot_download") as mock_download, \ + patch("reachy_mini_conversation_app.vision.processors.os.makedirs"), \ + patch("reachy_mini_conversation_app.vision.processors.config") as mock_config: + + mock_config.LOCAL_VISION_MODEL = "test/model" + mock_config.HF_HOME = "/tmp/hf_cache" + mock_download.side_effect = Exception("Network error") + + result = initialize_vision_manager(mock_camera) + + assert result is None + + +def test_initialize_vision_manager_processor_failure(mock_torch: Any, mock_camera: Mock) -> None: + """Test initialize_vision_manager handles processor initialization failure.""" + with patch("reachy_mini_conversation_app.vision.processors.snapshot_download"), \ + patch("reachy_mini_conversation_app.vision.processors.os.makedirs"), \ + patch("reachy_mini_conversation_app.vision.processors.config") as mock_config, \ + patch("reachy_mini_conversation_app.vision.processors.AutoProcessor") as mock_proc: + + mock_config.LOCAL_VISION_MODEL = "test/model" + mock_config.HF_HOME = "/tmp/hf_cache" + mock_proc.from_pretrained.side_effect = Exception("Model load error") + + result = initialize_vision_manager(mock_camera) + + assert result is None + + +def test_vision_processor_cuda_oom_recovery(mock_torch: Any, mock_transformers: Any) -> None: + """Test VisionProcessor recovers from CUDA OOM errors.""" + with patch("reachy_mini_conversation_app.vision.processors.cv2") as mock_cv2: + mock_cv2.imencode.return_value = (True, np.array([1, 2, 3], dtype=np.uint8)) + mock_cv2.IMWRITE_JPEG_QUALITY = 1 + + processor = VisionProcessor(VisionConfig(max_retries=2, retry_delay=0.01)) + processor.initialize() + processor.device = "cuda" # Force CUDA for this test + + # Make generate raise OOM error + mock_torch.cuda.OutOfMemoryError = type("OutOfMemoryError", (Exception,), {}) + assert processor.model is not None + processor.model.generate.side_effect = mock_torch.cuda.OutOfMemoryError("OOM") + + test_image = np.zeros((480, 640, 3), dtype=np.uint8) + result = processor.process_image(test_image) + + assert "GPU out of memory" in result + mock_torch.cuda.empty_cache.assert_called() + + +def test_vision_processor_cache_cleanup_mps(mock_torch: Any, mock_transformers: Any) -> None: + """Test VisionProcessor cleans up MPS cache after processing.""" + with patch("reachy_mini_conversation_app.vision.processors.cv2") as mock_cv2: + mock_cv2.imencode.return_value = (True, np.array([1, 2, 3], dtype=np.uint8)) + mock_cv2.IMWRITE_JPEG_QUALITY = 1 + + processor = VisionProcessor() + processor.initialize() + processor.device = "mps" # Force MPS for this test + + test_image = np.zeros((480, 640, 3), dtype=np.uint8) + processor.process_image(test_image) + + # Should call mps empty_cache + mock_torch.mps.empty_cache.assert_called() + + +def test_vision_manager_thread_safety(mock_torch: Any, mock_transformers: Any, mock_camera: Mock) -> None: + """Test VisionManager thread safety with multiple start/stop cycles.""" + with patch("reachy_mini_conversation_app.vision.processors.cv2") as mock_cv2: + mock_cv2.imencode.return_value = (True, np.array([1, 2, 3], dtype=np.uint8)) + mock_cv2.IMWRITE_JPEG_QUALITY = 1 + + config = VisionConfig(vision_interval=0.05) + manager = VisionManager(mock_camera, config) + + # Multiple start/stop cycles + for _ in range(3): + manager.start() + time.sleep(0.1) + manager.stop() + time.sleep(0.05) + + # Should not crash or leave dangling threads + assert manager._stop_event.is_set() From dc0cae1349af841c97e57036a42084f19d8c5aff Mon Sep 17 00:00:00 2001 From: Johnny Greco Date: Wed, 24 Jun 2026 17:50:36 -0400 Subject: [PATCH 05/22] Expand root gitignore --- .gitignore | 112 ++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 110 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index b7080d0e..f1304db4 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,115 @@ +# OS and editor noise .DS_Store +Thumbs.db +*.swp +*.swo +*~ +.idea/ +.vscode/ +!.vscode/extensions.json +!.vscode/settings.json + +# Secrets and local environment +.env +.env.* +!.env.example +*.local +*.key +*.pem +*.crt +*.csr + +# Logs +*.log +logs/ +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* + +# Temporary and cache directories .cache/ -.venv/ -.venv-docs/ +.uv-cache/ +.tmp/ +tmp/ +temp/ + +# Python __pycache__/ +*.py[cod] +*$py.class +*.so +.Python +.venv/ +.venv-*/ +venv/ +ENV/ +env/ +pip-wheel-metadata/ +*.egg-info/ +.eggs/ +build/ +dist/ +htmlcov/ +.coverage +.coverage.* +coverage.xml +.pytest_cache/ +.mypy_cache/ +.ruff_cache/ +.pyre/ +.pytype/ +.hypothesis/ +.tox/ +.nox/ +.dmypy.json +dmypy.json +.ipynb_checkpoints/ + +# Rust +target/ +**/*.rs.bk + +# JavaScript and TypeScript +node_modules/ +.npm/ +.pnpm-store/ +.yarn/cache/ +.yarn/unplugged/ +.yarn/build-state.yml +.yarn/install-state.gz +dist/ +build/ +coverage/ +.nyc_output/ +*.tsbuildinfo +*.eslintcache +.vite/ +.turbo/ +.parcel-cache/ +.angular/cache/ +.next/ +.nuxt/ +.svelte-kit/ +.output/ +.vercel/ +.netlify/ +.serverless/ +out/ + +# Static site and docs output public/ site/ +.docusaurus/ +.vitepress/cache/ +.vitepress/dist/ + +# Runtime artifacts +*.pid +*.seed +*.pid.lock + +# Package artifacts +*.tgz +*.tar.gz +*.zip From a94321b80ff0491a5895c7ed0cb18a477dba4ac2 Mon Sep 17 00:00:00 2001 From: Johnny Greco Date: Wed, 24 Jun 2026 18:33:49 -0400 Subject: [PATCH 06/22] Fix Reachy Mini dependency sync --- README.md | 2 +- projects/README.md | 4 +- projects/reachy-mini-openshell/README.md | 236 +- projects/reachy-mini-openshell/pyproject.toml | 9 +- projects/reachy-mini-openshell/uv.lock | 2949 +++++++++++++++++ 5 files changed, 3180 insertions(+), 20 deletions(-) create mode 100644 projects/reachy-mini-openshell/uv.lock diff --git a/README.md b/README.md index 4d4540b7..90daf0cf 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,7 @@ OpenShell as the runtime. build logs worth sharing. - `docs/dev-notes/authors.json` contains reusable Dev Notes author metadata. - `projects/` contains self-contained research projects, including the reusable - Python template and Reachy Mini OpenShell application. + Python template and Reachy OpenShell fork of the Reachy Mini conversation app. - `scripts/render-dev-notes.py` renders Dev Notes cards, post bylines, and navigation entries from post front matter. - `zensical.toml` configures the documentation site. diff --git a/projects/README.md b/projects/README.md index 6363ca58..472bc3aa 100644 --- a/projects/README.md +++ b/projects/README.md @@ -8,5 +8,5 @@ Current projects: - `python-project-template`: Minimal, production-ready Python project scaffold managed with uv. -- `reachy-mini-openshell`: Reachy Mini simulator/backend research for running - the backend inside an OpenShell runtime. +- `reachy-mini-openshell`: OpenShell-oriented fork of the Reachy Mini + conversation app. diff --git a/projects/reachy-mini-openshell/README.md b/projects/reachy-mini-openshell/README.md index de3e35db..ef70d72e 100644 --- a/projects/reachy-mini-openshell/README.md +++ b/projects/reachy-mini-openshell/README.md @@ -10,44 +10,250 @@ tags: - reachy_mini_python_app --- -# Reachy OpenShell +# 🤖 Reachy OpenShell -Reachy OpenShell is a locked-profile fork of the Reachy Mini conversation app -for OpenShell research. +Reachy OpenShell is an OpenShell-oriented fork of the Reachy Mini conversation +app. The repository now uses the default Reachy conversation-app package shape +generated by: -## Customize +```bash +reachy-mini-app-assistant create --template conversation +``` -The app is locked to: +The Python package and command names intentionally match that template: -```text -src/reachy_mini_conversation_app/profiles/_reachy_mini_conversation_app_locked_profile +- package: `reachy_mini_conversation_app` +- module entry point: `python -m reachy_mini_conversation_app` +- console script: `reachy-mini-conversation-app` +- Reachy Mini Apps entry point: `reachy_mini_conversation_app` + +The app is no longer the old `reachy_openshell` smoke/backend scaffold. There is +no standalone backend server on port `8080`, no `reachy_openshell.backend`, and +no `reachy_openshell.smoke` module. Runtime communication goes through the +Reachy Mini SDK and daemon, while the conversation UI is provided by Gradio or +the Reachy Mini app shell. + +## What Is Here + +This project contains: + +- a forked Reachy Mini voice conversation app +- OpenAI Realtime audio conversation support +- Reachy Mini movement, dance, emotion, and look-around tools +- a locked OpenShell profile for instructions and tool selection +- optional camera, local vision, YOLO head-tracking, and MediaPipe head-tracking + integrations + +## Requirements + +- Python 3.10, 3.11, or 3.12. The recommended local version is Python 3.12. +- `uv` for the recommended local workflow +- Reachy Mini SDK 1.8.0, installed through this project. This is pinned to the + version compatible with the forked conversation-app dependency stack. +- a running Reachy Mini daemon, either connected to hardware or started in + simulator mode +- an OpenAI API key for conversation + +## Install + +From the repository root: + +```bash +cd projects/reachy-mini-openshell +uv venv --python 3.12 +source .venv/bin/activate +uv sync +cp .env.example .env ``` -That folder is the customization surface: +Then edit `.env` and set: + +```bash +OPENAI_API_KEY=your_api_key_here +``` + +If you are not using `uv`, install the app in editable mode from the project +directory: + +```bash +python -m venv .venv +source .venv/bin/activate +python -m pip install -e . +``` -- `instructions.txt`: system prompt for the assistant -- `tools.txt`: explicit tool allow-list -- Python files in that folder: profile-local tools +For development tools and tests: + +```bash +uv sync --group dev +``` + +The checked-in uv resolution currently targets macOS/Darwin development. If the +app is later deployed from this repo on Linux, revisit `[tool.uv].environments` +and regenerate `uv.lock` for that platform. + +## Optional Dependencies + +The active optional dependency groups are vision-related only: + +```bash +uv sync --extra local_vision +uv sync --extra yolo_vision +uv sync --extra mediapipe_vision +uv sync --extra all_vision +``` + +With `pip`, use the equivalent editable installs: + +```bash +python -m pip install -e '.[local_vision]' +python -m pip install -e '.[yolo_vision]' +python -m pip install -e '.[mediapipe_vision]' +python -m pip install -e '.[all_vision]' +``` + +There are no `backend` or `sim` extras anymore. The previous backend extra +belonged to the deleted scaffold, and simulator support is provided by the +Reachy Mini daemon/runtime rather than a project extra. + +## Configuration + +The app loads `.env` from the current directory or a parent directory unless +`REACHY_MINI_SKIP_DOTENV=1` is set. + +Supported environment variables: + +- `OPENAI_API_KEY`: API key used by OpenAI Realtime. +- `MODEL_NAME`: Realtime model name. Defaults to `gpt-realtime`. +- `LOCAL_VISION_MODEL`: Hugging Face model used with `--local-vision`. +- `HF_HOME`: Hugging Face cache directory. Defaults to `./cache`. +- `HF_TOKEN`: optional Hugging Face token for gated models. + +When running with Gradio, the UI also includes an OpenAI API key field. The +bundled Reachy Mini settings UI can store and validate the key when the app is +run through the Reachy Mini app shell. ## Run Locally -Start the Reachy Mini daemon first. For the simulator baseline: +Start the Reachy Mini daemon first. For the local simulator baseline: ```bash reachy-mini-daemon --sim --scene minimal --headless --no-media --fastapi-host 127.0.0.1 --fastapi-port 8000 --dataset-update-interval 0 ``` +You can verify the daemon separately at: + +```text +http://127.0.0.1:8000/api/daemon/status +``` + Then run the conversation app: ```bash python -m reachy_mini_conversation_app --gradio --no-camera ``` -The app also installs a console script: +The installed console script is equivalent: ```bash reachy-mini-conversation-app --gradio --no-camera ``` -Simulation mode auto-enables Gradio; `--gradio` is included here so the expected -browser interface is explicit. +In simulator mode, the app auto-enables Gradio. The examples still pass +`--gradio` so the expected browser interface is explicit. Gradio usually opens +at: + +```text +http://127.0.0.1:7860/ +``` + +If port `7860` is busy, Gradio may choose another available local port and print +that URL in the terminal. + +## Runtime Flags + +Useful app flags: + +- `--gradio`: launch the browser conversation UI. +- `--no-camera`: disable camera usage. This is the recommended simulator + baseline. +- `--head-tracker yolo`: enable YOLO head tracking. Requires the `yolo_vision` + extra. +- `--head-tracker mediapipe`: enable MediaPipe head tracking. Requires the + `mediapipe_vision` extra. +- `--local-vision`: use a local vision model instead of Realtime vision. + Requires the `local_vision` extra. +- `--robot-name `: connect to a daemon started with the same + `--robot-name`. +- `--debug`: enable debug logging. + +Examples: + +```bash +python -m reachy_mini_conversation_app --gradio --no-camera +python -m reachy_mini_conversation_app --gradio --head-tracker yolo +python -m reachy_mini_conversation_app --gradio --local-vision +python -m reachy_mini_conversation_app --gradio --robot-name reachy-mini-a +``` + +## Locked Profile + +OpenShell customization lives in the locked profile: + +```text +src/reachy_mini_conversation_app/profiles/_reachy_mini_conversation_app_locked_profile +``` + +That folder is the customization surface: + +- `instructions.txt`: the system prompt for the assistant +- `tools.txt`: the explicit allow-list of profile tools +- Python files in the folder: profile-local tool implementations + +The current profile allows: + +```text +dance +stop_dance +play_emotion +stop_emotion +sweep_look +``` + +`sweep_look` is implemented in the locked profile. The other allowed tools come +from the app's built-in tool set. The tool loader also includes required system +tools automatically. + +## Validate Changes + +Useful local checks: + +```bash +python -m compileall src tests +python -m reachy_mini_conversation_app --help +reachy-mini-app-assistant check . +``` + +Tests require the development dependency group: + +```bash +uv sync --group dev +python -m pytest -q +``` + +## Troubleshooting + +If the app cannot connect, make sure the daemon is running before launching the +conversation app. If the daemon was started with `--robot-name`, pass the same +name to the app with `--robot-name`. + +If `--local-vision`, `--head-tracker yolo`, or `--head-tracker mediapipe` fails +with an import error, install the matching optional dependency group. + +If `uv sync` tries to build `pygobject` or `pycairo` on macOS, the resolver is +including a Linux media dependency path. This project scopes uv resolution to +Darwin for the current local workflow; rerun `uv sync`, and if uv is still using +old metadata, clear the package cache with `uv cache clean reachy-mini pygobject +pycairo`. + +If you are running the simulator with `--no-media`, keep `--no-camera` on the +conversation app. diff --git a/projects/reachy-mini-openshell/pyproject.toml b/projects/reachy-mini-openshell/pyproject.toml index 6ddc6313..800679d8 100644 --- a/projects/reachy-mini-openshell/pyproject.toml +++ b/projects/reachy-mini-openshell/pyproject.toml @@ -7,8 +7,8 @@ name = "reachy_mini_conversation_app" version = "0.3.0" description = "OpenShell-oriented fork of the Reachy Mini conversation app." readme = "README.md" -requires-python = ">=3.10" -dependencies = [ "aiortc>=1.13.0", "fastrtc>=0.0.34", "gradio==5.50.1.dev1", "huggingface-hub==1.3.0", "opencv-python>=4.12.0.88", "python-dotenv", "openai>=2.1", "reachy_mini_dances_library", "reachy_mini_toolbox", "reachy-mini>=1.5.0", "eclipse-zenoh~=1.7.0", "gradio_client>=1.13.3",] +requires-python = ">=3.10,<3.13" +dependencies = [ "aiortc>=1.13.0", "fastrtc>=0.0.34", "gradio==5.50.1.dev1", "huggingface-hub==1.3.0", "opencv-python>=4.12.0.88", "python-dotenv", "openai>=2.1", "reachy_mini_dances_library", "reachy_mini_toolbox", "reachy-mini==1.8.0", "eclipse-zenoh~=1.7.0", "gradio_client>=1.13.3",] [[project.authors]] name = "Pollen Robotics" email = "contact@pollen-robotics.com" @@ -16,6 +16,11 @@ email = "contact@pollen-robotics.com" [dependency-groups] dev = [ "pytest", "pytest-asyncio", "ruff==0.12.0", "mypy==1.18.2", "pre-commit", "types-requests", "python-semantic-release>=10.5.3",] +[tool.uv] +environments = [ + "sys_platform == 'darwin'", +] + [project.optional-dependencies] local_vision = [ "torch>=2.1", "transformers==5.0.0rc2", "num2words",] yolo_vision = [ "ultralytics", "supervision",] diff --git a/projects/reachy-mini-openshell/uv.lock b/projects/reachy-mini-openshell/uv.lock new file mode 100644 index 00000000..a7ff8ddf --- /dev/null +++ b/projects/reachy-mini-openshell/uv.lock @@ -0,0 +1,2949 @@ +version = 1 +revision = 3 +requires-python = ">=3.10, <3.13" +resolution-markers = [ + "python_full_version >= '3.12' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and sys_platform == 'darwin'", + "python_full_version < '3.11' and sys_platform == 'darwin'", +] +supported-markers = [ + "sys_platform == 'darwin'", +] + +[[package]] +name = "absl-py" +version = "2.4.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/64/c7/8de93764ad66968d19329a7e0c147a2bb3c7054c554d4a119111b8f9440f/absl_py-2.4.0.tar.gz", hash = "sha256:8c6af82722b35cf71e0f4d1d47dcaebfff286e27110a99fc359349b247dfb5d4", size = 116543, upload-time = "2026-01-28T10:17:05.322Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/18/a6/907a406bb7d359e6a63f99c313846d9eec4f7e6f7437809e03aa00fa3074/absl_py-2.4.0-py3-none-any.whl", hash = "sha256:88476fd881ca8aab94ffa78b7b6c632a782ab3ba1cd19c9bd423abc4fb4cd28d", size = 135750, upload-time = "2026-01-28T10:17:04.19Z" }, +] + +[[package]] +name = "aiofiles" +version = "24.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/0b/03/a88171e277e8caa88a4c77808c20ebb04ba74cc4681bf1e9416c862de237/aiofiles-24.1.0.tar.gz", hash = "sha256:22a075c9e5a3810f0c2e48f3008c94d68c65d763b9b03857924c99e57355166c", size = 30247, upload-time = "2024-06-24T11:02:03.584Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a5/45/30bb92d442636f570cb5651bc661f52b610e2eec3f891a5dc3a4c3667db0/aiofiles-24.1.0-py3-none-any.whl", hash = "sha256:b4ec55f4195e3eb5d7abd1bf7e061763e864dd4954231fb8539a0ef8bb8260e5", size = 15896, upload-time = "2024-06-24T11:02:01.529Z" }, +] + +[[package]] +name = "aiohappyeyeballs" +version = "2.6.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/33/c6/61a2d7b7572279226bb2e7f61d7a19ca7c90da0329c93fa0d560cbf288d8/aiohappyeyeballs-2.6.2.tar.gz", hash = "sha256:e202810ee718bd01fc6ef49e8ea53d023d5cb6b581076d7925aa499fa55dbe64", size = 22591, upload-time = "2026-05-20T15:12:24.631Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5f/fc/a7bf5b6e4e617b45f90f2d9d2a68519c249c81dd4fc2658c7a2a61c4f4b7/aiohappyeyeballs-2.6.2-py3-none-any.whl", hash = "sha256:4708045e2d7a6c6bdf8aafa8ed39649eaf926a4543b54560659129e3365953c4", size = 15062, upload-time = "2026-05-20T15:12:23.328Z" }, +] + +[[package]] +name = "aiohttp" +version = "3.14.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "aiohappyeyeballs", marker = "sys_platform == 'darwin'" }, + { name = "aiosignal", marker = "sys_platform == 'darwin'" }, + { name = "async-timeout", marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, + { name = "attrs", marker = "sys_platform == 'darwin'" }, + { name = "frozenlist", marker = "sys_platform == 'darwin'" }, + { name = "multidict", marker = "sys_platform == 'darwin'" }, + { name = "propcache", marker = "sys_platform == 'darwin'" }, + { name = "typing-extensions", marker = "sys_platform == 'darwin'" }, + { name = "yarl", marker = "sys_platform == 'darwin'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/82/78/8ea7308cac6934de8c74a14f3d5f65d1c89287426688be79538d0e5c013d/aiohttp-3.14.1.tar.gz", hash = "sha256:307f2cff90a764d329e77040603fa032db89c5c24fdad50c4c15334cba744035", size = 7955794, upload-time = "2026-06-07T21:09:35.529Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6d/67/58ded4b3f2e10f94972d8928050c85330e249a31dd45a0e5f3c0e9c3fa05/aiohttp-3.14.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:8f6bb621e5863cfe8fe5ff5468002d200ec31f30f1280b259dc505b02595099e", size = 766140, upload-time = "2026-06-07T21:05:37.471Z" }, + { url = "https://files.pythonhosted.org/packages/18/68/4ae5b4e08943f316594bb68da89957d3baf5760588fa09509594bd777e4b/aiohttp-3.14.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:4f7215cb3933784f79ed20e5f050e15984f390424339b22375d5a53c933a0491", size = 519430, upload-time = "2026-06-07T21:05:40.751Z" }, + { url = "https://files.pythonhosted.org/packages/cb/c1/316c8f3549dbe5245f92bfd523ec6f32dd4d98cafe21df3f6a19b1184c75/aiohttp-3.14.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d9d4e294455b23a68c9b8f042d0e8e377a265bcb15332753695f6e5b6819e0ce", size = 514406, upload-time = "2026-06-07T21:05:42.111Z" }, + { url = "https://files.pythonhosted.org/packages/26/dd/bf526e6f0a1120dd6f2df2e97bacfe4d358f13d17a0ff5847301a1375a51/aiohttp-3.14.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:aa00140699487bd435fde4342d85c94cb256b7cd3a5b9c3396c67f19922afda2", size = 765225, upload-time = "2026-06-07T21:06:07.957Z" }, + { url = "https://files.pythonhosted.org/packages/8f/e1/a2872aa55495a70f61310d411541c6ee23812d9a884e000c716e1bc3edbf/aiohttp-3.14.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1c1af67559445498b502030c35c59db59966f47041ca9de5b4e707f86bd10b5f", size = 518743, upload-time = "2026-06-07T21:06:09.749Z" }, + { url = "https://files.pythonhosted.org/packages/5b/e7/c60c7b209e509cc787de3cea0550a518538cfc08003e1c1e14c1c63fff71/aiohttp-3.14.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d44ec478e713ee7f29b439f7eb8dc2b9d4079e11ae114d2c2ac3d5daf30516c8", size = 514139, upload-time = "2026-06-07T21:06:11.26Z" }, + { url = "https://files.pythonhosted.org/packages/1d/21/151624b51cd92553d95424daf4bf19f19ce9be9002d19253e7e7ce67197b/aiohttp-3.14.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:d35143e27778b4bb0fb189562d7f275bff79c62ab8e98459717c0ea617ff2480", size = 757402, upload-time = "2026-06-07T21:06:40.311Z" }, + { url = "https://files.pythonhosted.org/packages/c2/82/280619e0bd7bf2454987e19282616e84762255dd9c8468f62382e8c191f1/aiohttp-3.14.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:bcfb80a2cc36fba2534e5e5b5264dc7ae6fcd9bf15256da3e53d2f499e6fa29d", size = 512310, upload-time = "2026-06-07T21:06:42.207Z" }, + { url = "https://files.pythonhosted.org/packages/55/b2/2aac325583aaa1353045f96dffa586d8a34e8322e14a7ba49cffeb103ab4/aiohttp-3.14.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:27fd7c91e51729b4f7e1577865fa6d34c9adccbc39aabe9000285b48af9f0ec2", size = 512448, upload-time = "2026-06-07T21:06:43.813Z" }, +] + +[[package]] +name = "aioice" +version = "0.10.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "dnspython", marker = "sys_platform == 'darwin'" }, + { name = "ifaddr", marker = "sys_platform == 'darwin'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/67/04/df7286233f468e19e9bedff023b6b246182f0b2ccb04ceeb69b2994021c6/aioice-0.10.2.tar.gz", hash = "sha256:bf236c6829ee33c8e540535d31cd5a066b531cb56de2be94c46be76d68b1a806", size = 44307, upload-time = "2025-11-28T15:56:48.836Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c7/e3/0d23b1f930c17d371ce1ec36ee529f22fd19ebc2a07fe3418e3d1d884ce2/aioice-0.10.2-py3-none-any.whl", hash = "sha256:14911c15ab12d096dd14d372ebb4aecbb7420b52c9b76fdfcf54375dec17fcbf", size = 24875, upload-time = "2025-11-28T15:56:47.847Z" }, +] + +[[package]] +name = "aiortc" +version = "1.14.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "aioice", marker = "sys_platform == 'darwin'" }, + { name = "av", marker = "sys_platform == 'darwin'" }, + { name = "cryptography", marker = "sys_platform == 'darwin'" }, + { name = "google-crc32c", marker = "sys_platform == 'darwin'" }, + { name = "pyee", marker = "sys_platform == 'darwin'" }, + { name = "pylibsrtp", marker = "sys_platform == 'darwin'" }, + { name = "pyopenssl", marker = "sys_platform == 'darwin'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/51/9c/4e027bfe0195de0442da301e2389329496745d40ae44d2d7c4571c4290ce/aiortc-1.14.0.tar.gz", hash = "sha256:adc8a67ace10a085721e588e06a00358ed8eaf5f6b62f0a95358ff45628dd762", size = 1180864, upload-time = "2025-10-13T21:40:37.905Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/57/ab/31646a49209568cde3b97eeade0d28bb78b400e6645c56422c101df68932/aiortc-1.14.0-py3-none-any.whl", hash = "sha256:4b244d7e482f4e1f67e685b3468269628eca1ec91fa5b329ab517738cfca086e", size = 93183, upload-time = "2025-10-13T21:40:36.59Z" }, +] + +[[package]] +name = "aiosignal" +version = "1.4.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "frozenlist", marker = "sys_platform == 'darwin'" }, + { name = "typing-extensions", marker = "sys_platform == 'darwin'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/61/62/06741b579156360248d1ec624842ad0edf697050bbaf7c3e46394e106ad1/aiosignal-1.4.0.tar.gz", hash = "sha256:f47eecd9468083c2029cc99945502cb7708b082c232f9aca65da147157b251c7", size = 25007, upload-time = "2025-07-03T22:54:43.528Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fb/76/641ae371508676492379f16e2fa48f4e2c11741bd63c48be4b12a6b09cba/aiosignal-1.4.0-py3-none-any.whl", hash = "sha256:053243f8b92b990551949e63930a839ff0cf0b0ebbe0597b0f3fb19e1a0fe82e", size = 7490, upload-time = "2025-07-03T22:54:42.156Z" }, +] + +[[package]] +name = "annotated-doc" +version = "0.0.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/57/ba/046ceea27344560984e26a590f90bc7f4a75b06701f653222458922b558c/annotated_doc-0.0.4.tar.gz", hash = "sha256:fbcda96e87e9c92ad167c2e53839e57503ecfda18804ea28102353485033faa4", size = 7288, upload-time = "2025-11-10T22:07:42.062Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1e/d3/26bf1008eb3d2daa8ef4cacc7f3bfdc11818d111f7e2d0201bc6e3b49d45/annotated_doc-0.0.4-py3-none-any.whl", hash = "sha256:571ac1dc6991c450b25a9c2d84a3705e2ae7a53467b5d111c24fa8baabbed320", size = 5303, upload-time = "2025-11-10T22:07:40.673Z" }, +] + +[[package]] +name = "annotated-types" +version = "0.7.0" +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" }, +] + +[[package]] +name = "anyio" +version = "4.14.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "exceptiongroup", marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, + { name = "idna", marker = "sys_platform == 'darwin'" }, + { name = "typing-extensions", marker = "sys_platform == 'darwin'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/3b/72/5562aabb8dd7181e8e860622a38bea08d17842b99ecd4c91f84ac95251b0/anyio-4.14.1.tar.gz", hash = "sha256:8d648a3544c1a700e3ff78615cd679e4c5c3f149904287e73687b2596963629e", size = 254831, upload-time = "2026-06-24T20:56:06.017Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b0/7b/90df4a0a816d98d6ea26f559d87836d494a2cf1fcf063be67df50a7bcc30/anyio-4.14.1-py3-none-any.whl", hash = "sha256:4e5533c5b8ff0a24f5d7a176cbe6877129cd183893f66b537f8f227d10527d72", size = 124875, upload-time = "2026-06-24T20:56:04.413Z" }, +] + +[[package]] +name = "asgiref" +version = "3.11.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions", marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/63/40/f03da1264ae8f7cfdbf9146542e5e7e8100a4c66ab48e791df9a03d3f6c0/asgiref-3.11.1.tar.gz", hash = "sha256:5f184dc43b7e763efe848065441eac62229c9f7b0475f41f80e207a114eda4ce", size = 38550, upload-time = "2026-02-03T13:30:14.33Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5c/0a/a72d10ed65068e115044937873362e6e32fab1b7dce0046aeb224682c989/asgiref-3.11.1-py3-none-any.whl", hash = "sha256:e8667a091e69529631969fd45dc268fa79b99c92c5fcdda727757e52146ec133", size = 24345, upload-time = "2026-02-03T13:30:13.039Z" }, +] + +[[package]] +name = "async-timeout" +version = "5.0.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a5/ae/136395dfbfe00dfc94da3f3e136d0b13f394cba8f4841120e34226265780/async_timeout-5.0.1.tar.gz", hash = "sha256:d9321a7a3d5a6a5e187e824d2fa0793ce379a202935782d555d6e9d2735677d3", size = 9274, upload-time = "2024-11-06T16:41:39.6Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fe/ba/e2081de779ca30d473f21f5b30e0e737c438205440784c7dfc81efc2b029/async_timeout-5.0.1-py3-none-any.whl", hash = "sha256:39e3809566ff85354557ec2398b55e096c8364bacac9405a7a1fa429e77fe76c", size = 6233, upload-time = "2024-11-06T16:41:37.9Z" }, +] + +[[package]] +name = "attrs" +version = "26.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/9a/8e/82a0fe20a541c03148528be8cac2408564a6c9a0cc7e9171802bc1d26985/attrs-26.1.0.tar.gz", hash = "sha256:d03ceb89cb322a8fd706d4fb91940737b6642aa36998fe130a9bc96c985eff32", size = 952055, upload-time = "2026-03-19T14:22:25.026Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/64/b4/17d4b0b2a2dc85a6df63d1157e028ed19f90d4cd97c36717afef2bc2f395/attrs-26.1.0-py3-none-any.whl", hash = "sha256:c647aa4a12dfbad9333ca4e71fe62ddc36f4e63b2d260a37a8b83d2f043ac309", size = 67548, upload-time = "2026-03-19T14:22:23.645Z" }, +] + +[[package]] +name = "audioread" +version = "3.1.0" +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" }, +] + +[[package]] +name = "av" +version = "16.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/78/cd/3a83ffbc3cc25b39721d174487fb0d51a76582f4a1703f98e46170ce83d4/av-16.1.0.tar.gz", hash = "sha256:a094b4fd87a3721dacf02794d3d2c82b8d712c85b9534437e82a8a978c175ffd", size = 4285203, upload-time = "2026-01-11T07:31:33.772Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/97/51/2217a9249409d2e88e16e3f16f7c0def9fd3e7ffc4238b2ec211f9935bdb/av-16.1.0-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:2395748b0c34fe3a150a1721e4f3d4487b939520991b13e7b36f8926b3b12295", size = 26942590, upload-time = "2026-01-09T20:17:58.588Z" }, + { url = "https://files.pythonhosted.org/packages/bf/cd/a7070f4febc76a327c38808e01e2ff6b94531fe0b321af54ea3915165338/av-16.1.0-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:72d7ac832710a158eeb7a93242370aa024a7646516291c562ee7f14a7ea881fd", size = 21507910, upload-time = "2026-01-09T20:18:02.309Z" }, + { url = "https://files.pythonhosted.org/packages/48/d0/b71b65d1b36520dcb8291a2307d98b7fc12329a45614a303ff92ada4d723/av-16.1.0-cp311-cp311-macosx_11_0_x86_64.whl", hash = "sha256:e88ad64ee9d2b9c4c5d891f16c22ae78e725188b8926eb88187538d9dd0b232f", size = 26927747, upload-time = "2026-01-09T20:18:16.976Z" }, + { url = "https://files.pythonhosted.org/packages/2f/79/720a5a6ccdee06eafa211b945b0a450e3a0b8fc3d12922f0f3c454d870d2/av-16.1.0-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:cb296073fa6935724de72593800ba86ae49ed48af03960a4aee34f8a611f442b", size = 21492232, upload-time = "2026-01-09T20:18:19.266Z" }, + { url = "https://files.pythonhosted.org/packages/9c/84/2535f55edcd426cebec02eb37b811b1b0c163f26b8d3f53b059e2ec32665/av-16.1.0-cp312-cp312-macosx_11_0_x86_64.whl", hash = "sha256:640f57b93f927fba8689f6966c956737ee95388a91bd0b8c8b5e0481f73513d6", size = 26945785, upload-time = "2026-01-09T20:18:34.486Z" }, + { url = "https://files.pythonhosted.org/packages/b6/17/ffb940c9e490bf42e86db4db1ff426ee1559cd355a69609ec1efe4d3a9eb/av-16.1.0-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:ae3fb658eec00852ebd7412fdc141f17f3ddce8afee2d2e1cf366263ad2a3b35", size = 21481147, upload-time = "2026-01-09T20:18:36.716Z" }, +] + +[[package]] +name = "backports-asyncio-runner" +version = "1.2.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/8e/ff/70dca7d7cb1cbc0edb2c6cc0c38b65cba36cccc491eca64cabd5fe7f8670/backports_asyncio_runner-1.2.0.tar.gz", hash = "sha256:a5aa7b2b7d8f8bfcaa2b57313f70792df84e32a2a746f585213373f900b42162", size = 69893, upload-time = "2025-07-02T02:27:15.685Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a0/59/76ab57e3fe74484f48a53f8e337171b4a2349e506eabe136d7e01d059086/backports_asyncio_runner-1.2.0-py3-none-any.whl", hash = "sha256:0da0a936a8aeb554eccb426dc55af3ba63bcdc69fa1a600b5bb305413a4477b5", size = 12313, upload-time = "2025-07-02T02:27:14.263Z" }, +] + +[[package]] +name = "brotli" +version = "1.2.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f7/16/c92ca344d646e71a43b8bb353f0a6490d7f6e06210f8554c8f874e454285/brotli-1.2.0.tar.gz", hash = "sha256:e310f77e41941c13340a95976fe66a8a95b01e783d430eeaf7a2f87e0a57dd0a", size = 7388632, upload-time = "2025-11-05T18:39:42.86Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/64/10/a090475284fc4a71aed40a96f32e44a7fe5bda39687353dd977720b211b6/brotli-1.2.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:3b90b767916ac44e93a8e28ce6adf8d551e43affb512f2377c732d486ac6514e", size = 863089, upload-time = "2025-11-05T18:38:01.181Z" }, + { url = "https://files.pythonhosted.org/packages/03/41/17416630e46c07ac21e378c3464815dd2e120b441e641bc516ac32cc51d2/brotli-1.2.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:6be67c19e0b0c56365c6a76e393b932fb0e78b3b56b711d180dd7013cb1fd984", size = 445442, upload-time = "2025-11-05T18:38:02.434Z" }, + { url = "https://files.pythonhosted.org/packages/7a/ef/f285668811a9e1ddb47a18cb0b437d5fc2760d537a2fe8a57875ad6f8448/brotli-1.2.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:15b33fe93cedc4caaff8a0bd1eb7e3dab1c61bb22a0bf5bdfdfd97cd7da79744", size = 863110, upload-time = "2025-11-05T18:38:12.978Z" }, + { url = "https://files.pythonhosted.org/packages/50/62/a3b77593587010c789a9d6eaa527c79e0848b7b860402cc64bc0bc28a86c/brotli-1.2.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:898be2be399c221d2671d29eed26b6b2713a02c2119168ed914e7d00ceadb56f", size = 445438, upload-time = "2025-11-05T18:38:14.208Z" }, + { url = "https://files.pythonhosted.org/packages/11/ee/b0a11ab2315c69bb9b45a2aaed022499c9c24a205c3a49c3513b541a7967/brotli-1.2.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:35d382625778834a7f3061b15423919aa03e4f5da34ac8e02c074e4b75ab4f84", size = 861543, upload-time = "2025-11-05T18:38:24.183Z" }, + { url = "https://files.pythonhosted.org/packages/e1/2f/29c1459513cd35828e25531ebfcbf3e92a5e49f560b1777a9af7203eb46e/brotli-1.2.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:7a61c06b334bd99bc5ae84f1eeb36bfe01400264b3c352f968c6e30a10f9d08b", size = 444288, upload-time = "2025-11-05T18:38:25.139Z" }, +] + +[[package]] +name = "certifi" +version = "2026.6.17" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/c9/c7/424b75da314c1045981bd9777432fad05a9e0c69daa4ed7e308bbaffe405/certifi-2026.6.17.tar.gz", hash = "sha256:024c88eeec92ca068db80f02b8b07c9cef7b9fe261d1d535abfd5abd6f6af432", size = 134594, upload-time = "2026-06-17T10:31:07.894Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ef/2f/c5464532e965badff2f4c4c1a3a83f5697f0d7c407ed0cda44aaa99bb451/certifi-2026.6.17-py3-none-any.whl", hash = "sha256:2227dcbaafe0d2f59279d1762ddddc37783ed4354594f194ffc31d20f41fc3db", size = 133289, upload-time = "2026-06-17T10:31:06.348Z" }, +] + +[[package]] +name = "cffi" +version = "2.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pycparser", marker = "implementation_name != 'PyPy' and sys_platform == 'darwin'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/eb/56/b1ba7935a17738ae8453301356628e8147c79dbb825bcbc73dc7401f9846/cffi-2.0.0.tar.gz", hash = "sha256:44d1b5909021139fe36001ae048dbdde8214afa20200eda0f64c068cac5d5529", size = 523588, upload-time = "2025-09-08T23:24:04.541Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/93/d7/516d984057745a6cd96575eea814fe1edd6646ee6efd552fb7b0921dec83/cffi-2.0.0-cp310-cp310-macosx_10_13_x86_64.whl", hash = "sha256:0cf2d91ecc3fcc0625c2c530fe004f82c110405f101548512cce44322fa8ac44", size = 184283, upload-time = "2025-09-08T23:22:08.01Z" }, + { url = "https://files.pythonhosted.org/packages/9e/84/ad6a0b408daa859246f57c03efd28e5dd1b33c21737c2db84cae8c237aa5/cffi-2.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f73b96c41e3b2adedc34a7356e64c8eb96e03a3782b535e043a986276ce12a49", size = 180504, upload-time = "2025-09-08T23:22:10.637Z" }, + { url = "https://files.pythonhosted.org/packages/12/4a/3dfd5f7850cbf0d06dc84ba9aa00db766b52ca38d8b86e3a38314d52498c/cffi-2.0.0-cp311-cp311-macosx_10_13_x86_64.whl", hash = "sha256:b4c854ef3adc177950a8dfc81a86f5115d2abd545751a304c5bcf2c2c7283cfe", size = 184344, upload-time = "2025-09-08T23:22:26.456Z" }, + { url = "https://files.pythonhosted.org/packages/4f/8b/f0e4c441227ba756aafbe78f117485b25bb26b1c059d01f137fa6d14896b/cffi-2.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2de9a304e27f7596cd03d16f1b7c72219bd944e99cc52b84d0145aefb07cbd3c", size = 180560, upload-time = "2025-09-08T23:22:28.197Z" }, + { url = "https://files.pythonhosted.org/packages/ea/47/4f61023ea636104d4f16ab488e268b93008c3d0bb76893b1b31db1f96802/cffi-2.0.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:6d02d6655b0e54f54c4ef0b94eb6be0607b70853c45ce98bd278dc7de718be5d", size = 185271, upload-time = "2025-09-08T23:22:44.795Z" }, + { url = "https://files.pythonhosted.org/packages/df/a2/781b623f57358e360d62cdd7a8c681f074a71d445418a776eef0aadb4ab4/cffi-2.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8eca2a813c1cb7ad4fb74d368c2ffbbb4789d377ee5bb8df98373c2cc0dee76c", size = 181048, upload-time = "2025-09-08T23:22:45.938Z" }, +] + +[[package]] +name = "cfgv" +version = "3.5.0" +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" }, +] + +[[package]] +name = "charset-normalizer" +version = "3.4.7" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e7/a1/67fe25fac3c7642725500a3f6cfe5821ad557c3abb11c9d20d12c7008d3e/charset_normalizer-3.4.7.tar.gz", hash = "sha256:ae89db9e5f98a11a4bf50407d4363e7b09b31e55bc117b4f7d80aab97ba009e5", size = 144271, upload-time = "2026-04-02T09:28:39.342Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/26/08/0f303cb0b529e456bb116f2d50565a482694fbb94340bf56d44677e7ed03/charset_normalizer-3.4.7-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:cdd68a1fb318e290a2077696b7eb7a21a49163c455979c639bf5a5dcdc46617d", size = 315182, upload-time = "2026-04-02T09:25:40.673Z" }, + { url = "https://files.pythonhosted.org/packages/c2/d7/b5b7020a0565c2e9fa8c09f4b5fa6232feb326b8c20081ccded47ea368fd/charset_normalizer-3.4.7-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:7641bb8895e77f921102f72833904dcd9901df5d6d72a2ab8f31d04b7e51e4e7", size = 309705, upload-time = "2026-04-02T09:26:02.191Z" }, + { url = "https://files.pythonhosted.org/packages/0c/eb/4fc8d0a7110eb5fc9cc161723a34a8a6c200ce3b4fbf681bc86feee22308/charset_normalizer-3.4.7-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:eca9705049ad3c7345d574e3510665cb2cf844c2f2dcfe675332677f081cbd46", size = 311328, upload-time = "2026-04-02T09:26:24.331Z" }, + { url = "https://files.pythonhosted.org/packages/db/8f/61959034484a4a7c527811f4721e75d02d653a35afb0b6054474d8185d4c/charset_normalizer-3.4.7-py3-none-any.whl", hash = "sha256:3dce51d0f5e7951f8bb4900c257dad282f49190fdbebecd4ba99bcc41fef404d", size = 61958, upload-time = "2026-04-02T09:28:37.794Z" }, +] + +[[package]] +name = "click" +version = "8.1.8" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b9/2e/0090cbf739cee7d23781ad4b89a9894a41538e4fcf4c31dcdd705b78eb8b/click-8.1.8.tar.gz", hash = "sha256:ed53c9d8990d83c2a27deae68e4ee337473f6330c040a31d4225c9574d16096a", size = 226593, upload-time = "2024-12-21T18:38:44.339Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7e/d4/7ebdbd03970677812aac39c869717059dbb71a4cfc033ca6e5221787892c/click-8.1.8-py3-none-any.whl", hash = "sha256:63c132bbbed01578a06712a2d1f497bb62d9c1c0d329b7903a866228027263b2", size = 98188, upload-time = "2024-12-21T18:38:41.666Z" }, +] + +[[package]] +name = "click-option-group" +version = "0.5.9" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "click", marker = "sys_platform == 'darwin'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ef/ff/d291d66595b30b83d1cb9e314b2c9be7cfc7327d4a0d40a15da2416ea97b/click_option_group-0.5.9.tar.gz", hash = "sha256:f94ed2bc4cf69052e0f29592bd1e771a1789bd7bfc482dd0bc482134aff95823", size = 22222, upload-time = "2025-10-09T09:38:01.474Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/75/45/54bb2d8d4138964a94bef6e9afe48b0be4705ba66ac442ae7d8a8dc4ffef/click_option_group-0.5.9-py3-none-any.whl", hash = "sha256:ad2599248bd373e2e19bec5407967c3eec1d0d4fc4a5e77b08a0481e75991080", size = 11553, upload-time = "2025-10-09T09:38:00.066Z" }, +] + +[[package]] +name = "contourpy" +version = "1.3.2" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.11' and sys_platform == 'darwin'", +] +dependencies = [ + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/66/54/eb9bfc647b19f2009dd5c7f5ec51c4e6ca831725f1aea7a993034f483147/contourpy-1.3.2.tar.gz", hash = "sha256:b6945942715a034c671b7fc54f9588126b0b8bf23db2696e3ca8328f3ff0ab54", size = 13466130, upload-time = "2025-04-15T17:47:53.79Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/12/a3/da4153ec8fe25d263aa48c1a4cbde7f49b59af86f0b6f7862788c60da737/contourpy-1.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ba38e3f9f330af820c4b27ceb4b9c7feee5fe0493ea53a8720f4792667465934", size = 268551, upload-time = "2025-04-15T17:34:46.581Z" }, + { url = "https://files.pythonhosted.org/packages/2f/6c/330de89ae1087eb622bfca0177d32a7ece50c3ef07b28002de4757d9d875/contourpy-1.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:dc41ba0714aa2968d1f8674ec97504a8f7e334f48eeacebcaa6256213acb0989", size = 253399, upload-time = "2025-04-15T17:34:51.427Z" }, + { url = "https://files.pythonhosted.org/packages/b3/b9/ede788a0b56fc5b071639d06c33cb893f68b1178938f3425debebe2dab78/contourpy-1.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6a37a2fb93d4df3fc4c0e363ea4d16f83195fc09c891bc8ce072b9d084853445", size = 269636, upload-time = "2025-04-15T17:35:54.473Z" }, + { url = "https://files.pythonhosted.org/packages/e6/75/3469f011d64b8bbfa04f709bfc23e1dd71be54d05b1b083be9f5b22750d1/contourpy-1.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b7cd50c38f500bbcc9b6a46643a40e0913673f869315d8e70de0438817cb7773", size = 254636, upload-time = "2025-04-15T17:35:58.283Z" }, + { url = "https://files.pythonhosted.org/packages/34/f7/44785876384eff370c251d58fd65f6ad7f39adce4a093c934d4a67a7c6b6/contourpy-1.3.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4caf2bcd2969402bf77edc4cb6034c7dd7c0803213b3523f111eb7460a51b8d2", size = 271580, upload-time = "2025-04-15T17:37:03.105Z" }, + { url = "https://files.pythonhosted.org/packages/93/3b/0004767622a9826ea3d95f0e9d98cd8729015768075d61f9fea8eeca42a8/contourpy-1.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:82199cb78276249796419fe36b7386bd8d2cc3f28b3bc19fe2454fe2e26c4c15", size = 255530, upload-time = "2025-04-15T17:37:07.026Z" }, + { url = "https://files.pythonhosted.org/packages/33/05/b26e3c6ecc05f349ee0013f0bb850a761016d89cec528a98193a48c34033/contourpy-1.3.2-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:fd93cc7f3139b6dd7aab2f26a90dde0aa9fc264dbf70f6740d498a70b860b82c", size = 265681, upload-time = "2025-04-15T17:44:59.314Z" }, + { url = "https://files.pythonhosted.org/packages/ff/c0/91f1215d0d9f9f343e4773ba6c9b89e8c0cc7a64a6263f21139da639d848/contourpy-1.3.2-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:5f5964cdad279256c084b69c3f412b7801e15356b16efa9d78aa974041903da0", size = 266807, upload-time = "2025-04-15T17:45:15.535Z" }, +] + +[[package]] +name = "contourpy" +version = "1.3.3" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.12' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and sys_platform == 'darwin'", +] +dependencies = [ + { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' and sys_platform == 'darwin'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/58/01/1253e6698a07380cd31a736d248a3f2a50a7c88779a1813da27503cadc2a/contourpy-1.3.3.tar.gz", hash = "sha256:083e12155b210502d0bca491432bb04d56dc3432f95a979b429f2848c3dbe880", size = 13466174, upload-time = "2025-07-26T12:03:12.549Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/91/2e/c4390a31919d8a78b90e8ecf87cd4b4c4f05a5b48d05ec17db8e5404c6f4/contourpy-1.3.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:709a48ef9a690e1343202916450bc48b9e51c049b089c7f79a267b46cffcdaa1", size = 288773, upload-time = "2025-07-26T12:01:02.277Z" }, + { url = "https://files.pythonhosted.org/packages/0d/44/c4b0b6095fef4dc9c420e041799591e3b63e9619e3044f7f4f6c21c0ab24/contourpy-1.3.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:23416f38bfd74d5d28ab8429cc4d63fa67d5068bd711a85edb1c3fb0c3e2f381", size = 270149, upload-time = "2025-07-26T12:01:04.072Z" }, + { url = "https://files.pythonhosted.org/packages/be/45/adfee365d9ea3d853550b2e735f9d66366701c65db7855cd07621732ccfc/contourpy-1.3.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:b08a32ea2f8e42cf1d4be3169a98dd4be32bafe4f22b6c4cb4ba810fa9e5d2cb", size = 293419, upload-time = "2025-07-26T12:01:21.16Z" }, + { url = "https://files.pythonhosted.org/packages/53/3e/405b59cfa13021a56bba395a6b3aca8cec012b45bf177b0eaf7a202cde2c/contourpy-1.3.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:556dba8fb6f5d8742f2923fe9457dbdd51e1049c4a43fd3986a0b14a1d815fc6", size = 273979, upload-time = "2025-07-26T12:01:22.448Z" }, + { url = "https://files.pythonhosted.org/packages/a5/29/8dcfe16f0107943fa92388c23f6e05cff0ba58058c4c95b00280d4c75a14/contourpy-1.3.3-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:cd5dfcaeb10f7b7f9dc8941717c6c2ade08f587be2226222c12b25f0483ed497", size = 278809, upload-time = "2025-07-26T12:02:52.74Z" }, + { url = "https://files.pythonhosted.org/packages/85/a9/8b37ef4f7dafeb335daee3c8254645ef5725be4d9c6aa70b50ec46ef2f7e/contourpy-1.3.3-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:0c1fc238306b35f246d61a1d416a627348b5cf0648648a031e14bb8705fcdfe8", size = 261593, upload-time = "2025-07-26T12:02:54.037Z" }, +] + +[[package]] +name = "cryptography" +version = "49.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cffi", marker = "platform_python_implementation != 'PyPy' and sys_platform == 'darwin'" }, + { name = "typing-extensions", marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/1f/99/d1c90d6041656cc6ee229dc99cd67fd0cd5aec3c5f7d72fffc27cc750054/cryptography-49.0.0.tar.gz", hash = "sha256:f89660a348f4f78a92366240a61404e337586ef7f5909a2fef59ca88ef505493", size = 854345, upload-time = "2026-06-12T20:02:30.512Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9b/22/adf66990e63584a68dfb50c24f48a125c07b1699899381c8151e63ed458c/cryptography-49.0.0-cp311-abi3-macosx_11_0_arm64.whl", hash = "sha256:966fe0e9c67490071f14c0d2b1cb2dfb3023c5ce39457343931415f08382f2db", size = 4032100, upload-time = "2026-06-12T20:02:32.143Z" }, + { url = "https://files.pythonhosted.org/packages/19/2a/5bb823f5bedcf80718cea7fbc95ec5515cca3769633c4b01a32be7f30e7c/cryptography-49.0.0-cp39-abi3-macosx_11_0_arm64.whl", hash = "sha256:ec5e529fb80935c94fe7b729f9972b50e351a0e6b50aa294fd5cabb109fcc29a", size = 4025947, upload-time = "2026-06-12T20:01:25.745Z" }, + { url = "https://files.pythonhosted.org/packages/63/d3/4a83af35d65e3fad632c926fad684c193ea4398569ccb0bbbc7fe8f5dc9a/cryptography-49.0.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:fc1e275c2f1d97b1a6450b8b0ea3ebfa6e087a611c2b26cb2404d48588abab7b", size = 3993685, upload-time = "2026-06-12T20:02:14.883Z" }, +] + +[[package]] +name = "cycler" +version = "0.12.1" +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" }, +] + +[[package]] +name = "decorator" +version = "5.3.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/60/8b/32f9823da46cde7df2087faa08cd98d01b908f8dcab982cdba9c84e85355/decorator-5.3.1.tar.gz", hash = "sha256:4cbcdd55a6efadb9dbea26b858f4fb3264567b52d69ca0d25b721b553f60ea82", size = 58084, upload-time = "2026-05-18T06:03:28.057Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/05/7f/798705f5296a58ca505d600456748d1be48078eac8a7050d8a98bc9edb89/decorator-5.3.1-py3-none-any.whl", hash = "sha256:f47fe6fdbd2edd623ecfe36875d37aba411624e2670dd395dddae1358689bb3c", size = 10365, upload-time = "2026-05-18T06:03:26.517Z" }, +] + +[[package]] +name = "defusedxml" +version = "0.7.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/0f/d5/c66da9b79e5bdb124974bfe172b4daf3c984ebd9c2a06e2b8a4dc7331c72/defusedxml-0.7.1.tar.gz", hash = "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69", size = 75520, upload-time = "2021-03-08T10:59:26.269Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/07/6c/aa3f2f849e01cb6a001cd8554a88d4c77c5c1a31c95bdf1cf9301e6d9ef4/defusedxml-0.7.1-py2.py3-none-any.whl", hash = "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61", size = 25604, upload-time = "2021-03-08T10:59:24.45Z" }, +] + +[[package]] +name = "deprecated" +version = "1.3.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "wrapt", marker = "sys_platform == 'darwin'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/49/85/12f0a49a7c4ffb70572b6c2ef13c90c88fd190debda93b23f026b25f9634/deprecated-1.3.1.tar.gz", hash = "sha256:b1b50e0ff0c1fddaa5708a2c6b0a6588bb09b892825ab2b214ac9ea9d92a5223", size = 2932523, upload-time = "2025-10-30T08:19:02.757Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/84/d0/205d54408c08b13550c733c4b85429e7ead111c7f0014309637425520a9a/deprecated-1.3.1-py2.py3-none-any.whl", hash = "sha256:597bfef186b6f60181535a29fbe44865ce137a5079f295b479886c82729d5f3f", size = 11298, upload-time = "2025-10-30T08:19:00.758Z" }, +] + +[[package]] +name = "distlib" +version = "0.4.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/c9/02/bd72be9134d25ed783ecbbc38a539ffaefbf90c78418c7fb7229600dbac7/distlib-0.4.3.tar.gz", hash = "sha256:f152097224a0ae24be5a0f6bae1b9359af82133bce63f98a95f86cae1aede9ed", size = 615141, upload-time = "2026-06-12T08:04:52.847Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/02/08/9c41fb51ab5b43eb21674aff13df270e8ba6c4b29c8624e328dc7a9482af/distlib-0.4.3-py2.py3-none-any.whl", hash = "sha256:4b0ce306c966eb73bc3a7b6abad017c556dadd92c44701562cd528ac7fde4d5b", size = 470628, upload-time = "2026-06-12T08:04:50.506Z" }, +] + +[[package]] +name = "distro" +version = "1.9.0" +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" }, +] + +[[package]] +name = "dnspython" +version = "2.8.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/8c/8b/57666417c0f90f08bcafa776861060426765fdb422eb10212086fb811d26/dnspython-2.8.0.tar.gz", hash = "sha256:181d3c6996452cb1189c4046c61599b84a5a86e099562ffde77d26984ff26d0f", size = 368251, upload-time = "2025-09-07T18:58:00.022Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ba/5a/18ad964b0086c6e62e2e7500f7edc89e3faa45033c71c1893d34eed2b2de/dnspython-2.8.0-py3-none-any.whl", hash = "sha256:01d9bbc4a2d76bf0db7c1f729812ded6d912bd318d3b1cf81d30c0f845dbf3af", size = 331094, upload-time = "2025-09-07T18:57:58.071Z" }, +] + +[[package]] +name = "docopt" +version = "0.6.2" +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 = "dotty-dict" +version = "1.3.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/6a/ab/88d67f02024700b48cd8232579ad1316aa9df2272c63049c27cc094229d6/dotty_dict-1.3.1.tar.gz", hash = "sha256:4b016e03b8ae265539757a53eba24b9bfda506fb94fbce0bee843c6f05541a15", size = 7699, upload-time = "2022-07-09T18:50:57.727Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1a/91/e0d457ee03ec33d79ee2cd8d212debb1bc21dfb99728ae35efdb5832dc22/dotty_dict-1.3.1-py3-none-any.whl", hash = "sha256:5022d234d9922f13aa711b4950372a06a6d64cb6d6db9ba43d0ba133ebfce31f", size = 7014, upload-time = "2022-07-09T18:50:55.058Z" }, +] + +[[package]] +name = "eclipse-zenoh" +version = "1.7.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/75/09/9534eea23b59cee13b5430c7874f71c5e800d412ac04572517733812b8f3/eclipse_zenoh-1.7.2.tar.gz", hash = "sha256:cfcbc3fc9eb001be2b7adc303f34ae22570ff2e0f942d51973bfd30f4ac37d6a", size = 160083, upload-time = "2026-01-08T17:42:38.711Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/76/91/484df5bdfd42102f9b5d99654c67f318d4967f3828dfd297d88c1262e143/eclipse_zenoh-1.7.2-cp39-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:d068c7ce2cb4f5ffe965f2d103f7173de732733a5102b6968313cedea1704694", size = 17458869, upload-time = "2026-01-08T17:42:10.264Z" }, + { url = "https://files.pythonhosted.org/packages/06/8a/6bb29455e16f119ec9db996d50f5ce40fdd7e1369fcfb6665144b50a0b7b/eclipse_zenoh-1.7.2-cp39-abi3-macosx_10_12_x86_64.whl", hash = "sha256:7d0429933d9abeb70939a2cb02e32b8c8929651fd1762f1308b5fbd4ae41c3d9", size = 8871746, upload-time = "2026-01-08T17:42:12.587Z" }, +] + +[[package]] +name = "exceptiongroup" +version = "1.3.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions", marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/50/79/66800aadf48771f6b62f7eb014e352e5d06856655206165d775e675a02c9/exceptiongroup-1.3.1.tar.gz", hash = "sha256:8b412432c6055b0b7d14c310000ae93352ed6754f70fa8f7c34141f91c4e3219", size = 30371, upload-time = "2025-11-21T23:01:54.787Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8a/0e/97c33bf5009bdbac74fd2beace167cab3f978feb69cc36f1ef79360d6c4e/exceptiongroup-1.3.1-py3-none-any.whl", hash = "sha256:a7a39a3bd276781e98394987d3a5701d0c4edffb633bb7a5144577f82c773598", size = 16740, upload-time = "2025-11-21T23:01:53.443Z" }, +] + +[[package]] +name = "fastapi" +version = "0.138.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "annotated-doc", marker = "sys_platform == 'darwin'" }, + { name = "pydantic", marker = "sys_platform == 'darwin'" }, + { name = "starlette", marker = "sys_platform == 'darwin'" }, + { name = "typing-extensions", marker = "sys_platform == 'darwin'" }, + { name = "typing-inspection", marker = "sys_platform == 'darwin'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/5b/58/ff455d9fe47c60abadb34b9e05a304b1f05f5ab8000ac01565156b6f5e43/fastapi-0.138.0.tar.gz", hash = "sha256:d445a4877636ad191e7053e08c9bf98cb921a6756776848400bb773d1740c061", size = 419240, upload-time = "2026-06-20T01:18:05.259Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6c/ff/8496d9847a5fedae775eb49460722d3efaa80487854273e9647ae876218c/fastapi-0.138.0-py3-none-any.whl", hash = "sha256:b6f54fd1bd72c80b0f899f172c61a600f6f7af9b43d4d772a018f35624048cb0", size = 126779, upload-time = "2026-06-20T01:18:03.483Z" }, +] + +[[package]] +name = "fastrtc" +version = "0.0.34" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "aioice", marker = "sys_platform == 'darwin'" }, + { name = "aiortc", marker = "sys_platform == 'darwin'" }, + { name = "gradio", marker = "sys_platform == 'darwin'" }, + { name = "librosa", marker = "sys_platform == 'darwin'" }, + { name = "numba", marker = "sys_platform == 'darwin'" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, + { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' and sys_platform == 'darwin'" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/af/e1/ea3968b064a183d9ac595dcbde0e6c67033afe01852d5854a0001f7c9faa/fastrtc-0.0.34-py3-none-any.whl", hash = "sha256:6da3831da9c2257810b6c5e5fd7cdd4f1636d716f47ab49d8bb3f2d5d9e499ac", size = 2806078, upload-time = "2025-11-24T17:14:12.68Z" }, +] + +[[package]] +name = "ffmpy" +version = "1.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/7d/d2/1c4c582d71bcc65c76fa69fab85de6257d50fdf6fd4a2317c53917e9a581/ffmpy-1.0.0.tar.gz", hash = "sha256:b12932e95435c8820f1cd041024402765f821971e4bae753b327fc02a6e12f8b", size = 5101, upload-time = "2025-11-11T06:24:23.856Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/55/56/dd3669eccebb6d8ac81e624542ebd53fe6f08e1b8f2f8d50aeb7e3b83f99/ffmpy-1.0.0-py3-none-any.whl", hash = "sha256:5640e5f0fd03fb6236d0e119b16ccf6522db1c826fdf35dcb87087b60fd7504f", size = 5614, upload-time = "2025-11-11T06:24:22.818Z" }, +] + +[[package]] +name = "filelock" +version = "3.29.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e6/dc/be6cbe99670cd6e4ad387123647cb08e0c32975e223f82551e914c5568a6/filelock-3.29.4.tar.gz", hash = "sha256:10cdb3656fc44541cdf30652a93fb10ec6b05325620eb316bd26893e4201538a", size = 63028, upload-time = "2026-06-13T16:12:00.744Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/13/37/a065dc3bd6e49423a6532c642ca7378d3f467b1ef44c2800c937af7f9739/filelock-3.29.4-py3-none-any.whl", hash = "sha256:dac1648087d5115554850d113e7dd8c83ab2d38e3435dde2d4f163847e57b767", size = 42757, upload-time = "2026-06-13T16:11:59.582Z" }, +] + +[[package]] +name = "flatbuffers" +version = "25.12.19" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e8/2d/d2a548598be01649e2d46231d151a6c56d10b964d94043a335ae56ea2d92/flatbuffers-25.12.19-py2.py3-none-any.whl", hash = "sha256:7634f50c427838bb021c2d66a3d1168e9d199b0607e6329399f04846d42e20b4", size = 26661, upload-time = "2025-12-19T23:16:13.622Z" }, +] + +[[package]] +name = "fonttools" +version = "4.63.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/84/69/c97f2c18e0db87d2c7b15da1974dace76ae938f1cfa22e2727a648b7ed43/fonttools-4.63.0.tar.gz", hash = "sha256:caeb583deeb5168e694b65cda8b4ee62abedfa66cf88488734466f2366b9c4e0", size = 3597189, upload-time = "2026-05-14T12:04:30.958Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f2/c9/4141c90a90db20f807c7e10bfd689fe53eb8f7f4caff58ee4d4dfe46919f/fonttools-4.63.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:e3297a6a4059b4acc3a1e9a8b04741f240a80044eef08ebd32e8b5bcdddce75b", size = 2884632, upload-time = "2026-05-14T12:02:38.56Z" }, + { url = "https://files.pythonhosted.org/packages/b8/46/ad12b5c10eae602d7ef814b02afa08aacbf89da917fed5b071282b7eadc2/fonttools-4.63.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b1cd75a03ad8cb5bc40c90bfde68c0c47de423aa19e5c0f362b43520645eea94", size = 2429441, upload-time = "2026-05-14T12:02:41.162Z" }, + { url = "https://files.pythonhosted.org/packages/75/2b/a7f1545bdf5da69c4bda0cea2a5781f0ad2a6623e0277267672db43c5fe6/fonttools-4.63.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:2b8ae05d9eacf6081414d759c0a352769ac28ce31280d6bb8e77b03f9e3c449f", size = 2881793, upload-time = "2026-05-14T12:02:56.645Z" }, + { url = "https://files.pythonhosted.org/packages/49/50/965308c703f085f225db2886813b27e015b8b3438c350b22dd65b52c2a2c/fonttools-4.63.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:79cdc9f567aec74a72918fd060283911406750cbc9fd28c1316023deb6ce31a9", size = 2428130, upload-time = "2026-05-14T12:02:58.891Z" }, + { url = "https://files.pythonhosted.org/packages/08/ef/b3c6b9b5be2f82416d73fe2ed2e96e2793cd80e7510bd6a17ca79cdd88ec/fonttools-4.63.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:37dd23e621e3b0aef1baa70a303b80aaf38449632cfc8fd2a55fb285bbccfc02", size = 2881131, upload-time = "2026-05-14T12:03:13.386Z" }, + { url = "https://files.pythonhosted.org/packages/44/a0/c815bea63117fa63e4e1c01f8a1110d2112fa003f838e6467094ec2432ce/fonttools-4.63.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:a9faff9e0c1f76f9fd55899d2ce785832efebab37eb8ae13995853aef178bef0", size = 2426704, upload-time = "2026-05-14T12:03:15.801Z" }, + { url = "https://files.pythonhosted.org/packages/2c/47/c99d5268f354002ce80f8d029cd9d7d872969da1de8b93d32de4dc56d6f4/fonttools-4.63.0-py3-none-any.whl", hash = "sha256:445af2eab030a16b9171ea8bdda7ebf7d96bda2df88ee182a464252f6e05e20d", size = 1164562, upload-time = "2026-05-14T12:04:29.092Z" }, +] + +[[package]] +name = "frozenlist" +version = "1.8.0" +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/83/4a/557715d5047da48d54e659203b9335be7bfaafda2c3f627b7c47e0b3aaf3/frozenlist-1.8.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:b37f6d31b3dcea7deb5e9696e529a6aa4a898adc33db82da12e4c60a7c4d2011", size = 86230, upload-time = "2025-10-06T05:35:23.699Z" }, + { url = "https://files.pythonhosted.org/packages/a2/fb/c85f9fed3ea8fe8740e5b46a59cc141c23b842eca617da8876cfce5f760e/frozenlist-1.8.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ef2b7b394f208233e471abc541cc6991f907ffd47dc72584acee3147899d6565", size = 49621, upload-time = "2025-10-06T05:35:25.341Z" }, + { url = "https://files.pythonhosted.org/packages/63/70/26ca3f06aace16f2352796b08704338d74b6d1a24ca38f2771afbb7ed915/frozenlist-1.8.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a88f062f072d1589b7b46e951698950e7da00442fc1cacbe17e19e025dc327ad", size = 49889, upload-time = "2025-10-06T05:35:26.797Z" }, + { url = "https://files.pythonhosted.org/packages/bc/03/077f869d540370db12165c0aa51640a873fb661d8b315d1d4d67b284d7ac/frozenlist-1.8.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:09474e9831bc2b2199fad6da3c14c7b0fbdd377cce9d3d77131be28906cb7d84", size = 86912, upload-time = "2025-10-06T05:35:45.98Z" }, + { url = "https://files.pythonhosted.org/packages/df/b5/7610b6bd13e4ae77b96ba85abea1c8cb249683217ef09ac9e0ae93f25a91/frozenlist-1.8.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:17c883ab0ab67200b5f964d2b9ed6b00971917d5d8a92df149dc2c9779208ee9", size = 50046, upload-time = "2025-10-06T05:35:47.009Z" }, + { url = "https://files.pythonhosted.org/packages/6e/ef/0e8f1fe32f8a53dd26bdd1f9347efe0778b0fddf62789ea683f4cc7d787d/frozenlist-1.8.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:fa47e444b8ba08fffd1c18e8cdb9a75db1b6a27f17507522834ad13ed5922b93", size = 50119, upload-time = "2025-10-06T05:35:48.38Z" }, + { 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" }, + { url = "https://files.pythonhosted.org/packages/64/80/4f6e318ee2a7c0750ed724fa33a4bdf1eacdc5a39a7a24e818a773cd91af/frozenlist-1.8.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:229bf37d2e4acdaf808fd3f06e854a4a7a3661e871b10dc1f8f1896a3b05f18b", size = 50594, upload-time = "2025-10-06T05:36:07.69Z" }, + { url = "https://files.pythonhosted.org/packages/2b/94/5c8a2b50a496b11dd519f4a24cb5496cf125681dd99e94c604ccdea9419a/frozenlist-1.8.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f833670942247a14eafbb675458b4e61c82e002a148f49e68257b79296e865c4", size = 50448, upload-time = "2025-10-06T05:36:08.78Z" }, + { url = "https://files.pythonhosted.org/packages/9a/9a/e35b4a917281c0b8419d4207f4334c8e8c5dbf4f3f5f9ada73958d937dcc/frozenlist-1.8.0-py3-none-any.whl", hash = "sha256:0c18a16eab41e82c295618a77502e17b195883241c563b00f0aa5106fc4eaa0d", size = 13409, upload-time = "2025-10-06T05:38:16.721Z" }, +] + +[[package]] +name = "fsspec" +version = "2026.6.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/10/a1/ae4e3e5003468d6391d2c77b6fa1cd73bd5d13511d81c642d7b28ac90ed4/fsspec-2026.6.0.tar.gz", hash = "sha256:f5bac145310fe30e16e1471bd6840b2d990d609e872251d7e674241822abf01a", size = 313646, upload-time = "2026-06-16T01:57:28.105Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e5/22/4222d7ddf3da30f363edaa98e329c2bce6c65497c9cb2810931c8b2c0fbc/fsspec-2026.6.0-py3-none-any.whl", hash = "sha256:02e0b71817df9b2169dc30a16832045764def1191b43dcff5bb85bdee212d2a1", size = 203949, upload-time = "2026-06-16T01:57:26.358Z" }, +] + +[[package]] +name = "gitdb" +version = "4.0.12" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "smmap", marker = "sys_platform == 'darwin'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/72/94/63b0fc47eb32792c7ba1fe1b694daec9a63620db1e313033d18140c2320a/gitdb-4.0.12.tar.gz", hash = "sha256:5ef71f855d191a3326fcfbc0d5da835f26b13fbcba60c32c21091c349ffdb571", size = 394684, upload-time = "2025-01-02T07:20:46.413Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a0/61/5c78b91c3143ed5c14207f463aecfc8f9dbb5092fb2869baf37c273b2705/gitdb-4.0.12-py3-none-any.whl", hash = "sha256:67073e15955400952c6565cc3e707c554a4eea2e428946f7a4c162fab9bd9bcf", size = 62794, upload-time = "2025-01-02T07:20:43.624Z" }, +] + +[[package]] +name = "gitpython" +version = "3.1.50" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "gitdb", marker = "sys_platform == 'darwin'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/33/f6/354ae6491228b5eb40e10d89c4d13c651fe1cf7556e35ebdded50cff57ce/gitpython-3.1.50.tar.gz", hash = "sha256:80da2d12504d52e1f998772dc5baf6e553f8d2fcfe1fcc226c9d9a2ee3372dcc", size = 219798, upload-time = "2026-05-06T04:01:26.571Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/20/7a/1c6e3562dfd8950adbb11ffbc65d21e7c89d01a6e4f137fa981056de25c5/gitpython-3.1.50-py3-none-any.whl", hash = "sha256:d352abe2908d07355014abdd21ddf798c2a961469239afec4962e9da884858f9", size = 212507, upload-time = "2026-05-06T04:01:23.799Z" }, +] + +[[package]] +name = "google-crc32c" +version = "1.8.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/03/41/4b9c02f99e4c5fb477122cd5437403b552873f014616ac1d19ac8221a58d/google_crc32c-1.8.0.tar.gz", hash = "sha256:a428e25fb7691024de47fecfbff7ff957214da51eddded0da0ae0e0f03a2cf79", size = 14192, upload-time = "2025-12-16T00:35:25.142Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/95/ac/6f7bc93886a823ab545948c2dd48143027b2355ad1944c7cf852b338dc91/google_crc32c-1.8.0-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:0470b8c3d73b5f4e3300165498e4cf25221c7eb37f1159e221d1825b6df8a7ff", size = 31296, upload-time = "2025-12-16T00:19:07.261Z" }, + { url = "https://files.pythonhosted.org/packages/f7/97/a5accde175dee985311d949cfcb1249dcbb290f5ec83c994ea733311948f/google_crc32c-1.8.0-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:119fcd90c57c89f30040b47c211acee231b25a45d225e3225294386f5d258288", size = 30870, upload-time = "2025-12-16T00:29:17.669Z" }, + { url = "https://files.pythonhosted.org/packages/5d/ef/21ccfaab3d5078d41efe8612e0ed0bfc9ce22475de074162a91a25f7980d/google_crc32c-1.8.0-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:014a7e68d623e9a4222d663931febc3033c5c7c9730785727de2a81f87d5bab8", size = 31298, upload-time = "2025-12-16T00:20:32.241Z" }, + { url = "https://files.pythonhosted.org/packages/c5/b8/f8413d3f4b676136e965e764ceedec904fe38ae8de0cdc52a12d8eb1096e/google_crc32c-1.8.0-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:86cfc00fe45a0ac7359e5214a1704e51a99e757d0272554874f419f79838c5f7", size = 30872, upload-time = "2025-12-16T00:33:58.785Z" }, + { url = "https://files.pythonhosted.org/packages/e9/5f/7307325b1198b59324c0fa9807cafb551afb65e831699f2ce211ad5c8240/google_crc32c-1.8.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:4b8286b659c1335172e39563ab0a768b8015e88e08329fa5321f774275fc3113", size = 31300, upload-time = "2025-12-16T00:21:56.723Z" }, + { url = "https://files.pythonhosted.org/packages/21/8e/58c0d5d86e2220e6a37befe7e6a94dd2f6006044b1a33edf1ff6d9f7e319/google_crc32c-1.8.0-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:2a3dc3318507de089c5384cc74d54318401410f82aa65b2d9cdde9d297aca7cb", size = 30867, upload-time = "2025-12-16T00:38:31.302Z" }, +] + +[[package]] +name = "gradio" +version = "5.50.1.dev1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "aiofiles", marker = "sys_platform == 'darwin'" }, + { name = "anyio", marker = "sys_platform == 'darwin'" }, + { name = "brotli", marker = "sys_platform == 'darwin'" }, + { name = "fastapi", marker = "sys_platform == 'darwin'" }, + { name = "ffmpy", marker = "sys_platform == 'darwin'" }, + { name = "gradio-client", marker = "sys_platform == 'darwin'" }, + { name = "groovy", marker = "sys_platform == 'darwin'" }, + { name = "httpx", marker = "sys_platform == 'darwin'" }, + { name = "huggingface-hub", marker = "sys_platform == 'darwin'" }, + { name = "jinja2", marker = "sys_platform == 'darwin'" }, + { name = "markupsafe", marker = "sys_platform == 'darwin'" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, + { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' and sys_platform == 'darwin'" }, + { name = "orjson", marker = "sys_platform == 'darwin'" }, + { name = "packaging", marker = "sys_platform == 'darwin'" }, + { name = "pandas", marker = "sys_platform == 'darwin'" }, + { name = "pillow", marker = "sys_platform == 'darwin'" }, + { name = "pydantic", marker = "sys_platform == 'darwin'" }, + { name = "pydub", marker = "sys_platform == 'darwin'" }, + { name = "python-multipart", marker = "sys_platform == 'darwin'" }, + { name = "pyyaml", marker = "sys_platform == 'darwin'" }, + { name = "ruff", marker = "sys_platform == 'darwin'" }, + { name = "safehttpx", marker = "sys_platform == 'darwin'" }, + { name = "semantic-version", marker = "sys_platform == 'darwin'" }, + { name = "starlette", marker = "sys_platform == 'darwin'" }, + { name = "tomlkit", marker = "sys_platform == 'darwin'" }, + { name = "typer", marker = "sys_platform == 'darwin'" }, + { name = "typing-extensions", marker = "sys_platform == 'darwin'" }, + { name = "uvicorn", marker = "sys_platform == 'darwin'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/73/23/c6d28a7963e81e5b6cf658a745b448ae085111af62310f6ae68107d261c6/gradio-5.50.1.dev1.tar.gz", hash = "sha256:25255c2e86a2419b15e87d17263de30d87f967c0801d3a02a48008eb158334a3", size = 71671888, upload-time = "2025-12-03T15:20:12.836Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/23/9d/d895d1dc45592a9fde0bf9c6118e0087b340940aad0a621f113d25f90d80/gradio-5.50.1.dev1-py3-none-any.whl", hash = "sha256:517bb713f0f35e1d1fa40e1d279d70b6786ad5957e7e5a9f545ab61d6e12a04d", size = 63531040, upload-time = "2025-12-03T15:19:39.387Z" }, +] + +[[package]] +name = "gradio-client" +version = "1.14.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "fsspec", marker = "sys_platform == 'darwin'" }, + { name = "httpx", marker = "sys_platform == 'darwin'" }, + { name = "huggingface-hub", marker = "sys_platform == 'darwin'" }, + { name = "packaging", marker = "sys_platform == 'darwin'" }, + { name = "typing-extensions", marker = "sys_platform == 'darwin'" }, + { name = "websockets", marker = "sys_platform == 'darwin'" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/be/8a/f2a47134c5b5a7f3bad27eae749589a80d81efaaad8f59af47c136712bf6/gradio_client-1.14.0-py3-none-any.whl", hash = "sha256:9a2f5151978411e0f8b55a2d38cddd0a94491851149d14db4af96f5a09774825", size = 325555, upload-time = "2025-11-21T18:04:21.834Z" }, +] + +[[package]] +name = "groovy" +version = "0.1.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/52/36/bbdede67400277bef33d3ec0e6a31750da972c469f75966b4930c753218f/groovy-0.1.2.tar.gz", hash = "sha256:25c1dc09b3f9d7e292458aa762c6beb96ea037071bf5e917fc81fb78d2231083", size = 17325, upload-time = "2025-02-28T20:24:56.068Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/28/27/3d6dcadc8a3214d8522c1e7f6a19554e33659be44546d44a2f7572ac7d2a/groovy-0.1.2-py3-none-any.whl", hash = "sha256:7f7975bab18c729a257a8b1ae9dcd70b7cafb1720481beae47719af57c35fa64", size = 14090, upload-time = "2025-02-28T20:24:55.152Z" }, +] + +[[package]] +name = "gstreamer-bundle" +version = "1.28.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "gstreamer-cli", marker = "sys_platform == 'darwin'" }, + { name = "gstreamer-gtk", marker = "sys_platform == 'darwin'" }, + { name = "gstreamer-libs", marker = "sys_platform == 'darwin'" }, + { name = "gstreamer-plugins", marker = "sys_platform == 'darwin'" }, + { name = "gstreamer-plugins-gpl", marker = "sys_platform == 'darwin'" }, + { name = "gstreamer-plugins-gpl-restricted", marker = "sys_platform == 'darwin'" }, + { name = "gstreamer-plugins-restricted", marker = "sys_platform == 'darwin'" }, + { name = "gstreamer-python", marker = "sys_platform == 'darwin'" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/07/0f/0dedd5e30e6a7f553cddf850ee39dadbd729a40e9509976f85437a9aaf26/gstreamer_bundle-1.28.3-py3-none-any.whl", hash = "sha256:1270a2f84b4bdb72ecc76c20802d7fafc58a8af0c8540a8e25dbcff91e190b71", size = 2572, upload-time = "2026-05-16T00:03:25.433Z" }, +] + +[[package]] +name = "gstreamer-cli" +version = "1.28.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "gstreamer-libs", marker = "sys_platform == 'darwin'" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/4c/2f/4479a3d4bf3493ed00467ddb2ed6d28a6c7116d5ae5671a3bca8420866ce/gstreamer_cli-1.28.4-cp39-abi3-macosx_10_13_universal2.whl", hash = "sha256:2db1cab8e7ab5b543fa7d8d75cd7fbc0783b3b8853313d2ad7e52051f43d81db", size = 15777538, upload-time = "2026-06-15T08:04:04.075Z" }, +] + +[[package]] +name = "gstreamer-ext-runtime" +version = "1.28.4" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/20/73/51a46056e49402f3662bc8e201e25e1d7caef6b65db69930b385b0fa4c9e/gstreamer_ext_runtime-1.28.4-cp39-abi3-macosx_10_13_universal2.whl", hash = "sha256:ee47805dded543346e738eba4c1ce449850f63dcf6d3ead301f2163e8cec229b", size = 2375, upload-time = "2026-06-15T08:07:36.628Z" }, +] + +[[package]] +name = "gstreamer-gtk" +version = "1.28.4" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b8/7c/67d0c83d03308e7fb5de2565c6108d94a5a4822b03747f865ef135b36d24/gstreamer_gtk-1.28.4-cp39-abi3-macosx_10_15_universal2.whl", hash = "sha256:bfd1f745d1760ac2dd6d64fa542f61cd193df0c251b67d99891cd5aace55504d", size = 20498261, upload-time = "2026-06-15T08:08:13.533Z" }, +] + +[[package]] +name = "gstreamer-libs" +version = "1.28.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "gstreamer-ext-runtime", marker = "sys_platform == 'darwin'" }, + { name = "setuptools", marker = "sys_platform == 'darwin'" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/d7/dc/dd954a6f6ccc5d081b03fc11c70f22e4cb6caba4255c114dc6c820514e83/gstreamer_libs-1.28.4-cp39-abi3-macosx_10_13_universal2.whl", hash = "sha256:050679ec56676f5c549aa834b233d81367942214d3d3149761f498eb48ef5642", size = 96281413, upload-time = "2026-06-15T08:10:48.293Z" }, +] + +[[package]] +name = "gstreamer-plugins" +version = "1.28.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "gstreamer-plugins-libs", marker = "sys_platform == 'darwin'" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/28/88/f57f3a1cf57e794cda7af6fbe46993afed37af7fc858ae115dfc705243e4/gstreamer_plugins-1.28.4-cp39-abi3-macosx_10_13_universal2.whl", hash = "sha256:96401e0eca66e03e675b2c9ba6f29a29bcbb1e9ced11679abe8993e1e4301761", size = 101492264, upload-time = "2026-06-15T08:12:05.281Z" }, +] + +[[package]] +name = "gstreamer-plugins-gpl" +version = "1.28.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "gstreamer-plugins-libs", marker = "sys_platform == 'darwin'" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/75/a5/b8ba6f06f49dd20e9dd52abb1a5f32eb59d0d239228c19e4598319e438f0/gstreamer_plugins_gpl-1.28.4-cp39-abi3-macosx_10_13_universal2.whl", hash = "sha256:16e6f442124007690ef467093b5aa22d27e3d89b101f11c76d57089002206ba5", size = 1049786, upload-time = "2026-06-15T08:12:12.451Z" }, +] + +[[package]] +name = "gstreamer-plugins-gpl-restricted" +version = "1.28.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "gstreamer-plugins-libs", marker = "sys_platform == 'darwin'" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/aa/e6/814df679c32822109c26ae26a5673abbc33d639afe3ebc0a93b23ee0ec00/gstreamer_plugins_gpl_restricted-1.28.4-cp39-abi3-macosx_10_13_universal2.whl", hash = "sha256:e81ee50d88059d0b8fc42f8dbadbb136e1cc16c73254a5907981403183d01e91", size = 13453376, upload-time = "2026-06-15T08:12:22.956Z" }, +] + +[[package]] +name = "gstreamer-plugins-libs" +version = "1.28.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "gstreamer-libs", marker = "sys_platform == 'darwin'" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/06/03/2f71e1c322eed79b8ddaf831351cf8f6215c433d9babc182a3b0f0a9e637/gstreamer_plugins_libs-1.28.4-cp39-abi3-macosx_10_13_universal2.whl", hash = "sha256:1bd17be5cf37b6ca8378a181e074928d94a4934fb7f874dcf271e858d29684e8", size = 83518063, upload-time = "2026-06-15T08:12:49.084Z" }, +] + +[[package]] +name = "gstreamer-plugins-restricted" +version = "1.28.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "gstreamer-plugins-libs", marker = "sys_platform == 'darwin'" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/29/a2/1bed33c875782e1c041b160479136cac8a612bfd794b7989ea18af3ddd56/gstreamer_plugins_restricted-1.28.4-cp39-abi3-macosx_10_13_universal2.whl", hash = "sha256:751d12daf9652d4c45c5a8548dbec9b5c46ab48bdababf37a8bc9831a382ac3d", size = 6103261, upload-time = "2026-06-15T08:12:54.29Z" }, +] + +[[package]] +name = "gstreamer-python" +version = "1.28.4" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d5/cf/f1f7eaed33780d221fe7b43e8852f2b29432c5203ec626e852b1428e5696/gstreamer_python-1.28.4-cp310-cp310-macosx_10_13_universal2.whl", hash = "sha256:cff66ddd230dc0a671713949c2f221441b3eaf3443f9a1e5952868d0c80070f1", size = 1187303, upload-time = "2026-06-15T08:13:11.781Z" }, + { url = "https://files.pythonhosted.org/packages/f4/88/0d7861ef4b18f131e0c2a7371c1ee9d62ea05bf3e50f74c2beb5d96bd3be/gstreamer_python-1.28.4-cp311-cp311-macosx_10_13_universal2.whl", hash = "sha256:a562f5892193cc240326cb93220c56f90852def3c8a64ecbba528790ed28bd4d", size = 1187642, upload-time = "2026-06-15T08:13:15.389Z" }, + { url = "https://files.pythonhosted.org/packages/a7/54/d852200d2c14bd742b2781a107cb1f09eda29c1653e43065b75bc6e2fa49/gstreamer_python-1.28.4-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:479f39fbe817af7796a3ef5cd5d66119cef0b1f7dd4e06858f05d65b07028e0e", size = 1196719, upload-time = "2026-06-15T08:13:18.494Z" }, +] + +[[package]] +name = "h11" +version = "0.16.0" +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" }, +] + +[[package]] +name = "hf-xet" +version = "1.5.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/4b/2d/57fd21d84d93efb4bd0b962383790e19dd1bc053501b4264c97903b4e83e/hf_xet-1.5.1.tar.gz", hash = "sha256:51ef4500dab3764b41135ee1381a4b62ce56fc54d4c92b719b59e597d6df5bf6", size = 876636, upload-time = "2026-06-08T23:02:53.897Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7a/d8/5e54cf37434759d1f4f2ba9b66077ff9d4c4e1f37b6bd7975da5c40d94ab/hf_xet-1.5.1-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:6abd35c3221eff63836618ddfb954dcf84798603f71d8e33e3ed7b04acfdbe6e", size = 4077794, upload-time = "2026-06-08T23:02:40.656Z" }, + { url = "https://files.pythonhosted.org/packages/35/94/4b2ecfbad8f8b04701a23aefb62f540b9137d058b7e1dbef16a32676f0e9/hf_xet-1.5.1-cp37-abi3-macosx_11_0_arm64.whl", hash = "sha256:94e761bbd266bf4c03cee73753916062665ce8365aa40ed321f45afcb934b41e", size = 3845354, upload-time = "2026-06-08T23:02:42.702Z" }, +] + +[[package]] +name = "httpcore" +version = "1.0.9" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "certifi", marker = "sys_platform == 'darwin'" }, + { name = "h11", marker = "sys_platform == 'darwin'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/06/94/82699a10bca87a5556c9c59b5963f2d039dbd239f25bc2a63907a05a14cb/httpcore-1.0.9.tar.gz", hash = "sha256:6e34463af53fd2ab5d807f399a9b45ea31c3dfa2276f15a2c3f00afff6e176e8", size = 85484, upload-time = "2025-04-24T22:06:22.219Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7e/f5/f66802a942d491edb555dd61e3a9961140fd64c90bce1eafd741609d334d/httpcore-1.0.9-py3-none-any.whl", hash = "sha256:2d400746a40668fc9dec9810239072b40b4484b640a8c38fd654a024c7a1bf55", size = 78784, upload-time = "2025-04-24T22:06:20.566Z" }, +] + +[[package]] +name = "httptools" +version = "0.8.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/43/e5/d471fcb0e14523fe1c3f4ba58ca52480e7bd70ad7109a3846bc75892f7fb/httptools-0.8.0.tar.gz", hash = "sha256:6b2a32f18d97e16e90827d7a819ffa8dbd8cc245fc4e1fa9d1095b54ef4bd999", size = 271342, upload-time = "2026-05-25T22:17:48.841Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/40/b9/be66eb0decd730d89b9c94f930e4b8d87787b05724bb84af98bfd825f72c/httptools-0.8.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:bf3b6f807c8541503cecfbb8a8dffb385640d0d96102f3d112aa8740f9b7c826", size = 208805, upload-time = "2026-05-25T22:16:50.434Z" }, + { url = "https://files.pythonhosted.org/packages/9d/f7/b4d41eaae2869d31356bc4bbf546f44fae83ff298af0a043ca0625b06773/httptools-0.8.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:da684f2e1aa2ee9bdcb083f3f3a68c5956750b375bc5df864d3a5f0c42a40b77", size = 113527, upload-time = "2026-05-25T22:16:51.672Z" }, + { url = "https://files.pythonhosted.org/packages/f8/d2/c3eedaef57de65c3cc5f8dc244cf12d09c84ad258a479055aad6db23206c/httptools-0.8.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ed377e64805bdba4943c82717333f8f8603a13b09aff9cead2717c6c817fb168", size = 208428, upload-time = "2026-05-25T22:16:59.717Z" }, + { url = "https://files.pythonhosted.org/packages/f1/94/dfe435d90d0ef61ec0f2cc3d480eef78c59727c6c2ce039f433882f6131a/httptools-0.8.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9518c406d7b310f05adb1a37f80acabac40504a575d7c0da6d3e365c695ac20d", size = 113366, upload-time = "2026-05-25T22:17:00.795Z" }, + { url = "https://files.pythonhosted.org/packages/14/88/1d21a36da8f5cb0fa49eafd4b169eba5608d57e75bbcf61845cbc6243216/httptools-0.8.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:880490234c10f70a9830743097e8958d6e4b9f5a0ffc24515023afeef984054d", size = 208247, upload-time = "2026-05-25T22:17:07.843Z" }, + { url = "https://files.pythonhosted.org/packages/a5/42/cc4feea2945cb3051038f090c9b36bd5b8a9d7f5a894a506a8983e33fd1c/httptools-0.8.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:5931891fb7b441b8a3853cf1b85c82c903defce084dd5f6771ca46e31bf862c5", size = 113064, upload-time = "2026-05-25T22:17:09.136Z" }, +] + +[[package]] +name = "httpx" +version = "0.28.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "anyio", marker = "sys_platform == 'darwin'" }, + { name = "certifi", marker = "sys_platform == 'darwin'" }, + { name = "httpcore", marker = "sys_platform == 'darwin'" }, + { name = "idna", marker = "sys_platform == 'darwin'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b1/df/48c586a5fe32a0f01324ee087459e112ebb7224f646c0b5023f5e79e9956/httpx-0.28.1.tar.gz", hash = "sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc", size = 141406, upload-time = "2024-12-06T15:37:23.222Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad", size = 73517, upload-time = "2024-12-06T15:37:21.509Z" }, +] + +[[package]] +name = "huggingface-hub" +version = "1.3.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "filelock", marker = "sys_platform == 'darwin'" }, + { name = "fsspec", marker = "sys_platform == 'darwin'" }, + { name = "hf-xet", marker = "(platform_machine == 'AMD64' and sys_platform == 'darwin') or (platform_machine == 'aarch64' and sys_platform == 'darwin') or (platform_machine == 'amd64' and sys_platform == 'darwin') or (platform_machine == 'arm64' and sys_platform == 'darwin') or (platform_machine == 'x86_64' and sys_platform == 'darwin')" }, + { name = "httpx", marker = "sys_platform == 'darwin'" }, + { name = "packaging", marker = "sys_platform == 'darwin'" }, + { name = "pyyaml", marker = "sys_platform == 'darwin'" }, + { name = "shellingham", marker = "sys_platform == 'darwin'" }, + { name = "tqdm", marker = "sys_platform == 'darwin'" }, + { name = "typer-slim", marker = "sys_platform == 'darwin'" }, + { name = "typing-extensions", marker = "sys_platform == 'darwin'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c1/c9/d42b5cfa0a50b77cf9165e13edfaf2e3bd4e0def9cb67b6b8a07224a52ab/huggingface_hub-1.3.0.tar.gz", hash = "sha256:289e2a3586fdf01e35882944eaa06fbd57436de24b6e653d1fab248584acd66b", size = 622092, upload-time = "2026-01-09T09:54:44.663Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b1/5b/c5fde1f56b1f072b3028ec5413f3f5bf472c5891ebb34589cddb1689609f/huggingface_hub-1.3.0-py3-none-any.whl", hash = "sha256:763f450169bb05ea3867990e9d3ba9464eb617b874791301dc81be2c6ffb0bf5", size = 533092, upload-time = "2026-01-09T09:54:43.228Z" }, +] + +[[package]] +name = "identify" +version = "2.6.19" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/52/63/51723b5f116cc04b061cb6f5a561790abf249d25931d515cd375e063e0f4/identify-2.6.19.tar.gz", hash = "sha256:6be5020c38fcb07da56c53733538a3081ea5aa70d36a156f83044bfbf9173842", size = 99567, upload-time = "2026-04-17T18:39:50.265Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/94/84/d9273cd09688070a6523c4aee4663a8538721b2b755c4962aafae0011e72/identify-2.6.19-py2.py3-none-any.whl", hash = "sha256:20e6a87f786f768c092a721ad107fc9df0eb89347be9396cadf3f4abbd1fb78a", size = 99397, upload-time = "2026-04-17T18:39:49.221Z" }, +] + +[[package]] +name = "idna" +version = "3.18" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/cd/63/9496c57188a2ee585e0f1db071d75089a11e98aa86eb99d9d7618fc1edce/idna-3.18.tar.gz", hash = "sha256:ffb385a7e039654cef1ab9ef32c6fafe283c0c0467bba1d9029738ce4a14a848", size = 196711, upload-time = "2026-06-02T14:34:07.794Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1e/5e/d4e9f1a599fb8e573b7b87160658329fbf28d19eac2718f51fc3def3aa5a/idna-3.18-py3-none-any.whl", hash = "sha256:7f952cbe720b688055e3f87de14f5c3e5fdaa8bc3928985c4077ca689de849a2", size = 65455, upload-time = "2026-06-02T14:34:06.319Z" }, +] + +[[package]] +name = "ifaddr" +version = "0.2.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e8/ac/fb4c578f4a3256561548cd825646680edcadb9440f3f68add95ade1eb791/ifaddr-0.2.0.tar.gz", hash = "sha256:cc0cbfcaabf765d44595825fb96a99bb12c79716b73b44330ea38ee2b0c4aed4", size = 10485, upload-time = "2022-06-15T21:40:27.561Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9c/1f/19ebc343cc71a7ffa78f17018535adc5cbdd87afb31d7c34874680148b32/ifaddr-0.2.0-py3-none-any.whl", hash = "sha256:085e0305cfe6f16ab12d72e2024030f5d52674afad6911bb1eee207177b8a748", size = 12314, upload-time = "2022-06-15T21:40:25.756Z" }, +] + +[[package]] +name = "importlib-resources" +version = "6.5.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/cf/8c/f834fbf984f691b4f7ff60f50b514cc3de5cc08abfc3295564dd89c5e2e7/importlib_resources-6.5.2.tar.gz", hash = "sha256:185f87adef5bcc288449d98fb4fba07cea78bc036455dd44c5fc4a2fe78fed2c", size = 44693, upload-time = "2025-01-03T18:51:56.698Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a4/ed/1f1afb2e9e7f38a545d628f864d562a5ae64fe6f7a10e28ffb9b185b4e89/importlib_resources-6.5.2-py3-none-any.whl", hash = "sha256:789cfdc3ed28c78b67a06acb8126751ced69a3d5f79c095a98298cd8a760ccec", size = 37461, upload-time = "2025-01-03T18:51:54.306Z" }, +] + +[[package]] +name = "iniconfig" +version = "2.3.0" +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" }, +] + +[[package]] +name = "jax" +version = "0.6.2" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.11' and sys_platform == 'darwin'", +] +dependencies = [ + { name = "jaxlib", version = "0.6.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, + { name = "ml-dtypes", marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, + { name = "opt-einsum", marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, + { name = "scipy", version = "1.15.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/cf/1e/267f59c8fb7f143c3f778c76cb7ef1389db3fd7e4540f04b9f42ca90764d/jax-0.6.2.tar.gz", hash = "sha256:a437d29038cbc8300334119692744704ca7941490867b9665406b7f90665cd96", size = 2334091, upload-time = "2025-06-17T23:10:27.186Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/31/a8/97ef0cbb7a17143ace2643d600a7b80d6705b2266fc31078229e406bdef2/jax-0.6.2-py3-none-any.whl", hash = "sha256:bb24a82dc60ccf704dcaf6dbd07d04957f68a6c686db19630dd75260d1fb788c", size = 2722396, upload-time = "2025-06-17T23:10:25.293Z" }, +] + +[[package]] +name = "jax" +version = "0.10.2" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.12' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and sys_platform == 'darwin'", +] +dependencies = [ + { name = "jaxlib", version = "0.10.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' and sys_platform == 'darwin'" }, + { name = "ml-dtypes", marker = "python_full_version >= '3.11' and sys_platform == 'darwin'" }, + { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' and sys_platform == 'darwin'" }, + { name = "opt-einsum", marker = "python_full_version >= '3.11' and sys_platform == 'darwin'" }, + { name = "scipy", version = "1.17.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.11.*' and sys_platform == 'darwin'" }, + { name = "scipy", version = "1.18.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.12' and sys_platform == 'darwin'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/d2/73/eb91d98fcadfa2cbcfdd4e417ab116e47eb20882acc5ee678e47c35d6b57/jax-0.10.2.tar.gz", hash = "sha256:bf77428a8c2e6904c4f46d5ab12aa5cfc6cad2179f07f7e4c0fc75ac86ef0639", size = 2775110, upload-time = "2026-06-17T23:44:57.818Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/89/82/5ab5211079a151b6f661529369c0c8e98ec64cabf5c0cf22a0a05af124d8/jax-0.10.2-py3-none-any.whl", hash = "sha256:724d73c4678d8b06f6a6ab4db1b8a2fea8cd4f1e2c2564f99601634ec7b8d1c6", size = 3219515, upload-time = "2026-06-17T23:42:41.259Z" }, +] + +[[package]] +name = "jaxlib" +version = "0.6.2" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.11' and sys_platform == 'darwin'", +] +dependencies = [ + { name = "ml-dtypes", marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, + { name = "scipy", version = "1.15.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/15/c5/41598634c99cbebba46e6777286fb76abc449d33d50aeae5d36128ca8803/jaxlib-0.6.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:da4601b2b5dc8c23d6afb293eacfb9aec4e1d1871cb2f29c5a151d103e73b0f8", size = 54298019, upload-time = "2025-06-17T23:10:36.916Z" }, + { url = "https://files.pythonhosted.org/packages/a4/ee/6899b0aed36a4acc51319465ddd83c7c300a062a9e236cceee00984ffe0b/jaxlib-0.6.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a208ff61c58128d306bb4e5ad0858bd2b0960f2c1c10ad42c548f74a60c0020e", size = 54300346, upload-time = "2025-06-17T23:10:54.591Z" }, + { url = "https://files.pythonhosted.org/packages/ac/db/05e702d2534e87abf606b1067b46a273b120e6adc7d459696e3ce7399317/jaxlib-0.6.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:34d8a684a8be949dd87dd4acc97101b4106a0dc9ad151ec891da072319a57b99", size = 54301644, upload-time = "2025-06-17T23:11:10.977Z" }, +] + +[[package]] +name = "jaxlib" +version = "0.10.2" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.12' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and sys_platform == 'darwin'", +] +dependencies = [ + { name = "ml-dtypes", marker = "python_full_version >= '3.11' and sys_platform == 'darwin'" }, + { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' and sys_platform == 'darwin'" }, + { name = "scipy", version = "1.17.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.11.*' and sys_platform == 'darwin'" }, + { name = "scipy", version = "1.18.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.12' and sys_platform == 'darwin'" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/b2/2c/7038fc73154307389631b5b2dbe5ac529e1918eecc19a27e6644ad114bbf/jaxlib-0.10.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5a98873fc867623b81f2bee15d554b8edd6588a183d01fa50d21b1e3db96ff2b", size = 61429039, upload-time = "2026-06-17T23:43:44.858Z" }, + { url = "https://files.pythonhosted.org/packages/ca/93/ee9cc8743191544f65d26ab7eeb82d65968fe60905662d1a5554d056654b/jaxlib-0.10.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:47bb7c011515ea862be7e8313f40f9c56cbec09dc98a0fcb5016785fcd454c01", size = 61434612, upload-time = "2026-06-17T23:43:57.808Z" }, +] + +[[package]] +name = "jinja2" +version = "3.1.6" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "markupsafe", marker = "sys_platform == 'darwin'" }, +] +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://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.15.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/66/b5/55f06bb281d92fb3cc86d14e1def2bd908bb77693183e7cb1f5a3c388b0c/jiter-0.15.0.tar.gz", hash = "sha256:4251acc80e2b7c9b7b8823456ea0fceeb0734dac2df7636d3c711b38476b5a76", size = 166640, upload-time = "2026-05-19T10:09:48.361Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1d/da/76a2c7e510ba15fe323d9509c223ab272da79ea59f54488f4a78da6426db/jiter-0.15.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:edebcf7d1f601199084bb6e844d7dc67e03e04f6ac786b0332d616635c4ff7a4", size = 310849, upload-time = "2026-05-19T10:06:51.944Z" }, + { url = "https://files.pythonhosted.org/packages/5d/8e/827be942883a4dc0862c48626ff41af3320b1902d136a0bf4b9041f2c567/jiter-0.15.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9f924585cdacf631cd382b657966847bb537bf9ed0a6f9b991da5f05a631480f", size = 314991, upload-time = "2026-05-19T10:06:53.522Z" }, + { url = "https://files.pythonhosted.org/packages/e4/13/daa722f5765c393576f466378f9dfd29d77c9bed939e0688f96afa3601ea/jiter-0.15.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:0f862193b8696249d22ec433e85fd2ab0ad9596bc3e45e6c0bc55e8aeba97be2", size = 310899, upload-time = "2026-05-19T10:07:12.89Z" }, + { url = "https://files.pythonhosted.org/packages/7f/82/2d2551829b082f4b6d82b9f939b031fb808a10aab1ec0664f82e150bb9a2/jiter-0.15.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1303d4d68a9b051ea90502402063ecf3807da00ad2affa19ca1ae3b90b3c5f67", size = 314963, upload-time = "2026-05-19T10:07:14.539Z" }, + { url = "https://files.pythonhosted.org/packages/44/53/4f6bddbcde3c71e56d0aa1337ec95950f3d27dd4153e25aadf0feac71751/jiter-0.15.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:0e90a1c315a0226ec822d973817967f9223b7701546c8c2a7913e7ab0926294d", size = 308793, upload-time = "2026-05-19T10:07:35.25Z" }, + { url = "https://files.pythonhosted.org/packages/01/84/c01099b59a285a1ebba64ae93f62bfa036675340fd1b0045ae65890a0442/jiter-0.15.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8c9004af7c8d67cce7f1aae1026fb55607f4aa600710d08ede3a3ce4aeefe7e0", size = 309570, upload-time = "2026-05-19T10:07:36.919Z" }, + { url = "https://files.pythonhosted.org/packages/65/43/1fc62172aa98b50a7de9a25554060db510f85c89cfbed0dfe13e1907a139/jiter-0.15.0-graalpy311-graalpy242_311_native-macosx_10_12_x86_64.whl", hash = "sha256:411fa4dfa5a7ae3d11491027ffb9beadec3996010a986862db70d91abba1c750", size = 305585, upload-time = "2026-05-19T10:09:35.995Z" }, + { url = "https://files.pythonhosted.org/packages/e8/c4/dd58fcd9e2df83666e5c1c1347bef58ce919cd8efc3ffa38aeea62ce493b/jiter-0.15.0-graalpy311-graalpy242_311_native-macosx_11_0_arm64.whl", hash = "sha256:2b0074e2f56eb2dacca1689760fd2852a068f85a0547a157b82cb4cafeb6768b", size = 306936, upload-time = "2026-05-19T10:09:37.435Z" }, + { url = "https://files.pythonhosted.org/packages/73/38/505941b2b092fd5bbbd60a52a880db1173f1690ae6751bed3af1c9ddcb4e/jiter-0.15.0-graalpy312-graalpy250_312_native-macosx_10_12_x86_64.whl", hash = "sha256:631f13a3d04e97d4e083993b10f4b99530e3a10d953e2eb5e196b7dc7f812ce0", size = 303769, upload-time = "2026-05-19T10:09:42.203Z" }, + { url = "https://files.pythonhosted.org/packages/e7/95/a06692b29e77473f286e1ec1f426d3ca44d7b5843be8ad21d7a5f3fcdcc0/jiter-0.15.0-graalpy312-graalpy250_312_native-macosx_11_0_arm64.whl", hash = "sha256:b6c0ffae686c39bf3737be60793783267628783ea42545632c10b291105aee45", size = 305128, upload-time = "2026-05-19T10:09:43.657Z" }, +] + +[[package]] +name = "joblib" +version = "1.5.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/41/f2/d34e8b3a08a9cc79a50b2208a93dce981fe615b64d5a4d4abee421d898df/joblib-1.5.3.tar.gz", hash = "sha256:8561a3269e6801106863fd0d6d84bb737be9e7631e33aaed3fb9ce5953688da3", size = 331603, upload-time = "2025-12-15T08:41:46.427Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7b/91/984aca2ec129e2757d1e4e3c81c3fcda9d0f85b74670a094cc443d9ee949/joblib-1.5.3-py3-none-any.whl", hash = "sha256:5fc3c5039fc5ca8c0276333a188bbd59d6b7ab37fe6632daa76bc7f9ec18e713", size = 309071, upload-time = "2025-12-15T08:41:44.973Z" }, +] + +[[package]] +name = "kiwisolver" +version = "1.5.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d0/67/9c61eccb13f0bdca9307614e782fec49ffdde0f7a2314935d489fa93cd9c/kiwisolver-1.5.0.tar.gz", hash = "sha256:d4193f3d9dc3f6f79aaed0e5637f45d98850ebf01f7ca20e69457f3e8946b66a", size = 103482, upload-time = "2026-03-09T13:15:53.382Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ac/f8/06549565caa026e540b7e7bab5c5a90eb7ca986015f4c48dace243cd24d9/kiwisolver-1.5.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:32cc0a5365239a6ea0c6ed461e8838d053b57e397443c0ca894dcc8e388d4374", size = 122802, upload-time = "2026-03-09T13:12:37.515Z" }, + { url = "https://files.pythonhosted.org/packages/84/eb/8476a0818850c563ff343ea7c9c05dcdcbd689a38e01aa31657df01f91fa/kiwisolver-1.5.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:cc0b66c1eec9021353a4b4483afb12dfd50e3669ffbb9152d6842eb34c7e29fd", size = 66216, upload-time = "2026-03-09T13:12:38.812Z" }, + { url = "https://files.pythonhosted.org/packages/f3/c4/f9c8a6b4c21aed4198566e45923512986d6cef530e7263b3a5f823546561/kiwisolver-1.5.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:86e0287879f75621ae85197b0877ed2f8b7aa57b511c7331dce2eb6f4de7d476", size = 63917, upload-time = "2026-03-09T13:12:40.053Z" }, + { url = "https://files.pythonhosted.org/packages/12/dd/a495a9c104be1c476f0386e714252caf2b7eca883915422a64c50b88c6f5/kiwisolver-1.5.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:9eed0f7edbb274413b6ee781cca50541c8c0facd3d6fd289779e494340a2b85c", size = 122798, upload-time = "2026-03-09T13:12:58.963Z" }, + { url = "https://files.pythonhosted.org/packages/11/60/37b4047a2af0cf5ef6d8b4b26e91829ae6fc6a2d1f74524bcb0e7cd28a32/kiwisolver-1.5.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3c4923e404d6bcd91b6779c009542e5647fef32e4a5d75e115e3bbac6f2335eb", size = 66216, upload-time = "2026-03-09T13:13:00.155Z" }, + { url = "https://files.pythonhosted.org/packages/0a/aa/510dc933d87767584abfe03efa445889996c70c2990f6f87c3ebaa0a18c5/kiwisolver-1.5.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:0df54df7e686afa55e6f21fb86195224a6d9beb71d637e8d7920c95cf0f89aac", size = 63911, upload-time = "2026-03-09T13:13:01.671Z" }, + { url = "https://files.pythonhosted.org/packages/4d/b2/818b74ebea34dabe6d0c51cb1c572e046730e64844da6ed646d5298c40ce/kiwisolver-1.5.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:4e9750bc21b886308024f8a54ccb9a2cc38ac9fa813bf4348434e3d54f337ff9", size = 123158, upload-time = "2026-03-09T13:13:23.127Z" }, + { url = "https://files.pythonhosted.org/packages/bf/d9/405320f8077e8e1c5c4bd6adc45e1e6edf6d727b6da7f2e2533cf58bff71/kiwisolver-1.5.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:72ec46b7eba5b395e0a7b63025490d3214c11013f4aacb4f5e8d6c3041829588", size = 66388, upload-time = "2026-03-09T13:13:24.765Z" }, + { url = "https://files.pythonhosted.org/packages/99/9f/795fedf35634f746151ca8839d05681ceb6287fbed6cc1c9bf235f7887c2/kiwisolver-1.5.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ed3a984b31da7481b103f68776f7128a89ef26ed40f4dc41a2223cda7fb24819", size = 64068, upload-time = "2026-03-09T13:13:25.878Z" }, + { url = "https://files.pythonhosted.org/packages/1c/fa/2910df836372d8761bb6eff7d8bdcb1613b5c2e03f260efe7abe34d388a7/kiwisolver-1.5.0-graalpy312-graalpy250_312_native-macosx_10_13_x86_64.whl", hash = "sha256:5ae8e62c147495b01a0f4765c878e9bfdf843412446a247e28df59936e99e797", size = 130262, upload-time = "2026-03-09T13:15:35.629Z" }, + { url = "https://files.pythonhosted.org/packages/0f/41/c5f71f9f00aabcc71fee8b7475e3f64747282580c2fe748961ba29b18385/kiwisolver-1.5.0-graalpy312-graalpy250_312_native-macosx_11_0_arm64.whl", hash = "sha256:f6764a4ccab3078db14a632420930f6186058750df066b8ea2a7106df91d3203", size = 138036, upload-time = "2026-03-09T13:15:36.894Z" }, + { url = "https://files.pythonhosted.org/packages/17/6f/6fd4f690a40c2582fa34b97d2678f718acf3706b91d270c65ecb455d0a06/kiwisolver-1.5.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:295d9ffe712caa9f8a3081de8d32fc60191b4b51c76f02f951fd8407253528f4", size = 59606, upload-time = "2026-03-09T13:15:40.81Z" }, + { url = "https://files.pythonhosted.org/packages/82/a0/2355d5e3b338f13ce63f361abb181e3b6ea5fffdb73f739b3e80efa76159/kiwisolver-1.5.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:51e8c4084897de9f05898c2c2a39af6318044ae969d46ff7a34ed3f96274adca", size = 57537, upload-time = "2026-03-09T13:15:42.071Z" }, + { url = "https://files.pythonhosted.org/packages/e9/eb/5fcbbbf9a0e2c3a35effb88831a483345326bbc3a030a3b5b69aee647f84/kiwisolver-1.5.0-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:ec4c85dc4b687c7f7f15f553ff26a98bfe8c58f5f7f0ac8905f0ba4c7be60232", size = 59532, upload-time = "2026-03-09T13:15:47.047Z" }, + { url = "https://files.pythonhosted.org/packages/c3/9b/e17104555bb4db148fd52327feea1e96be4b88e8e008b029002c281a21ab/kiwisolver-1.5.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:12e91c215a96e39f57989c8912ae761286ac5a9584d04030ceb3368a357f017a", size = 57420, upload-time = "2026-03-09T13:15:48.199Z" }, +] + +[[package]] +name = "lazy-loader" +version = "0.5" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "packaging", marker = "sys_platform == 'darwin'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/49/ac/21a1f8aa3777f5658576777ea76bfb124b702c520bbe90edf4ae9915eafa/lazy_loader-0.5.tar.gz", hash = "sha256:717f9179a0dbed357012ddad50a5ad3d5e4d9a0b8712680d4e687f5e6e6ed9b3", size = 15294, upload-time = "2026-03-06T15:45:09.054Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8a/a1/8d812e53a5da1687abb10445275d41a8b13adb781bbf7196ddbcf8d88505/lazy_loader-0.5-py3-none-any.whl", hash = "sha256:ab0ea149e9c554d4ffeeb21105ac60bed7f3b4fd69b1d2360a4add51b170b005", size = 8044, upload-time = "2026-03-06T15:45:07.668Z" }, +] + +[[package]] +name = "librosa" +version = "0.11.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "audioread", marker = "sys_platform == 'darwin'" }, + { name = "decorator", marker = "sys_platform == 'darwin'" }, + { name = "joblib", marker = "sys_platform == 'darwin'" }, + { name = "lazy-loader", marker = "sys_platform == 'darwin'" }, + { name = "msgpack", marker = "sys_platform == 'darwin'" }, + { name = "numba", marker = "sys_platform == 'darwin'" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, + { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' and sys_platform == 'darwin'" }, + { name = "pooch", marker = "sys_platform == 'darwin'" }, + { name = "scikit-learn", version = "1.7.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, + { name = "scikit-learn", version = "1.9.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' and sys_platform == 'darwin'" }, + { name = "scipy", version = "1.15.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, + { name = "scipy", version = "1.17.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.11.*' and sys_platform == 'darwin'" }, + { name = "scipy", version = "1.18.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.12' and sys_platform == 'darwin'" }, + { name = "soundfile", marker = "sys_platform == 'darwin'" }, + { name = "soxr", marker = "sys_platform == 'darwin'" }, + { name = "typing-extensions", marker = "sys_platform == 'darwin'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/64/36/360b5aafa0238e29758729e9486c6ed92a6f37fa403b7875e06c115cdf4a/librosa-0.11.0.tar.gz", hash = "sha256:f5ed951ca189b375bbe2e33b2abd7e040ceeee302b9bbaeeffdfddb8d0ace908", size = 327001, upload-time = "2025-03-11T15:09:54.884Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b5/ba/c63c5786dfee4c3417094c4b00966e61e4a63efecee22cb7b4c0387dda83/librosa-0.11.0-py3-none-any.whl", hash = "sha256:0b6415c4fd68bff4c29288abe67c6d80b587e0e1e2cfb0aad23e4559504a7fa1", size = 260749, upload-time = "2025-03-11T15:09:52.982Z" }, +] + +[[package]] +name = "libusb-package" +version = "1.0.26.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "importlib-resources", marker = "sys_platform == 'darwin'" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/01/34/fd042950325366cb8f01e1873cd87f8aa99e773586377a8e670d6127dc8e/libusb_package-1.0.26.4-py3-none-macosx_10_9_x86_64.whl", hash = "sha256:ce3711a82a2b4b9936a6268c9cbad794c34ae3b1b2c5cc9aeced8340db678668", size = 63859, upload-time = "2026-06-19T11:04:23.822Z" }, + { url = "https://files.pythonhosted.org/packages/4e/49/bcc1e79a0d86f3da7cc3494093b4973cb1c74852d7356ce533bb1bd58342/libusb_package-1.0.26.4-py3-none-macosx_11_0_arm64.whl", hash = "sha256:4ef4accbadd40f8a054b0298604555d8175ebd376a87978302a83d0311a0b116", size = 58009, upload-time = "2026-06-19T11:04:25.013Z" }, +] + +[[package]] +name = "llvmlite" +version = "0.47.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/01/88/a8952b6d5c21e74cbf158515b779666f692846502623e9e3c39d8e8ba25f/llvmlite-0.47.0.tar.gz", hash = "sha256:62031ce968ec74e95092184d4b0e857e444f8fdff0b8f9213707699570c33ccc", size = 193614, upload-time = "2026-03-31T18:29:53.497Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f4/f5/a1bde3aa8c43524b0acaf3f72fb3d80a32dd29dbb42d7dc434f84584cdcc/llvmlite-0.47.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:41270b0b1310717f717cf6f2a9c68d3c43bd7905c33f003825aebc361d0d1b17", size = 37232772, upload-time = "2026-03-31T18:28:12.198Z" }, + { url = "https://files.pythonhosted.org/packages/34/0b/b9d1911cfefa61399821dfb37f486d83e0f42630a8d12f7194270c417002/llvmlite-0.47.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:74090f0dcfd6f24ebbef3f21f11e38111c4d7e6919b54c4416e1e357c3446b07", size = 37232770, upload-time = "2026-03-31T18:28:26.765Z" }, + { url = "https://files.pythonhosted.org/packages/fa/48/4b7fe0e34c169fa2f12532916133e0b219d2823b540733651b34fdac509a/llvmlite-0.47.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:306a265f408c259067257a732c8e159284334018b4083a9e35f67d19792b164f", size = 37232769, upload-time = "2026-03-31T18:28:43.735Z" }, +] + +[[package]] +name = "log-throttling" +version = "0.0.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/76/be/09fda383d82a7b91f12ff5002bc909e101769c802ff3b1d2cb9f533d1a2f/log-throttling-0.0.3.tar.gz", hash = "sha256:df714e1448cd9cb4c916cf668ab88323032e61ece733548708d996ecf63190b9", size = 3533, upload-time = "2022-03-08T16:29:23.674Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b1/6e/995ebad4ab08250b4afe1d91fe3086b863ed9bb74539d90485250a50f08a/log_throttling-0.0.3-py3-none-any.whl", hash = "sha256:a82508f489dd44a60b737a0339c784dd8ee2b9db16bdcf587a8ae1012a7f6ffc", size = 4081, upload-time = "2022-03-08T16:29:21.443Z" }, +] + +[[package]] +name = "markdown-it-py" +version = "4.2.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "mdurl", marker = "sys_platform == 'darwin'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/06/ff/7841249c247aa650a76b9ee4bbaeae59370dc8bfd2f6c01f3630c35eb134/markdown_it_py-4.2.0.tar.gz", hash = "sha256:04a21681d6fbb623de53f6f364d352309d4094dd4194040a10fd51833e418d49", size = 82454, upload-time = "2026-05-07T12:08:28.36Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b3/81/4da04ced5a082363ecfa159c010d200ecbd959ae410c10c0264a38cac0f5/markdown_it_py-4.2.0-py3-none-any.whl", hash = "sha256:9f7ebbcd14fe59494226453aed97c1070d83f8d24b6fc3a3bcf9a38092641c4a", size = 91687, upload-time = "2026-05-07T12:08:27.182Z" }, +] + +[[package]] +name = "markupsafe" +version = "3.0.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/7e/99/7690b6d4034fffd95959cbe0c02de8deb3098cc577c67bb6a24fe5d7caa7/markupsafe-3.0.3.tar.gz", hash = "sha256:722695808f4b6457b320fdc131280796bdceb04ab50fe1795cd540799ebe1698", size = 80313, upload-time = "2025-09-27T18:37:40.426Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e8/4b/3541d44f3937ba468b75da9eebcae497dcf67adb65caa16760b0a6807ebb/markupsafe-3.0.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:2f981d352f04553a7171b8e44369f2af4055f888dfb147d55e42d29e29e74559", size = 11631, upload-time = "2025-09-27T18:36:05.558Z" }, + { url = "https://files.pythonhosted.org/packages/98/1b/fbd8eed11021cabd9226c37342fa6ca4e8a98d8188a8d9b66740494960e4/markupsafe-3.0.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e1c1493fb6e50ab01d20a22826e57520f1284df32f2d8601fdd90b6304601419", size = 12057, upload-time = "2025-09-27T18:36:07.165Z" }, + { url = "https://files.pythonhosted.org/packages/08/db/fefacb2136439fc8dd20e797950e749aa1f4997ed584c62cfb8ef7c2be0e/markupsafe-3.0.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1cc7ea17a6824959616c525620e387f6dd30fec8cb44f649e31712db02123dad", size = 11631, upload-time = "2025-09-27T18:36:18.185Z" }, + { url = "https://files.pythonhosted.org/packages/e1/2e/5898933336b61975ce9dc04decbc0a7f2fee78c30353c5efba7f2d6ff27a/markupsafe-3.0.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4bd4cd07944443f5a265608cc6aab442e4f74dff8088b0dfc8238647b8f6ae9a", size = 12058, upload-time = "2025-09-27T18:36:19.444Z" }, + { url = "https://files.pythonhosted.org/packages/5a/72/147da192e38635ada20e0a2e1a51cf8823d2119ce8883f7053879c2199b5/markupsafe-3.0.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:d53197da72cc091b024dd97249dfc7794d6a56530370992a5e1a08983ad9230e", size = 11615, upload-time = "2025-09-27T18:36:30.854Z" }, + { url = "https://files.pythonhosted.org/packages/9a/81/7e4e08678a1f98521201c3079f77db69fb552acd56067661f8c2f534a718/markupsafe-3.0.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1872df69a4de6aead3491198eaf13810b565bdbeec3ae2dc8780f14458ec73ce", size = 12020, upload-time = "2025-09-27T18:36:31.971Z" }, +] + +[[package]] +name = "matplotlib" +version = "3.10.9" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.11' and sys_platform == 'darwin'", +] +dependencies = [ + { name = "contourpy", version = "1.3.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, + { name = "cycler", marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, + { name = "fonttools", marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, + { name = "kiwisolver", marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, + { name = "packaging", marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, + { name = "pillow", marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, + { name = "pyparsing", marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, + { name = "python-dateutil", marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/63/1b/4be5be87d43d327a0cf4de1a56e86f7f84c89312452406cf122efe2839e6/matplotlib-3.10.9.tar.gz", hash = "sha256:fd66508e8c6877d98e586654b608a0456db8d7e8a546eb1e2600efd957302358", size = 34811233, upload-time = "2026-04-24T00:14:13.539Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/18/6f/340b04986e67aac6f66c5145ce68bf72c64bed30f92c8913499a6e6b8f99/matplotlib-3.10.9-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:77210dce9cb8153dffc967efaae990543392563d5a376d4dd8539bebcb0ed217", size = 8296625, upload-time = "2026-04-24T00:11:43.376Z" }, + { url = "https://files.pythonhosted.org/packages/bb/2f/127081eb83162053ebb9678ceac64220b93a663e0167432566e9c7c82aab/matplotlib-3.10.9-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:1e7698ac9868428e84d2c967424803b2472ff7167d9d6590d4204ed775343c3b", size = 8188790, upload-time = "2026-04-24T00:11:46.556Z" }, + { url = "https://files.pythonhosted.org/packages/4c/8c/290f021104741fea63769c31494f5324c0cd249bf536a65a4350767b1f22/matplotlib-3.10.9-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:68cfdcede415f7c8f5577b03303dd94526cdb6d11036cecdc205e08733b2d2bb", size = 8306860, upload-time = "2026-04-24T00:12:01.207Z" }, + { url = "https://files.pythonhosted.org/packages/51/18/325cd32ece1120d1da51cc4e4294c6580190699490183fc2fe8cb6d61ec5/matplotlib-3.10.9-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:dfca0129678bd56379db26c52b5d77ed7de314c047492fbdc763aa7501710cfb", size = 8199254, upload-time = "2026-04-24T00:12:04.239Z" }, + { url = "https://files.pythonhosted.org/packages/35/c6/5581e26c72233ebb2a2a6fed2d24fb7c66b4700120b813f51b0555acf0b6/matplotlib-3.10.9-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:f0c3c28d9fbcc1fe7a03be236d73430cf6409c41fb2383a7ac52fe932b072cb1", size = 8319908, upload-time = "2026-04-24T00:12:21.323Z" }, + { url = "https://files.pythonhosted.org/packages/b7/18/4880dd762e40cd360c1bf06e890c5a97b997e91cb324602b1a19950ad5ce/matplotlib-3.10.9-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:41cb28c2bd769aa3e98322c6ab09854cbcc52ab69d2759d681bba3e327b2b320", size = 8216016, upload-time = "2026-04-24T00:12:23.4Z" }, + { url = "https://files.pythonhosted.org/packages/2c/2b/0e92ad0ac446633f928a1563db4aa8add407e1924faf0ded5b95b35afb27/matplotlib-3.10.9-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:1872fb212a05b729e649754a72d5da61d03e0554d76e80303b6f83d1d2c0552b", size = 8293058, upload-time = "2026-04-24T00:13:56.339Z" }, + { url = "https://files.pythonhosted.org/packages/4b/23/74682fd369f5299ceda438fea2a0662e6383b85c9383fb9cdfcf04713e07/matplotlib-3.10.9-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:985f2238880e2e69093f588f5fe2e46771747febf0649f3cf7f7b7480875317f", size = 8186627, upload-time = "2026-04-24T00:13:58.623Z" }, + { url = "https://files.pythonhosted.org/packages/63/e2/9f66ca6a651a52abfe0d4964ce01439ed34f3f1e119de10ff3a07f403043/matplotlib-3.10.9-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:42fb814efabe95c06c1994d8ab5a8385f43a249e23badd3ba931d4308e5bca20", size = 8304420, upload-time = "2026-04-24T00:14:04.57Z" }, + { url = "https://files.pythonhosted.org/packages/e8/e8/467c03568218792906aa87b5e7bb379b605e056ed0c74fe00c051786d925/matplotlib-3.10.9-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:f76e640a5268850bfda54b5131b1b1941cc685e42c5fa98ed9f2d64038308cba", size = 8197981, upload-time = "2026-04-24T00:14:07.233Z" }, +] + +[[package]] +name = "matplotlib" +version = "3.11.0" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.12' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and sys_platform == 'darwin'", +] +dependencies = [ + { name = "contourpy", version = "1.3.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' and sys_platform == 'darwin'" }, + { name = "cycler", marker = "python_full_version >= '3.11' and sys_platform == 'darwin'" }, + { name = "fonttools", marker = "python_full_version >= '3.11' and sys_platform == 'darwin'" }, + { name = "kiwisolver", marker = "python_full_version >= '3.11' and sys_platform == 'darwin'" }, + { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' and sys_platform == 'darwin'" }, + { name = "packaging", marker = "python_full_version >= '3.11' and sys_platform == 'darwin'" }, + { name = "pillow", marker = "python_full_version >= '3.11' and sys_platform == 'darwin'" }, + { name = "pyparsing", marker = "python_full_version >= '3.11' and sys_platform == 'darwin'" }, + { name = "python-dateutil", marker = "python_full_version >= '3.11' and sys_platform == 'darwin'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/1f/24/080c99d223d158d3a8902769269ab6da5b50f7a0e6e072513907e02b7a6c/matplotlib-3.11.0.tar.gz", hash = "sha256:68c0c7be01b30dcca3638934f7f591df73401235cbdbf0d1ab1c71e7db7f8b57", size = 33251176, upload-time = "2026-06-12T02:29:15.508Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ce/a2/78f662f1b18968531f67d3fcde1b7ea8496920bacd4f16ddb5b79d112e46/matplotlib-3.11.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:f857524b442f0f36e641868ce2171aafa88cb0bc0644f4e1d8a5df9b32649fef", size = 9436261, upload-time = "2026-06-12T02:27:34.161Z" }, + { url = "https://files.pythonhosted.org/packages/5e/92/044f1de43901310202f4c79acf4f141be53b2ca8d8380e2fcefb3d523a75/matplotlib-3.11.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:57baa92fdc82948ed716eae6d2579d4d6f40965cd8d2f416755b4a72580a3233", size = 9264669, upload-time = "2026-06-12T02:27:37.413Z" }, + { url = "https://files.pythonhosted.org/packages/da/17/f5276b496c61477a6c4fc5e7401f4bfe1c2e5ef7c6cd67896f2ade3809cb/matplotlib-3.11.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:06b5872e9cf11adc8f589ded3ce11bc3e1061ad498259664fabc1f6615beb918", size = 9449976, upload-time = "2026-06-12T02:27:50.989Z" }, + { url = "https://files.pythonhosted.org/packages/82/34/bdd77418adb2178a1d59f044bd67bfebb115896e91b840b8a197eb3f4f4e/matplotlib-3.11.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0515d495124be3124340e59f164d901ed4484e2246a5b74cfa483cac3b80bd97", size = 9279307, upload-time = "2026-06-12T02:27:53.247Z" }, + { url = "https://files.pythonhosted.org/packages/0f/c2/f5da6cd37ed6871f5c9b3c0507ddb69f14d6c36fac4541e4e0c60cb8cdfc/matplotlib-3.11.0-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:81ae77077a1e16d37a5b61096ccb07c8d90a99b518fa8256b8f21578932f2f62", size = 9434094, upload-time = "2026-06-12T02:29:09.135Z" }, + { url = "https://files.pythonhosted.org/packages/f8/07/56f66906e0f87a0c6d0d0acbd34dbc9432b1931d8f26ef618bd6f92932a9/matplotlib-3.11.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:ddef37840695f5eef65f9f070fe2d2f510f584c2156203f9f622a5b0584efffd", size = 9262183, upload-time = "2026-06-12T02:29:11.283Z" }, +] + +[[package]] +name = "mdurl" +version = "0.1.2" +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" }, +] + +[[package]] +name = "mediapipe" +version = "0.10.14" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "absl-py", marker = "sys_platform == 'darwin'" }, + { name = "attrs", marker = "sys_platform == 'darwin'" }, + { name = "flatbuffers", marker = "sys_platform == 'darwin'" }, + { name = "jax", version = "0.6.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, + { name = "jax", version = "0.10.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' and sys_platform == 'darwin'" }, + { name = "jaxlib", version = "0.6.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, + { name = "jaxlib", version = "0.10.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' and sys_platform == 'darwin'" }, + { name = "matplotlib", version = "3.10.9", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, + { name = "matplotlib", version = "3.11.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' and sys_platform == 'darwin'" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, + { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' and sys_platform == 'darwin'" }, + { name = "opencv-contrib-python", marker = "sys_platform == 'darwin'" }, + { name = "protobuf", marker = "sys_platform == 'darwin'" }, + { name = "sounddevice", marker = "sys_platform == 'darwin'" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/ab/25/f42edb738eb1af21b5638b353d29ba8bb9d4c9a3907c9db211a10c779690/mediapipe-0.10.14-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:1166935be26df23f6c6f6369dd7a79f0337ce882364acb986a377c4951bf7c34", size = 50189211, upload-time = "2024-05-08T17:24:04.992Z" }, + { url = "https://files.pythonhosted.org/packages/d3/b0/f0a449b548dc8e7056b8968fa0305614f69eba42e00a4023f2e45bf8d587/mediapipe-0.10.14-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:113e264c38616ff23ff261b70cbcad2a2ae34b8335d055787b10bc09b2175adf", size = 50099364, upload-time = "2024-05-08T17:24:13.084Z" }, + { url = "https://files.pythonhosted.org/packages/31/fb/09fde872bd3c92720860adc25ffee605f18d3a5165320ae8cd2d71da7003/mediapipe-0.10.14-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:4737fce6107bd21e420a6b2aad2c721fbc4cc318f1258b68f0665f10225bde1d", size = 50187308, upload-time = "2024-05-08T17:24:53.339Z" }, + { url = "https://files.pythonhosted.org/packages/b0/17/8e0ca5c867fe9b9943945b3a0033158fd89ae031c0a2e7dd3dd9101b2f3f/mediapipe-0.10.14-cp311-cp311-macosx_11_0_x86_64.whl", hash = "sha256:e5f8fdf512da074c225219f4e09723f612cdd3449c4793693fd360dc817c9261", size = 50098859, upload-time = "2024-05-08T17:30:21.737Z" }, + { url = "https://files.pythonhosted.org/packages/2d/df/be410905b9757de4b00891dd34236d96e6db150b624f28cc27cd90c74564/mediapipe-0.10.14-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:aa2298c1886716cde6bd7ce96aba1505d67d52edaba856f6c2e1ab905de52b0d", size = 50203567, upload-time = "2024-05-08T17:30:50.451Z" }, + { url = "https://files.pythonhosted.org/packages/32/40/b6a2a50593e8753bf12e2dbfd130dee588eb2fc50ce74939cf6485af2756/mediapipe-0.10.14-cp312-cp312-macosx_11_0_x86_64.whl", hash = "sha256:5c97e32cbb9e9d72b78a33f011257b3cdb55b60fef70a8a864c5d2a4b6652425", size = 50117879, upload-time = "2024-05-08T17:30:58.154Z" }, +] + +[[package]] +name = "ml-dtypes" +version = "0.5.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, + { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' and sys_platform == 'darwin'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/0e/4a/c27b42ed9b1c7d13d9ba8b6905dece787d6259152f2309338aed29b2447b/ml_dtypes-0.5.4.tar.gz", hash = "sha256:8ab06a50fb9bf9666dd0fe5dfb4676fa2b0ac0f31ecff72a6c3af8e22c063453", size = 692314, upload-time = "2025-11-17T22:32:31.031Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fe/3a/c5b855752a70267ff729c349e650263adb3c206c29d28cc8ea7ace30a1d5/ml_dtypes-0.5.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:b95e97e470fe60ed493fd9ae3911d8da4ebac16bd21f87ffa2b7c588bf22ea2c", size = 679735, upload-time = "2025-11-17T22:31:31.367Z" }, + { url = "https://files.pythonhosted.org/packages/c6/5e/712092cfe7e5eb667b8ad9ca7c54442f21ed7ca8979745f1000e24cf8737/ml_dtypes-0.5.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:6c7ecb74c4bd71db68a6bea1edf8da8c34f3d9fe218f038814fd1d310ac76c90", size = 679734, upload-time = "2025-11-17T22:31:39.223Z" }, + { url = "https://files.pythonhosted.org/packages/a8/b8/3c70881695e056f8a32f8b941126cf78775d9a4d7feba8abcb52cb7b04f2/ml_dtypes-0.5.4-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:a174837a64f5b16cab6f368171a1a03a27936b31699d167684073ff1c4237dac", size = 676927, upload-time = "2025-11-17T22:31:48.182Z" }, +] + +[[package]] +name = "mpmath" +version = "1.3.0" +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", size = 536198, upload-time = "2023-03-07T16:47:09.197Z" }, +] + +[[package]] +name = "msgpack" +version = "1.2.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/31/f9/c0a1c127f9049db9155afc316952ea571720dd01833ff5e4d7e8e6352dbb/msgpack-1.2.1.tar.gz", hash = "sha256:04c721c2c7448767e9e3f2520a475663d8ee0f09c31890f6d2bd70fd636a9647", size = 183960, upload-time = "2026-06-18T16:13:52.594Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5b/16/f70100614b69feb3ade7285f08c9c52d6cda0a5c03f3f5e2facd63acb211/msgpack-1.2.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:8c7b398c56ff125feae96c2737abfec5595f1fa0aa186df60c56040b8accb95c", size = 82926, upload-time = "2026-06-18T16:12:31.531Z" }, + { url = "https://files.pythonhosted.org/packages/e4/3c/08ecd5cdfe4e2de43aec79062028ad0f7b2d9b1fea5430068c198ba570da/msgpack-1.2.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:1548006a91aa93c5da81f3bdcebc1a0d10cea2d25969754fbe848da622b2b895", size = 82730, upload-time = "2026-06-18T16:12:32.894Z" }, + { url = "https://files.pythonhosted.org/packages/f4/6b/e9b1cdc042c4458801d2545ed782a95f3d6ba8e270cce8745b8603c7f748/msgpack-1.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:29a3f6e9667868429d8240dfd063ea5ffdc1321c13d783aa23827a38de0dcb22", size = 82812, upload-time = "2026-06-18T16:12:45.022Z" }, + { url = "https://files.pythonhosted.org/packages/0c/3a/dd518a1bf78ed1e9ad8afe57307c079a00eafe4b3068932a27ca1ea56b4f/msgpack-1.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:aded5bdf32609dc7987a49bbbd15a8ef096193f96dd8bbeb791de729e650acf5", size = 82739, upload-time = "2026-06-18T16:12:46.025Z" }, + { url = "https://files.pythonhosted.org/packages/bc/dd/9e8cbd8f5582ca4b590336f2b91ee5662f6a6ca562b565abaf696a0f81ff/msgpack-1.2.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:2ef59c659f289eddf8aa6623823f19fa2f40a4029266889eac7a2505dd210c35", size = 83531, upload-time = "2026-06-18T16:12:58.249Z" }, + { url = "https://files.pythonhosted.org/packages/50/2e/ebdb85a8da151397a2790363676b7ed7c125924fe618e4c6d8befb0cc62c/msgpack-1.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:d3567748a5107cb40cdf66a275430c2f87c07777698f4bfd25c35f44d533258c", size = 82657, upload-time = "2026-06-18T16:12:59.396Z" }, +] + +[[package]] +name = "multidict" +version = "6.7.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions", marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/1a/c2/c2d94cbe6ac1753f3fc980da97b3d930efe1da3af3c9f5125354436c073d/multidict-6.7.1.tar.gz", hash = "sha256:ec6652a1bee61c53a3e5776b6049172c53b6aaba34f18c9ad04f82712bac623d", size = 102010, upload-time = "2026-01-26T02:46:45.979Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/84/0b/19348d4c98980c4851d2f943f8ebafdece2ae7ef737adcfa5994ce8e5f10/multidict-6.7.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:c93c3db7ea657dd4637d57e74ab73de31bccefe144d3d4ce370052035bc85fb5", size = 77176, upload-time = "2026-01-26T02:42:59.784Z" }, + { url = "https://files.pythonhosted.org/packages/ef/04/9de3f8077852e3d438215c81e9b691244532d2e05b4270e89ce67b7d103c/multidict-6.7.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:974e72a2474600827abaeda71af0c53d9ebbc3c2eb7da37b37d7829ae31232d8", size = 44996, upload-time = "2026-01-26T02:43:01.674Z" }, + { url = "https://files.pythonhosted.org/packages/31/5c/08c7f7fe311f32e83f7621cd3f99d805f45519cd06fafb247628b861da7d/multidict-6.7.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:cdea2e7b2456cfb6694fb113066fd0ec7ea4d67e3a35e1f4cbeea0b448bf5872", size = 44631, upload-time = "2026-01-26T02:43:03.169Z" }, + { url = "https://files.pythonhosted.org/packages/ce/f1/a90635c4f88fb913fbf4ce660b83b7445b7a02615bda034b2f8eb38fd597/multidict-6.7.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:7ff981b266af91d7b4b3793ca3382e53229088d193a85dfad6f5f4c27fc73e5d", size = 76626, upload-time = "2026-01-26T02:43:26.485Z" }, + { url = "https://files.pythonhosted.org/packages/a6/9b/267e64eaf6fc637a15b35f5de31a566634a2740f97d8d094a69d34f524a4/multidict-6.7.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:844c5bca0b5444adb44a623fb0a1310c2f4cd41f402126bb269cd44c9b3f3e1e", size = 44706, upload-time = "2026-01-26T02:43:27.607Z" }, + { url = "https://files.pythonhosted.org/packages/dd/a4/d45caf2b97b035c57267791ecfaafbd59c68212004b3842830954bb4b02e/multidict-6.7.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f2a0a924d4c2e9afcd7ec64f9de35fcd96915149b2216e1cb2c10a56df483855", size = 44356, upload-time = "2026-01-26T02:43:28.661Z" }, + { url = "https://files.pythonhosted.org/packages/8d/9c/f20e0e2cf80e4b2e4b1c365bf5fe104ee633c751a724246262db8f1a0b13/multidict-6.7.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:a90f75c956e32891a4eda3639ce6dd86e87105271f43d43442a3aedf3cddf172", size = 76893, upload-time = "2026-01-26T02:43:52.754Z" }, + { url = "https://files.pythonhosted.org/packages/fe/cf/18ef143a81610136d3da8193da9d80bfe1cb548a1e2d1c775f26b23d024a/multidict-6.7.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:3fccb473e87eaa1382689053e4a4618e7ba7b9b9b8d6adf2027ee474597128cd", size = 45456, upload-time = "2026-01-26T02:43:53.893Z" }, + { url = "https://files.pythonhosted.org/packages/a9/65/1caac9d4cd32e8433908683446eebc953e82d22b03d10d41a5f0fefe991b/multidict-6.7.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b0fa96985700739c4c7853a43c0b3e169360d6855780021bfc6d0f1ce7c123e7", size = 43872, upload-time = "2026-01-26T02:43:55.041Z" }, + { url = "https://files.pythonhosted.org/packages/81/08/7036c080d7117f28a4af526d794aab6a84463126db031b007717c1a6676e/multidict-6.7.1-py3-none-any.whl", hash = "sha256:55d97cc6dae627efa6a6e548885712d4864b81110ac76fa4e534c03819fa4a56", size = 12319, upload-time = "2026-01-26T02:46:44.004Z" }, +] + +[[package]] +name = "mypy" +version = "1.18.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "mypy-extensions", marker = "sys_platform == 'darwin'" }, + { name = "pathspec", marker = "sys_platform == 'darwin'" }, + { name = "tomli", marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, + { name = "typing-extensions", marker = "sys_platform == 'darwin'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c0/77/8f0d0001ffad290cef2f7f216f96c814866248a0b92a722365ed54648e7e/mypy-1.18.2.tar.gz", hash = "sha256:06a398102a5f203d7477b2923dda3634c36727fa5c237d8f859ef90c42a9924b", size = 3448846, upload-time = "2025-09-19T00:11:10.519Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/03/6f/657961a0743cff32e6c0611b63ff1c1970a0b482ace35b069203bf705187/mypy-1.18.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c1eab0cf6294dafe397c261a75f96dc2c31bffe3b944faa24db5def4e2b0f77c", size = 12807973, upload-time = "2025-09-19T00:10:35.282Z" }, + { url = "https://files.pythonhosted.org/packages/10/e9/420822d4f661f13ca8900f5fa239b40ee3be8b62b32f3357df9a3045a08b/mypy-1.18.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:7a780ca61fc239e4865968ebc5240bb3bf610ef59ac398de9a7421b54e4a207e", size = 11896527, upload-time = "2025-09-19T00:10:55.791Z" }, + { url = "https://files.pythonhosted.org/packages/88/87/cafd3ae563f88f94eec33f35ff722d043e09832ea8530ef149ec1efbaf08/mypy-1.18.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:807d9315ab9d464125aa9fcf6d84fde6e1dc67da0b6f80e7405506b8ac72bc7f", size = 12731198, upload-time = "2025-09-19T00:09:44.857Z" }, + { url = "https://files.pythonhosted.org/packages/0f/e0/1e96c3d4266a06d4b0197ace5356d67d937d8358e2ee3ffac71faa843724/mypy-1.18.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:776bb00de1778caf4db739c6e83919c1d85a448f71979b6a0edd774ea8399341", size = 11817879, upload-time = "2025-09-19T00:09:47.131Z" }, + { url = "https://files.pythonhosted.org/packages/07/06/dfdd2bc60c66611dd8335f463818514733bc763e4760dee289dcc33df709/mypy-1.18.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:33eca32dd124b29400c31d7cf784e795b050ace0e1f91b8dc035672725617e34", size = 12908273, upload-time = "2025-09-19T00:10:58.321Z" }, + { url = "https://files.pythonhosted.org/packages/81/14/6a9de6d13a122d5608e1a04130724caf9170333ac5a924e10f670687d3eb/mypy-1.18.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a3c47adf30d65e89b2dcd2fa32f3aeb5e94ca970d2c15fcb25e297871c8e4764", size = 11920910, upload-time = "2025-09-19T00:10:20.043Z" }, + { url = "https://files.pythonhosted.org/packages/87/e3/be76d87158ebafa0309946c4a73831974d4d6ab4f4ef40c3b53a385a66fd/mypy-1.18.2-py3-none-any.whl", hash = "sha256:22a1748707dd62b58d2ae53562ffc4d7f8bcc727e8ac7cbc69c053ddc874d47e", size = 2352367, upload-time = "2025-09-19T00:10:15.489Z" }, +] + +[[package]] +name = "mypy-extensions" +version = "1.1.0" +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" }, +] + +[[package]] +name = "narwhals" +version = "2.22.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/62/3c/c4ef2164a71c1a63d7f1ae411c4082c5fa872405106db60a4b7114989ad7/narwhals-2.22.1.tar.gz", hash = "sha256:d62920805a0a43b7ff8b54b0c0d3142d796f8a9301836ada37e573d6a33cbcd9", size = 647493, upload-time = "2026-06-05T12:34:34.051Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/48/ca/36339329c4604adbcc99c899b7eb1ce1a555c499b6a6860757dc9bfed36d/narwhals-2.22.1-py3-none-any.whl", hash = "sha256:60567d774edf77db53906f89d9fbd164e66e56d66d388e1e6990f17ac33cfb53", size = 454815, upload-time = "2026-06-05T12:34:32.289Z" }, +] + +[[package]] +name = "networkx" +version = "3.4.2" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.11' and sys_platform == 'darwin'", +] +sdist = { url = "https://files.pythonhosted.org/packages/fd/1d/06475e1cd5264c0b870ea2cc6fdb3e37177c1e565c43f56ff17a10e3937f/networkx-3.4.2.tar.gz", hash = "sha256:307c3669428c5362aab27c8a1260aa8f47c4e91d3891f48be0141738d8d053e1", size = 2151368, upload-time = "2024-10-21T12:39:38.695Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl", hash = "sha256:df5d4365b724cf81b8c6a7312509d0c22386097011ad1abe274afd5e9d3bbc5f", size = 1723263, upload-time = "2024-10-21T12:39:36.247Z" }, +] + +[[package]] +name = "networkx" +version = "3.6.1" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.12' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and sys_platform == 'darwin'", +] +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", size = 2068504, upload-time = "2025-12-08T17:02:38.159Z" }, +] + +[[package]] +name = "nodeenv" +version = "1.10.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/24/bf/d1bda4f6168e0b2e9e5958945e01910052158313224ada5ce1fb2e1113b8/nodeenv-1.10.0.tar.gz", hash = "sha256:996c191ad80897d076bdfba80a41994c2b47c68e224c542b48feba42ba00f8bb", size = 55611, upload-time = "2025-12-20T14:08:54.006Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/88/b2/d0896bdcdc8d28a7fc5717c305f1a861c26e18c05047949fb371034d98bd/nodeenv-1.10.0-py2.py3-none-any.whl", hash = "sha256:5bb13e3eed2923615535339b3c620e76779af4cb4c6a90deccc9e36b274d3827", size = 23438, upload-time = "2025-12-20T14:08:52.782Z" }, +] + +[[package]] +name = "num2words" +version = "0.5.14" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "docopt", marker = "sys_platform == 'darwin'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f6/58/ad645bd38b4b648eb2fc2ba1b909398e54eb0cbb6a7dbd2b4953e38c9621/num2words-0.5.14.tar.gz", hash = "sha256:b066ec18e56b6616a3b38086b5747daafbaa8868b226a36127e0451c0cf379c6", size = 218213, upload-time = "2024-12-17T20:17:10.191Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d6/5b/545e9267a1cc080c8a1be2746113a063e34bcdd0f5173fd665a5c13cb234/num2words-0.5.14-py3-none-any.whl", hash = "sha256:1c8e5b00142fc2966fd8d685001e36c4a9911e070d1b120e1beb721fa1edb33d", size = 163525, upload-time = "2024-12-17T20:17:06.074Z" }, +] + +[[package]] +name = "numba" +version = "0.65.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "llvmlite", marker = "sys_platform == 'darwin'" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, + { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' and sys_platform == 'darwin'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f6/c5/db2ac3685833d626c0dcae6bd2330cd68433e1fd248d15f70998160d3ad7/numba-0.65.1.tar.gz", hash = "sha256:19357146c32fe9ed25059ab915e8465fb13951cf6b0aace3826b76886373ab23", size = 2765600, upload-time = "2026-04-24T02:02:56.551Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/de/1b/3c5a7daf683a95465bf23504bcd1a2d5db8cd5e5e276ca87505d020dffe9/numba-0.65.1-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:9d993ed0a257aa4116e6f553f114004bcfdee540c7276ab8ea48f650d514c452", size = 2680870, upload-time = "2026-04-24T02:02:10.623Z" }, + { url = "https://files.pythonhosted.org/packages/96/b3/650500c2eab4534d98e9166f4298e0f3c69c742afdf24e6eabccd1f16ad8/numba-0.65.1-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:7020d74b19cdb8cff16506542fdd510756e28c5e7f3bd0b7f574f0f42272fcd9", size = 2680563, upload-time = "2026-04-24T02:02:18.414Z" }, + { url = "https://files.pythonhosted.org/packages/57/bc/76f8f8c5cf9adee47fdb7bbb03be8900f76f902d451d7477cf12b845e1de/numba-0.65.1-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:ac3f1e77c352dd0ea9712732c2d8f9ca507717435eec5b5013bf138ac33c4a08", size = 2681371, upload-time = "2026-04-24T02:02:26.105Z" }, +] + +[[package]] +name = "numpy" +version = "2.2.6" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.11' and sys_platform == 'darwin'", +] +sdist = { url = "https://files.pythonhosted.org/packages/76/21/7d2a95e4bba9dc13d043ee156a356c0a8f0c6309dff6b21b4d71a073b8a8/numpy-2.2.6.tar.gz", hash = "sha256:e29554e2bef54a90aa5cc07da6ce955accb83f21ab5de01a62c8478897b264fd", size = 20276440, upload-time = "2025-05-17T22:38:04.611Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9a/3e/ed6db5be21ce87955c0cbd3009f2803f59fa08df21b5df06862e2d8e2bdd/numpy-2.2.6-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b412caa66f72040e6d268491a59f2c43bf03eb6c96dd8f0307829feb7fa2b6fb", size = 21165245, upload-time = "2025-05-17T21:27:58.555Z" }, + { url = "https://files.pythonhosted.org/packages/22/c2/4b9221495b2a132cc9d2eb862e21d42a009f5a60e45fc44b00118c174bff/numpy-2.2.6-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8e41fd67c52b86603a91c1a505ebaef50b3314de0213461c7a6e99c9a3beff90", size = 14360048, upload-time = "2025-05-17T21:28:21.406Z" }, + { url = "https://files.pythonhosted.org/packages/fd/77/dc2fcfc66943c6410e2bf598062f5959372735ffda175b39906d54f02349/numpy-2.2.6-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:37e990a01ae6ec7fe7fa1c26c55ecb672dd98b19c3d0e1d1f326fa13cb38d163", size = 5340542, upload-time = "2025-05-17T21:28:30.931Z" }, + { url = "https://files.pythonhosted.org/packages/7a/4f/1cb5fdc353a5f5cc7feb692db9b8ec2c3d6405453f982435efc52561df58/numpy-2.2.6-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:5a6429d4be8ca66d889b7cf70f536a397dc45ba6faeb5f8c5427935d9592e9cf", size = 6878301, upload-time = "2025-05-17T21:28:41.613Z" }, + { url = "https://files.pythonhosted.org/packages/da/a8/4f83e2aa666a9fbf56d6118faaaf5f1974d456b1823fda0a176eff722839/numpy-2.2.6-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f9f1adb22318e121c5c69a09142811a201ef17ab257a1e66ca3025065b7f53ae", size = 21176963, upload-time = "2025-05-17T21:31:19.36Z" }, + { url = "https://files.pythonhosted.org/packages/b3/2b/64e1affc7972decb74c9e29e5649fac940514910960ba25cd9af4488b66c/numpy-2.2.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c820a93b0255bc360f53eca31a0e676fd1101f673dda8da93454a12e23fc5f7a", size = 14406743, upload-time = "2025-05-17T21:31:41.087Z" }, + { url = "https://files.pythonhosted.org/packages/4a/9f/0121e375000b5e50ffdd8b25bf78d8e1a5aa4cca3f185d41265198c7b834/numpy-2.2.6-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:3d70692235e759f260c3d837193090014aebdf026dfd167834bcba43e30c2a42", size = 5352616, upload-time = "2025-05-17T21:31:50.072Z" }, + { url = "https://files.pythonhosted.org/packages/31/0d/b48c405c91693635fbe2dcd7bc84a33a602add5f63286e024d3b6741411c/numpy-2.2.6-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:481b49095335f8eed42e39e8041327c05b0f6f4780488f61286ed3c01368d491", size = 6889579, upload-time = "2025-05-17T21:32:01.712Z" }, + { url = "https://files.pythonhosted.org/packages/82/5d/c00588b6cf18e1da539b45d3598d3557084990dcc4331960c15ee776ee41/numpy-2.2.6-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:41c5a21f4a04fa86436124d388f6ed60a9343a6f767fced1a8a71c3fbca038ff", size = 20875348, upload-time = "2025-05-17T21:34:39.648Z" }, + { url = "https://files.pythonhosted.org/packages/66/ee/560deadcdde6c2f90200450d5938f63a34b37e27ebff162810f716f6a230/numpy-2.2.6-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:de749064336d37e340f640b05f24e9e3dd678c57318c7289d222a8a2f543e90c", size = 14119362, upload-time = "2025-05-17T21:35:01.241Z" }, + { url = "https://files.pythonhosted.org/packages/3c/65/4baa99f1c53b30adf0acd9a5519078871ddde8d2339dc5a7fde80d9d87da/numpy-2.2.6-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:894b3a42502226a1cac872f840030665f33326fc3dac8e57c607905773cdcde3", size = 5084103, upload-time = "2025-05-17T21:35:10.622Z" }, + { url = "https://files.pythonhosted.org/packages/cc/89/e5a34c071a0570cc40c9a54eb472d113eea6d002e9ae12bb3a8407fb912e/numpy-2.2.6-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:71594f7c51a18e728451bb50cc60a3ce4e6538822731b2933209a1f3614e9282", size = 6625382, upload-time = "2025-05-17T21:35:21.414Z" }, + { url = "https://files.pythonhosted.org/packages/9e/3b/d94a75f4dbf1ef5d321523ecac21ef23a3cd2ac8b78ae2aac40873590229/numpy-2.2.6-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:0b605b275d7bd0c640cad4e5d30fa701a8d59302e127e5f79138ad62762c3e3d", size = 21040391, upload-time = "2025-05-17T21:44:35.948Z" }, + { url = "https://files.pythonhosted.org/packages/17/f4/09b2fa1b58f0fb4f7c7963a1649c64c4d315752240377ed74d9cd878f7b5/numpy-2.2.6-pp310-pypy310_pp73-macosx_14_0_x86_64.whl", hash = "sha256:7befc596a7dc9da8a337f79802ee8adb30a552a94f792b9c9d18c840055907db", size = 6786754, upload-time = "2025-05-17T21:44:47.446Z" }, +] + +[[package]] +name = "numpy" +version = "2.4.6" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.12' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and sys_platform == 'darwin'", +] +sdist = { url = "https://files.pythonhosted.org/packages/d0/ad/fed0499ce6a338d2a03ebae59cd15093910c8875328855781952abf6c2fe/numpy-2.4.6.tar.gz", hash = "sha256:f3a3570c4a2a16746ac2c31a7c7c7b0c186b95ce902e33db6f28094ed7387dda", size = 20735807, upload-time = "2026-05-18T23:37:14.07Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b3/49/ec46835a70be8fa6446c495126ac84fdb28cb2558e1620ffb87a10c8b64c/numpy-2.4.6-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0280e0356c0829a18d9de1cb7eee50ec22ca639878d7240307ca0943d73cd2c4", size = 16969194, upload-time = "2026-05-18T23:33:13.503Z" }, + { url = "https://files.pythonhosted.org/packages/0e/0d/f5957185c0ee2f3e12f78715aa9e3b353fd83633316c8532b38faa37e3f6/numpy-2.4.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:110f8b71aacb688ec69062bb7f6938a0f8acb01b7c1c4beb453c65b6d234584d", size = 14964111, upload-time = "2026-05-18T23:33:17.795Z" }, + { url = "https://files.pythonhosted.org/packages/ad/40/40a40ee0ddf7ceb782c49af278894b686e586d65d8c1889c8b5da01a3d7d/numpy-2.4.6-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:4cfe66903cc32a9921a6733d96b19bb6abf310397581bbad89c228f5abaf0ee8", size = 5469159, upload-time = "2026-05-18T23:33:20.654Z" }, + { url = "https://files.pythonhosted.org/packages/63/13/f9a8046535cb21deae82f8d03de9617e08882d274fad2539630761888228/numpy-2.4.6-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:8155154c7c691289fe18f510b5d4657c68c67989f293f0535a91360392ff6538", size = 6798936, upload-time = "2026-05-18T23:33:22.987Z" }, + { url = "https://files.pythonhosted.org/packages/95/2a/3d7b5ac8aac24feaf9ad7ed58f45b0bbc06d37e4338ae84c9f2298b570f9/numpy-2.4.6-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:001fbb8e08d942dd57599e781f2472269ee7f2755fae407b4f67b2f0b17da3f1", size = 16689119, upload-time = "2026-05-18T23:33:54.065Z" }, + { url = "https://files.pythonhosted.org/packages/ea/12/92c4c131527599e8288d6918e888d88726f84d805d784b771f32408aeaef/numpy-2.4.6-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ebfb099f8dcf083deef3ac1ca4c1503f387cf76296fcb3816b66f5ecb5f54fdb", size = 14699246, upload-time = "2026-05-18T23:33:57.621Z" }, + { url = "https://files.pythonhosted.org/packages/ad/fe/c0a6b7b2ca128a8fb228575147073b660656734b8ebe4d76c8fd748dcc79/numpy-2.4.6-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:3213d622a0283a39a93d188f3cf72b26862df52fbb4ca3697f51705016523d41", size = 5204410, upload-time = "2026-05-18T23:34:00.302Z" }, + { url = "https://files.pythonhosted.org/packages/f3/d4/9770d14ba719432bb90a421bfd443872ed0f70f7264b64bec12ea363d5fd/numpy-2.4.6-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:357cc07a6d7b0b182ff02249616a03742827ebb1277546b5c7cd7f7620a45698", size = 6551240, upload-time = "2026-05-18T23:34:02.852Z" }, + { url = "https://files.pythonhosted.org/packages/de/12/b422cc84439adc0d00de605bf4a308890ae5c26f2c71fbd73e5d08fbb0dd/numpy-2.4.6-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:55cced7c52e981362f708ad635198e97a752dfba412cc03c23bbf3bd8d5cd662", size = 16847511, upload-time = "2026-05-18T23:36:50.673Z" }, + { url = "https://files.pythonhosted.org/packages/44/53/f481bef68011740f8849418d82db07230e825013f31f4eef5ba5b805316a/numpy-2.4.6-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:d6da64deb6b8ed903e7560180a92f2d804ee1ba5eeb849ac2748b8c1aba1f6d7", size = 14889064, upload-time = "2026-05-18T23:36:53.879Z" }, + { url = "https://files.pythonhosted.org/packages/7f/57/42ed575c10ced8af951d426bc4e1f8aff16fd851db33f067036215a7f860/numpy-2.4.6-pp311-pypy311_pp73-macosx_14_0_arm64.whl", hash = "sha256:68a5124b13fa6cc2086764a20005d30bc0548146f7f5322f02fce212ca14317f", size = 5394157, upload-time = "2026-05-18T23:36:57.194Z" }, + { url = "https://files.pythonhosted.org/packages/6a/ef/f66cc724fcc36c1e364c67f51ae9146090b8b584f27d58b97fdae3edd737/numpy-2.4.6-pp311-pypy311_pp73-macosx_14_0_x86_64.whl", hash = "sha256:948424b06129ce883307e8cff868c31396d8dc7630a59c61d70d98dbe70f222c", size = 6708728, upload-time = "2026-05-18T23:36:59.575Z" }, +] + +[[package]] +name = "nvidia-ml-py" +version = "13.610.43" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f0/b5/a8fbc356f768fa5c9cfd646668fd7d34bf55bdd1c6e20754642a64d930d4/nvidia_ml_py-13.610.43.tar.gz", hash = "sha256:65437eb73d68d0c62c931ca4d45038472faff03bd0b8729abba4b899f70d60f2", size = 52109, upload-time = "2026-06-01T18:54:08.829Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/23/45/caa600acfab94560807a20a64b5830d2cd3c3202b7f1328644d70b7d6bd8/nvidia_ml_py-13.610.43-py3-none-any.whl", hash = "sha256:f13c72698edef492f985cc225f14faafe68ae065a2e407f45bdf6f4b9b43fde8", size = 53163, upload-time = "2026-06-01T18:54:07.704Z" }, +] + +[[package]] +name = "openai" +version = "2.44.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "anyio", marker = "sys_platform == 'darwin'" }, + { name = "distro", marker = "sys_platform == 'darwin'" }, + { name = "httpx", marker = "sys_platform == 'darwin'" }, + { name = "jiter", marker = "sys_platform == 'darwin'" }, + { name = "pydantic", marker = "sys_platform == 'darwin'" }, + { name = "sniffio", marker = "sys_platform == 'darwin'" }, + { name = "tqdm", marker = "sys_platform == 'darwin'" }, + { name = "typing-extensions", marker = "sys_platform == 'darwin'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/49/f5/7c7cb955305cb41f7f3c5fd7e0e38bf6bbf2658468863d4b7b868a5cb8df/openai-2.44.0.tar.gz", hash = "sha256:68a5a5ffad82b8ff7d451c437529fb64f7c3b8123aaf0c021966a882d9e3947d", size = 988753, upload-time = "2026-06-24T20:56:02.293Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ae/f4/561ed79fd94876160018a5e75254cfcb9b0e62d4dded9dcb20072e86d623/openai-2.44.0-py3-none-any.whl", hash = "sha256:0a2a3ab2e29aeda368700f662ff9ba0f9df17ba4c54577a64e08b8115a3cc0ad", size = 1366216, upload-time = "2026-06-24T20:55:58.882Z" }, +] + +[[package]] +name = "opencv-contrib-python" +version = "4.13.0.92" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, + { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' and sys_platform == 'darwin'" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/7e/4c/a45c96b9fe90b2c48ee604f5176eb7deb46ce7c2e87c8d819d2945dbcab6/opencv_contrib_python-4.13.0.92-cp37-abi3-macosx_13_0_arm64.whl", hash = "sha256:53c8ab81376210dda5836307eb6bda7266f39a3820a9a070c7131510ba815fe1", size = 52041546, upload-time = "2026-02-05T07:01:29.918Z" }, + { url = "https://files.pythonhosted.org/packages/8b/6c/ba1f3177927deeb3002b62fb8db89daea3b5dc732d61de5bf4c73ed6ebf7/opencv_contrib_python-4.13.0.92-cp37-abi3-macosx_14_0_x86_64.whl", hash = "sha256:1973d0fc773873f9d1b5bf0d1b65895da2f47b06ba033b7d58393f5c28ba0778", size = 38830319, upload-time = "2026-02-05T07:01:47.222Z" }, +] + +[[package]] +name = "opencv-python" +version = "4.13.0.92" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, + { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' and sys_platform == 'darwin'" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/fc/6f/5a28fef4c4a382be06afe3938c64cc168223016fa520c5abaf37e8862aa5/opencv_python-4.13.0.92-cp37-abi3-macosx_13_0_arm64.whl", hash = "sha256:caf60c071ec391ba51ed00a4a920f996d0b64e3e46068aac1f646b5de0326a19", size = 46247052, upload-time = "2026-02-05T07:01:25.046Z" }, + { url = "https://files.pythonhosted.org/packages/08/ac/6c98c44c650b8114a0fb901691351cfb3956d502e8e9b5cd27f4ee7fbf2f/opencv_python-4.13.0.92-cp37-abi3-macosx_14_0_x86_64.whl", hash = "sha256:5868a8c028a0b37561579bfb8ac1875babdc69546d236249fff296a8c010ccf9", size = 32568781, upload-time = "2026-02-05T07:01:41.379Z" }, +] + +[[package]] +name = "opt-einsum" +version = "3.4.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/8c/b9/2ac072041e899a52f20cf9510850ff58295003aa75525e58343591b0cbfb/opt_einsum-3.4.0.tar.gz", hash = "sha256:96ca72f1b886d148241348783498194c577fa30a8faac108586b14f1ba4473ac", size = 63004, upload-time = "2024-09-26T14:33:24.483Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/23/cd/066e86230ae37ed0be70aae89aabf03ca8d9f39c8aea0dec8029455b5540/opt_einsum-3.4.0-py3-none-any.whl", hash = "sha256:69bb92469f86a1565195ece4ac0323943e83477171b91d24c35afe028a90d7cd", size = 71932, upload-time = "2024-09-26T14:33:23.039Z" }, +] + +[[package]] +name = "orjson" +version = "3.11.9" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/7e/0c/964746fcafbd16f8ff53219ad9f6b412b34f345c75f384ad434ceaadb538/orjson-3.11.9.tar.gz", hash = "sha256:4fef17e1f8722c11587a6ef18e35902450221da0028e65dbaaa543619e68e48f", size = 5599163, upload-time = "2026-05-06T15:11:08.309Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/10/5d/b95ca542a001135cc250a49370f282f578c8f4e46cc8617d73775297eea8/orjson-3.11.9-cp310-cp310-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:135869ef917b8704ea0a94e01620e0c05021c15c52036e4663baffe75e72f8ce", size = 228986, upload-time = "2026-05-06T15:09:14.765Z" }, + { url = "https://files.pythonhosted.org/packages/1e/51/3fb9e65ae76ee97bd611869a503fa3fc0a6e81dd8b737cf3003f682df7ff/orjson-3.11.9-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:f01c4818b3fc9b0da8e096722a84318071eaa118df35f6ed2344da0e73a5444f", size = 228522, upload-time = "2026-05-06T15:09:35.362Z" }, + { url = "https://files.pythonhosted.org/packages/16/fa/9d54b07cb3f3b0bfd57841478e42d7a0ece4a9f49f9907eecf5a45461687/orjson-3.11.9-cp311-cp311-macosx_15_0_arm64.whl", hash = "sha256:3ebca4179031ee716ed076ffadc29428e900512f6fccee8614c9983157fcf19c", size = 128463, upload-time = "2026-05-06T15:09:37.063Z" }, + { url = "https://files.pythonhosted.org/packages/16/6d/11867a3ffa3a3608d84a4de51ef4dd0896d6b5cc9132fbe1daf593e677bc/orjson-3.11.9-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:9ef6fe90aadef185c7b128859f40beb24720b4ecea95379fc9000931179c3a49", size = 228515, upload-time = "2026-05-06T15:09:57.265Z" }, + { url = "https://files.pythonhosted.org/packages/24/75/05912954c8b288f34fcf5cd4b9b071cb4f6e77b9961e175e56ebb258089f/orjson-3.11.9-cp312-cp312-macosx_15_0_arm64.whl", hash = "sha256:e5c9b8f28e726e97d97696c826bc7bea5d71cecd63576dba92924a32c1961291", size = 128409, upload-time = "2026-05-06T15:09:59.063Z" }, +] + +[[package]] +name = "packaging" +version = "26.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d7/f1/e7a6dd94a8d4a5626c03e4e99c87f241ba9e350cd9e6d75123f992427270/packaging-26.2.tar.gz", hash = "sha256:ff452ff5a3e828ce110190feff1178bb1f2ea2281fa2075aadb987c2fb221661", size = 228134, upload-time = "2026-04-24T20:15:23.917Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/df/b2/87e62e8c3e2f4b32e5fe99e0b86d576da1312593b39f47d8ceef365e95ed/packaging-26.2-py3-none-any.whl", hash = "sha256:5fc45236b9446107ff2415ce77c807cee2862cb6fac22b8a73826d0693b0980e", size = 100195, upload-time = "2026-04-24T20:15:22.081Z" }, +] + +[[package]] +name = "pandas" +version = "2.3.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, + { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' and sys_platform == 'darwin'" }, + { name = "python-dateutil", marker = "sys_platform == 'darwin'" }, + { name = "pytz", marker = "sys_platform == 'darwin'" }, + { name = "tzdata", marker = "sys_platform == 'darwin'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/33/01/d40b85317f86cf08d853a4f495195c73815fdf205eef3993821720274518/pandas-2.3.3.tar.gz", hash = "sha256:e05e1af93b977f7eafa636d043f9f94c7ee3ac81af99c13508215942e64c993b", size = 4495223, upload-time = "2025-09-29T23:34:51.853Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3d/f7/f425a00df4fcc22b292c6895c6831c0c8ae1d9fac1e024d16f98a9ce8749/pandas-2.3.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:376c6446ae31770764215a6c937f72d917f214b43560603cd60da6408f183b6c", size = 11555763, upload-time = "2025-09-29T23:16:53.287Z" }, + { url = "https://files.pythonhosted.org/packages/13/4f/66d99628ff8ce7857aca52fed8f0066ce209f96be2fede6cef9f84e8d04f/pandas-2.3.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e19d192383eab2f4ceb30b412b22ea30690c9e618f78870357ae1d682912015a", size = 10801217, upload-time = "2025-09-29T23:17:04.522Z" }, + { url = "https://files.pythonhosted.org/packages/c1/fa/7ac648108144a095b4fb6aa3de1954689f7af60a14cf25583f4960ecb878/pandas-2.3.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:602b8615ebcc4a0c1751e71840428ddebeb142ec02c786e8ad6b1ce3c8dec523", size = 11578790, upload-time = "2025-09-29T23:18:30.065Z" }, + { url = "https://files.pythonhosted.org/packages/9b/35/74442388c6cf008882d4d4bdfc4109be87e9b8b7ccd097ad1e7f006e2e95/pandas-2.3.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8fe25fc7b623b0ef6b5009149627e34d2a4657e880948ec3c840e9402e5c1b45", size = 10833831, upload-time = "2025-09-29T23:38:56.071Z" }, + { url = "https://files.pythonhosted.org/packages/9c/fb/231d89e8637c808b997d172b18e9d4a4bc7bf31296196c260526055d1ea0/pandas-2.3.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:6d21f6d74eb1725c2efaa71a2bfc661a0689579b58e9c0ca58a739ff0b002b53", size = 11597846, upload-time = "2025-09-29T23:19:48.856Z" }, + { url = "https://files.pythonhosted.org/packages/5c/bd/bf8064d9cfa214294356c2d6702b716d3cf3bb24be59287a6a21e24cae6b/pandas-2.3.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3fd2f887589c7aa868e02632612ba39acb0b8948faf5cc58f0850e165bd46f35", size = 10729618, upload-time = "2025-09-29T23:39:08.659Z" }, +] + +[[package]] +name = "pathspec" +version = "1.1.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/5a/82/42f767fc1c1143d6fd36efb827202a2d997a375e160a71eb2888a925aac1/pathspec-1.1.1.tar.gz", hash = "sha256:17db5ecd524104a120e173814c90367a96a98d07c45b2e10c2f3919fff91bf5a", size = 135180, upload-time = "2026-04-27T01:46:08.907Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f1/d9/7fb5aa316bc299258e68c73ba3bddbc499654a07f151cba08f6153988714/pathspec-1.1.1-py3-none-any.whl", hash = "sha256:a00ce642f577bf7f473932318056212bc4f8bfdf53128c78bbd5af0b9b20b189", size = 57328, upload-time = "2026-04-27T01:46:07.06Z" }, +] + +[[package]] +name = "pillow" +version = "11.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f3/0d/d0d6dea55cd152ce3d6767bb38a8fc10e33796ba4ba210cbab9354b6d238/pillow-11.3.0.tar.gz", hash = "sha256:3828ee7586cd0b2091b6209e5ad53e20d0649bbe87164a459d0676e035e8f523", size = 47113069, upload-time = "2025-07-01T09:16:30.666Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4c/5d/45a3553a253ac8763f3561371432a90bdbe6000fbdcf1397ffe502aa206c/pillow-11.3.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:1b9c17fd4ace828b3003dfd1e30bff24863e0eb59b535e8f80194d9cc7ecf860", size = 5316554, upload-time = "2025-07-01T09:13:39.342Z" }, + { url = "https://files.pythonhosted.org/packages/7c/c8/67c12ab069ef586a25a4a79ced553586748fad100c77c0ce59bb4983ac98/pillow-11.3.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:65dc69160114cdd0ca0f35cb434633c75e8e7fad4cf855177a05bf38678f73ad", size = 4686548, upload-time = "2025-07-01T09:13:41.835Z" }, + { url = "https://files.pythonhosted.org/packages/db/26/77f8ed17ca4ffd60e1dcd220a6ec6d71210ba398cfa33a13a1cd614c5613/pillow-11.3.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:1cd110edf822773368b396281a2293aeb91c90a2db00d78ea43e7e861631b722", size = 5316531, upload-time = "2025-07-01T09:13:59.203Z" }, + { url = "https://files.pythonhosted.org/packages/cb/39/ee475903197ce709322a17a866892efb560f57900d9af2e55f86db51b0a5/pillow-11.3.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9c412fddd1b77a75aa904615ebaa6001f169b26fd467b4be93aded278266b288", size = 4686560, upload-time = "2025-07-01T09:14:01.101Z" }, + { url = "https://files.pythonhosted.org/packages/40/fe/1bc9b3ee13f68487a99ac9529968035cca2f0a51ec36892060edcc51d06a/pillow-11.3.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:fdae223722da47b024b867c1ea0be64e0df702c5e0a60e27daad39bf960dd1e4", size = 5278800, upload-time = "2025-07-01T09:14:17.648Z" }, + { url = "https://files.pythonhosted.org/packages/2c/32/7e2ac19b5713657384cec55f89065fb306b06af008cfd87e572035b27119/pillow-11.3.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:921bd305b10e82b4d1f5e802b6850677f965d8394203d182f078873851dada69", size = 4686296, upload-time = "2025-07-01T09:14:19.828Z" }, + { url = "https://files.pythonhosted.org/packages/6f/8b/209bd6b62ce8367f47e68a218bffac88888fdf2c9fcf1ecadc6c3ec1ebc7/pillow-11.3.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:3cee80663f29e3843b68199b9d6f4f54bd1d4a6b59bdd91bceefc51238bcb967", size = 5270556, upload-time = "2025-07-01T09:16:09.961Z" }, + { url = "https://files.pythonhosted.org/packages/2e/e6/231a0b76070c2cfd9e260a7a5b504fb72da0a95279410fa7afd99d9751d6/pillow-11.3.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:b5f56c3f344f2ccaf0dd875d3e180f631dc60a51b314295a3e681fe8cf851fbe", size = 4654625, upload-time = "2025-07-01T09:16:11.913Z" }, + { url = "https://files.pythonhosted.org/packages/9e/e3/6fa84033758276fb31da12e5fb66ad747ae83b93c67af17f8c6ff4cc8f34/pillow-11.3.0-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:7c8ec7a017ad1bd562f93dbd8505763e688d388cde6e4a010ae1486916e713e6", size = 5270566, upload-time = "2025-07-01T09:16:19.801Z" }, + { url = "https://files.pythonhosted.org/packages/5b/ee/e8d2e1ab4892970b561e1ba96cbd59c0d28cf66737fc44abb2aec3795a4e/pillow-11.3.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:9ab6ae226de48019caa8074894544af5b53a117ccb9d3b3dcb2871464c829438", size = 4654618, upload-time = "2025-07-01T09:16:21.818Z" }, +] + +[[package]] +name = "pip" +version = "26.1.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/01/91/47e7d486260f618783899587af63ccf7980fb60245c3e63dd4571c6b57ad/pip-26.1.2.tar.gz", hash = "sha256:f49cd134c61cf2fd75e0ce2676db03e4054504a5a4986d00f8299ae632dc4605", size = 1840799, upload-time = "2026-05-31T17:33:58.56Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5d/95/6b5cb3461ea5673ba0995989746db58eb18b91b54dbf331e72f569540946/pip-26.1.2-py3-none-any.whl", hash = "sha256:382ff9f685ee3bc25864f820aa50505825f10f5458ffff07e30a6d96e5715cab", size = 1813144, upload-time = "2026-05-31T17:33:56.772Z" }, +] + +[[package]] +name = "platformdirs" +version = "4.10.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d7/47/e4501f49c178ae1d9f4a75073fda4204f52647993f075a9db4d14930e0c5/platformdirs-4.10.0.tar.gz", hash = "sha256:31e761a6a0ca04faf7353ea759bdba55652be214725111e5aac52dfa29d4bef7", size = 31224, upload-time = "2026-05-28T03:32:53.587Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/81/e6/cd9575ac904136b3cbf7aa7ee819ef86eedb7274e46f230e94ea4342e729/platformdirs-4.10.0-py3-none-any.whl", hash = "sha256:fb516cdb12eb0d857d0cd85a7c57cea4d060bee4578d6cf5a14dfdf8cbf8784a", size = 22743, upload-time = "2026-05-28T03:32:52.175Z" }, +] + +[[package]] +name = "pluggy" +version = "1.6.0" +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" }, +] + +[[package]] +name = "polars" +version = "1.42.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "polars-runtime-32", marker = "sys_platform == 'darwin'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/cb/91/a1d7809a6d399f0aa78d4d3a4f4daf411cb97ccfe7f236c08a01be5fc8a5/polars-1.42.0.tar.gz", hash = "sha256:283ddc923e47857924fbef36580d2e98d984a47c962bae4cbce9c0ebcc98989c", size = 740984, upload-time = "2026-06-24T05:20:13.727Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/08/4d/094819d251f2248999cb722125fd4e44ee79b753fe535338cbf442fbf45d/polars-1.42.0-py3-none-any.whl", hash = "sha256:ab10cac3f2d28a6e22e22bcac69c0e51fb33cd25aee1f45105782d4fe55a3e6a", size = 836855, upload-time = "2026-06-24T05:18:18.204Z" }, +] + +[[package]] +name = "polars-runtime-32" +version = "1.42.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/05/67/20759e9abbc61910cf948f5c28986ab25ef9e8009099b469d64d6a34a478/polars_runtime_32-1.42.0.tar.gz", hash = "sha256:c927e1930881fe0bf9629d12e5d44ebd4ecef2bfa02374dfc79feaa24054394f", size = 3042711, upload-time = "2026-06-24T05:20:15.715Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1c/62/8b83fca67d478e4a2b88cbba2fbff4d533052938ff96d598b7915fd9d235/polars_runtime_32-1.42.0-cp310-abi3-macosx_10_12_x86_64.whl", hash = "sha256:d235a5e8349797c16b70ad573fb9ddbd7f162796884bcbd25260908f8408affc", size = 53112358, upload-time = "2026-06-24T05:18:22.275Z" }, + { url = "https://files.pythonhosted.org/packages/cf/72/06d3d78b7e8e8d3c72ea9eee310950334d50986462b3c1d40f82972495a5/polars_runtime_32-1.42.0-cp310-abi3-macosx_11_0_arm64.whl", hash = "sha256:e7923db3bcb57e0edecde3be28629e0411414a15ef1a4c10c783ac5eadab2e1e", size = 47443757, upload-time = "2026-06-24T05:18:26.326Z" }, +] + +[[package]] +name = "pooch" +version = "1.9.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "packaging", marker = "sys_platform == 'darwin'" }, + { name = "platformdirs", marker = "sys_platform == 'darwin'" }, + { name = "requests", marker = "sys_platform == 'darwin'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/83/43/85ef45e8b36c6a48546af7b266592dc32d7f67837a6514d111bced6d7d75/pooch-1.9.0.tar.gz", hash = "sha256:de46729579b9857ffd3e741987a2f6d5e0e03219892c167c6578c0091fb511ed", size = 61788, upload-time = "2026-01-30T19:15:09.649Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2a/2d/d4bf65e47cea8ff2c794a600c4fd1273a7902f268757c531e0ee9f18aa58/pooch-1.9.0-py3-none-any.whl", hash = "sha256:f265597baa9f760d25ceb29d0beb8186c243d6607b0f60b83ecf14078dbc703b", size = 67175, upload-time = "2026-01-30T19:15:08.36Z" }, +] + +[[package]] +name = "pre-commit" +version = "4.6.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cfgv", marker = "sys_platform == 'darwin'" }, + { name = "identify", marker = "sys_platform == 'darwin'" }, + { name = "nodeenv", marker = "sys_platform == 'darwin'" }, + { name = "pyyaml", marker = "sys_platform == 'darwin'" }, + { name = "virtualenv", marker = "sys_platform == 'darwin'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/8e/22/2de9408ac81acbb8a7d05d4cc064a152ccf33b3d480ebe0cd292153db239/pre_commit-4.6.0.tar.gz", hash = "sha256:718d2208cef53fdc38206e40524a6d4d9576d103eb16f0fec11c875e7716e9d9", size = 198525, upload-time = "2026-04-21T20:31:41.613Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/80/6e/4b28b62ecb6aae56769c34a8ff1d661473ec1e9519e2d5f8b2c150086b26/pre_commit-4.6.0-py2.py3-none-any.whl", hash = "sha256:e2cf246f7299edcabcf15f9b0571fdce06058527f0a06535068a86d38089f29b", size = 226472, upload-time = "2026-04-21T20:31:40.092Z" }, +] + +[[package]] +name = "prompt-toolkit" +version = "3.0.52" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "wcwidth", marker = "sys_platform == 'darwin'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a1/96/06e01a7b38dce6fe1db213e061a4602dd6032a8a97ef6c1a862537732421/prompt_toolkit-3.0.52.tar.gz", hash = "sha256:28cde192929c8e7321de85de1ddbe736f1375148b02f2e17edd840042b1be855", size = 434198, upload-time = "2025-08-27T15:24:02.057Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/84/03/0d3ce49e2505ae70cf43bc5bb3033955d2fc9f932163e84dc0779cc47f48/prompt_toolkit-3.0.52-py3-none-any.whl", hash = "sha256:9aac639a3bbd33284347de5ad8d68ecc044b91a762dc39b7c21095fcd6a19955", size = 391431, upload-time = "2025-08-27T15:23:59.498Z" }, +] + +[[package]] +name = "propcache" +version = "0.5.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ec/44/c87281c333769159c50594f22610f77398a47ccbfbbf23074e744e86f87c/propcache-0.5.2.tar.gz", hash = "sha256:01c4fc7480cd0598bb4b57022df55b9ca296da7fc5a8760bd8451a7e63a7d427", size = 50208, upload-time = "2026-05-08T21:02:12.199Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5b/56/030b7b4719d53085722893e0009dffb9236aa10bca1b12121bdc5626ef16/propcache-0.5.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d5a81be28596d6559f6131ef33e10200de6e17643b3c74ce03f9eb103be6ae8b", size = 93417, upload-time = "2026-05-08T20:59:15.597Z" }, + { url = "https://files.pythonhosted.org/packages/1a/55/1140a8e067b8ec093a18a4ae7bb0045d9db65da38a08618ddc5e2f1994aa/propcache-0.5.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:29cbaac5ea0212663e6845e04b5e188d5a6ae6dd919810ac835bf1d3b42c3f4c", size = 53847, upload-time = "2026-05-08T20:59:17.096Z" }, + { url = "https://files.pythonhosted.org/packages/20/42/0e7443c90310498561addf346e7d57fe3c6ba1914e1ba938b5464c7bbfd2/propcache-0.5.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6bf3be92233808fcd338eba0fb4d0b59ec5772af4f4ecfcec450d1bfc0f8b5eb", size = 53512, upload-time = "2026-05-08T20:59:18.64Z" }, + { url = "https://files.pythonhosted.org/packages/e7/f1/8a8cc1c2c7e7934ab77e0163414f736fadbc0f5e8dd9673b952355ac175b/propcache-0.5.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:74b70780220e2dd89175ca24b81b68b67c83db499ae611e7f2313cb329801c78", size = 90744, upload-time = "2026-05-08T20:59:45.799Z" }, + { url = "https://files.pythonhosted.org/packages/c2/f4/651b1225e976bd1a2ba5cfba0c29d096581c2636b437e3a9a7ab6276270a/propcache-0.5.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a4840ab0ae0216d952f4b53dc6d0b992bfc2bedbfe360bdd9b548bc184c08959", size = 52033, upload-time = "2026-05-08T20:59:47.408Z" }, + { url = "https://files.pythonhosted.org/packages/15/a8/8ede85d6aa1f79fc7dc2f8fd2c8d65920b8272c3892903c8a1affde48cfb/propcache-0.5.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c6844ba6364fb12f403928a82cfd295ab103a2b315c77c747b2dbe4a41894ea7", size = 52754, upload-time = "2026-05-08T20:59:49.202Z" }, + { url = "https://files.pythonhosted.org/packages/4a/cb/e27bc2b2737a0bb49962b275efa051e8f1c35a936df7d5139b6b658b7dc9/propcache-0.5.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:806719138ecd720339a12410fb9614ac9b2b2d3a5fdf8235d56981c36f4039ba", size = 95887, upload-time = "2026-05-08T21:00:11.277Z" }, + { url = "https://files.pythonhosted.org/packages/e6/13/b8ae04c59392f8d11c6cd9fb4011d1dc7c86b81225c770280300e259ffe1/propcache-0.5.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:db2b80ea58eab4f86b2beec3cc8b39e8ff9276ac20e96b7cce43c8ae84cd6b5a", size = 54654, upload-time = "2026-05-08T21:00:12.604Z" }, + { url = "https://files.pythonhosted.org/packages/2c/7d/49777a3e20b55863d4794384a38acd460c04157b0a00f8602b0d508b8431/propcache-0.5.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:e5cbfac9f61484f7e9f3597775500cd3ebe8274e9b050c38f9525c77c97520bf", size = 55190, upload-time = "2026-05-08T21:00:13.935Z" }, + { url = "https://files.pythonhosted.org/packages/3a/ed/1cdcab6ba3d6ab7feca11fc14f0eeea80755bb53ef4e892079f31b10a25f/propcache-0.5.2-py3-none-any.whl", hash = "sha256:be1ddfcbb376e3de5d2e2db1d58d6d67463e6b4f9f040c000de8e300295465fe", size = 14036, upload-time = "2026-05-08T21:02:10.673Z" }, +] + +[[package]] +name = "protobuf" +version = "4.25.9" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d9/8e/d08c41a8c004e1d437ef467e7c4f9c3295cd784eba48ed5d1d01f94b1dad/protobuf-4.25.9.tar.gz", hash = "sha256:b0dc7e7c68de8b1ce831dacb12fb407e838edbb8b6cc0dc3a2a6b4cbf6de9cff", size = 381040, upload-time = "2026-03-25T23:09:36.423Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/56/5b/0074a0a9eb01f3d1c4648ca5e81b22090c811b210b61df9018ac6d6c5cda/protobuf-4.25.9-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:9560813560e6ee72c11ca8873878bdb7ee003c96a57ebb013245fe84e2540904", size = 394826, upload-time = "2026-03-25T23:09:25.194Z" }, + { url = "https://files.pythonhosted.org/packages/16/28/d5065b212685875d3924bcdb3201cbf467cb4d58a18aa19a8dfd99ea80a9/protobuf-4.25.9-py3-none-any.whl", hash = "sha256:d49b615e7c935194ac161f0965699ac84df6112c378e05ec53da65d2e4cbb6d4", size = 156822, upload-time = "2026-03-25T23:09:34.957Z" }, +] + +[[package]] +name = "psutil" +version = "7.2.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/aa/c6/d1ddf4abb55e93cebc4f2ed8b5d6dbad109ecb8d63748dd2b20ab5e57ebe/psutil-7.2.2.tar.gz", hash = "sha256:0746f5f8d406af344fd547f1c8daa5f5c33dbc293bb8d6a16d80b4bb88f59372", size = 493740, upload-time = "2026-01-28T18:14:54.428Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e7/36/5ee6e05c9bd427237b11b3937ad82bb8ad2752d72c6969314590dd0c2f6e/psutil-7.2.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:ed0cace939114f62738d808fdcecd4c869222507e266e574799e9c0faa17d486", size = 129090, upload-time = "2026-01-28T18:15:22.168Z" }, + { url = "https://files.pythonhosted.org/packages/80/c4/f5af4c1ca8c1eeb2e92ccca14ce8effdeec651d5ab6053c589b074eda6e1/psutil-7.2.2-cp36-abi3-macosx_11_0_arm64.whl", hash = "sha256:1a7b04c10f32cc88ab39cbf606e117fd74721c831c98a27dc04578deb0c16979", size = 129859, upload-time = "2026-01-28T18:15:23.795Z" }, +] + +[[package]] +name = "pycparser" +version = "3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/1b/7d/92392ff7815c21062bea51aa7b87d45576f649f16458d78b7cf94b9ab2e6/pycparser-3.0.tar.gz", hash = "sha256:600f49d217304a5902ac3c37e1281c9fe94e4d0489de643a9504c5cdfdfc6b29", size = 103492, upload-time = "2026-01-21T14:26:51.89Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0c/c3/44f3fbbfa403ea2a7c779186dc20772604442dde72947e7d01069cbe98e3/pycparser-3.0-py3-none-any.whl", hash = "sha256:b727414169a36b7d524c1c3e31839a521725078d7b2ff038656844266160a992", size = 48172, upload-time = "2026-01-21T14:26:50.693Z" }, +] + +[[package]] +name = "pydantic" +version = "2.12.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "annotated-types", marker = "sys_platform == 'darwin'" }, + { name = "pydantic-core", marker = "sys_platform == 'darwin'" }, + { name = "typing-extensions", marker = "sys_platform == 'darwin'" }, + { name = "typing-inspection", marker = "sys_platform == 'darwin'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f3/1e/4f0a3233767010308f2fd6bd0814597e3f63f1dc98304a9112b8759df4ff/pydantic-2.12.3.tar.gz", hash = "sha256:1da1c82b0fc140bb0103bc1441ffe062154c8d38491189751ee00fd8ca65ce74", size = 819383, upload-time = "2025-10-17T15:04:21.222Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a1/6b/83661fa77dcefa195ad5f8cd9af3d1a7450fd57cc883ad04d65446ac2029/pydantic-2.12.3-py3-none-any.whl", hash = "sha256:6986454a854bc3bc6e5443e1369e06a3a456af9d339eda45510f517d9ea5c6bf", size = 462431, upload-time = "2025-10-17T15:04:19.346Z" }, +] + +[[package]] +name = "pydantic-core" +version = "2.41.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions", marker = "sys_platform == 'darwin'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/df/18/d0944e8eaaa3efd0a91b0f1fc537d3be55ad35091b6a87638211ba691964/pydantic_core-2.41.4.tar.gz", hash = "sha256:70e47929a9d4a1905a67e4b687d5946026390568a8e952b92824118063cee4d5", size = 457557, upload-time = "2025-10-14T10:23:47.909Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a7/3d/9b8ca77b0f76fcdbf8bc6b72474e264283f461284ca84ac3fde570c6c49a/pydantic_core-2.41.4-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:2442d9a4d38f3411f22eb9dd0912b7cbf4b7d5b6c92c4173b75d3e1ccd84e36e", size = 2111197, upload-time = "2025-10-14T10:19:43.303Z" }, + { url = "https://files.pythonhosted.org/packages/59/92/b7b0fe6ed4781642232755cb7e56a86e2041e1292f16d9ae410a0ccee5ac/pydantic_core-2.41.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:30a9876226dda131a741afeab2702e2d127209bde3c65a2b8133f428bc5d006b", size = 1917909, upload-time = "2025-10-14T10:19:45.194Z" }, + { url = "https://files.pythonhosted.org/packages/62/4c/f6cbfa1e8efacd00b846764e8484fe173d25b8dab881e277a619177f3384/pydantic_core-2.41.4-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:28ff11666443a1a8cf2a044d6a545ebffa8382b5f7973f22c36109205e65dc80", size = 2109062, upload-time = "2025-10-14T10:20:04.486Z" }, + { url = "https://files.pythonhosted.org/packages/21/f8/40b72d3868896bfcd410e1bd7e516e762d326201c48e5b4a06446f6cf9e8/pydantic_core-2.41.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:61760c3925d4633290292bad462e0f737b840508b4f722247d8729684f6539ae", size = 1916301, upload-time = "2025-10-14T10:20:06.857Z" }, + { url = "https://files.pythonhosted.org/packages/e9/81/d3b3e95929c4369d30b2a66a91db63c8ed0a98381ae55a45da2cd1cc1288/pydantic_core-2.41.4-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:ab06d77e053d660a6faaf04894446df7b0a7e7aba70c2797465a0a1af00fc887", size = 2099043, upload-time = "2025-10-14T10:20:28.561Z" }, + { url = "https://files.pythonhosted.org/packages/58/da/46fdac49e6717e3a94fc9201403e08d9d61aa7a770fab6190b8740749047/pydantic_core-2.41.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c53ff33e603a9c1179a9364b0a24694f183717b2e0da2b5ad43c316c956901b2", size = 1910699, upload-time = "2025-10-14T10:20:30.217Z" }, + { url = "https://files.pythonhosted.org/packages/b0/12/5ba58daa7f453454464f92b3ca7b9d7c657d8641c48e370c3ebc9a82dd78/pydantic_core-2.41.4-graalpy311-graalpy242_311_native-macosx_10_12_x86_64.whl", hash = "sha256:a1b2cfec3879afb742a7b0bcfa53e4f22ba96571c9e54d6a3afe1052d17d843b", size = 2122139, upload-time = "2025-10-14T10:22:47.288Z" }, + { url = "https://files.pythonhosted.org/packages/21/fb/6860126a77725c3108baecd10fd3d75fec25191d6381b6eb2ac660228eac/pydantic_core-2.41.4-graalpy311-graalpy242_311_native-macosx_11_0_arm64.whl", hash = "sha256:d175600d975b7c244af6eb9c9041f10059f20b8bbffec9e33fdd5ee3f67cdc42", size = 1936674, upload-time = "2025-10-14T10:22:49.555Z" }, + { url = "https://files.pythonhosted.org/packages/c4/48/ae937e5a831b7c0dc646b2ef788c27cd003894882415300ed21927c21efa/pydantic_core-2.41.4-graalpy312-graalpy250_312_native-macosx_10_12_x86_64.whl", hash = "sha256:4f5d640aeebb438517150fdeec097739614421900e4a08db4a3ef38898798537", size = 2112087, upload-time = "2025-10-14T10:22:56.818Z" }, + { url = "https://files.pythonhosted.org/packages/5e/db/6db8073e3d32dae017da7e0d16a9ecb897d0a4d92e00634916e486097961/pydantic_core-2.41.4-graalpy312-graalpy250_312_native-macosx_11_0_arm64.whl", hash = "sha256:4a9ab037b71927babc6d9e7fc01aea9e66dc2a4a34dff06ef0724a4049629f94", size = 1920387, upload-time = "2025-10-14T10:22:59.342Z" }, + { url = "https://files.pythonhosted.org/packages/5d/d4/912e976a2dd0b49f31c98a060ca90b353f3b73ee3ea2fd0030412f6ac5ec/pydantic_core-2.41.4-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:1e5ab4fc177dd41536b3c32b2ea11380dd3d4619a385860621478ac2d25ceb00", size = 2106739, upload-time = "2025-10-14T10:23:06.934Z" }, + { url = "https://files.pythonhosted.org/packages/71/f0/66ec5a626c81eba326072d6ee2b127f8c139543f1bf609b4842978d37833/pydantic_core-2.41.4-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:3d88d0054d3fa11ce936184896bed3c1c5441d6fa483b498fac6a5d0dd6f64a9", size = 1932549, upload-time = "2025-10-14T10:23:09.24Z" }, + { url = "https://files.pythonhosted.org/packages/7e/7d/138e902ed6399b866f7cfe4435d22445e16fff888a1c00560d9dc79a780f/pydantic_core-2.41.4-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:491535d45cd7ad7e4a2af4a5169b0d07bebf1adfd164b0368da8aa41e19907a5", size = 2104721, upload-time = "2025-10-14T10:23:26.906Z" }, + { url = "https://files.pythonhosted.org/packages/47/13/0525623cf94627f7b53b4c2034c81edc8491cbfc7c28d5447fa318791479/pydantic_core-2.41.4-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:54d86c0cada6aba4ec4c047d0e348cbad7063b87ae0f005d9f8c9ad04d4a92a2", size = 1931608, upload-time = "2025-10-14T10:23:29.306Z" }, +] + +[[package]] +name = "pydeprecate" +version = "0.9.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d4/1e/b069ea704e42fefeb523835ba3d712347ff672743e5fa9428f4201525328/pydeprecate-0.9.0.tar.gz", hash = "sha256:ed49a36506f63a8d4ae84ffedff1e2879733d536c7a6aaafdf8bfcd39520059b", size = 151667, upload-time = "2026-06-05T19:51:17.43Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/47/87/a155f16c1c17adccaa2ed2256484fe1c6ad37b925e8e39695ed8860bc0b5/pydeprecate-0.9.0-py3-none-any.whl", hash = "sha256:c9501dae1a2567a3c7f7b04221ad5a97d1ad972a02ddb729a04299b435fedd7c", size = 102725, upload-time = "2026-06-05T19:51:16.235Z" }, +] + +[[package]] +name = "pydub" +version = "0.25.1" +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" }, +] + +[[package]] +name = "pyee" +version = "13.0.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions", marker = "sys_platform == 'darwin'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/8b/04/e7c1fe4dc78a6fdbfd6c337b1c3732ff543b8a397683ab38378447baa331/pyee-13.0.1.tar.gz", hash = "sha256:0b931f7c14535667ed4c7e0d531716368715e860b988770fc7eb8578d1f67fc8", size = 31655, upload-time = "2026-02-14T21:12:28.044Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a0/c4/b4d4827c93ef43c01f599ef31453ccc1c132b353284fc6c87d535c233129/pyee-13.0.1-py3-none-any.whl", hash = "sha256:af2f8fede4171ef667dfded53f96e2ed0d6e6bd7ee3bb46437f77e3b57689228", size = 15659, upload-time = "2026-02-14T21:12:26.263Z" }, +] + +[[package]] +name = "pygments" +version = "2.20.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/c3/b2/bc9c9196916376152d655522fdcebac55e66de6603a76a02bca1b6414f6c/pygments-2.20.0.tar.gz", hash = "sha256:6757cd03768053ff99f3039c1a36d6c0aa0b263438fcab17520b30a303a82b5f", size = 4955991, upload-time = "2026-03-29T13:29:33.898Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f4/7e/a72dd26f3b0f4f2bf1dd8923c85f7ceb43172af56d63c7383eb62b332364/pygments-2.20.0-py3-none-any.whl", hash = "sha256:81a9e26dd42fd28a23a2d169d86d7ac03b46e2f8b59ed4698fb4785f946d0176", size = 1231151, upload-time = "2026-03-29T13:29:30.038Z" }, +] + +[[package]] +name = "pylibsrtp" +version = "1.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cffi", marker = "sys_platform == 'darwin'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/0d/a6/6e532bec974aaecbf9fe4e12538489fb1c28456e65088a50f305aeab9f89/pylibsrtp-1.0.0.tar.gz", hash = "sha256:b39dff075b263a8ded5377f2490c60d2af452c9f06c4d061c7a2b640612b34d4", size = 10858, upload-time = "2025-10-13T16:12:31.552Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/aa/af/89e61a62fa3567f1b7883feb4d19e19564066c2fcd41c37e08d317b51881/pylibsrtp-1.0.0-cp310-abi3-macosx_10_9_x86_64.whl", hash = "sha256:822c30ea9e759b333dc1f56ceac778707c51546e97eb874de98d7d378c000122", size = 1865017, upload-time = "2025-10-13T16:12:15.62Z" }, + { url = "https://files.pythonhosted.org/packages/8d/0e/8d215484a9877adcf2459a8b28165fc89668b034565277fd55d666edd247/pylibsrtp-1.0.0-cp310-abi3-macosx_11_0_arm64.whl", hash = "sha256:aaad74e5c8cbc1c32056c3767fea494c1e62b3aea2c908eda2a1051389fdad76", size = 2182739, upload-time = "2025-10-13T16:12:17.121Z" }, +] + +[[package]] +name = "pyopenssl" +version = "26.3.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cryptography", marker = "sys_platform == 'darwin'" }, + { name = "typing-extensions", marker = "sys_platform == 'darwin'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/74/b7/da07bae88f5a9506b4def6f2f4903cf4c3b8831e560dba8fa18ca08f758f/pyopenssl-26.3.0.tar.gz", hash = "sha256:589de7fae1c9ea670d18422ed00fc04da787bbde8e1454aea872aa57b49ad341", size = 182024, upload-time = "2026-06-12T20:28:07.458Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/54/18/1dd71c9b43192ab83f1d531ad6002dc81108ac36c475f79fb7a295abe2f4/pyopenssl-26.3.0-py3-none-any.whl", hash = "sha256:46367f8f66b92271e6d218da9c87607e1ef5a0bc5c8dea5bb3db82f395c385a3", size = 56008, upload-time = "2026-06-12T20:28:05.999Z" }, +] + +[[package]] +name = "pyparsing" +version = "3.3.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f3/91/9c6ee907786a473bf81c5f53cf703ba0957b23ab84c264080fb5a450416f/pyparsing-3.3.2.tar.gz", hash = "sha256:c777f4d763f140633dcb6d8a3eda953bf7a214dc4eff598413c070bcdc117cbc", size = 6851574, upload-time = "2026-01-21T03:57:59.36Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/10/bd/c038d7cc38edc1aa5bf91ab8068b63d4308c66c4c8bb3cbba7dfbc049f9c/pyparsing-3.3.2-py3-none-any.whl", hash = "sha256:850ba148bd908d7e2411587e247a1e4f0327839c40e2e5e6d05a007ecc69911d", size = 122781, upload-time = "2026-01-21T03:57:55.912Z" }, +] + +[[package]] +name = "pyserial" +version = "3.5" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/1e/7d/ae3f0a63f41e4d2f6cb66a5b57197850f919f59e558159a4dd3a818f5082/pyserial-3.5.tar.gz", hash = "sha256:3c77e014170dfffbd816e6ffc205e9842efb10be9f58ec16d3e8675b4925cddb", size = 159125, upload-time = "2020-11-23T03:59:15.045Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/07/bc/587a445451b253b285629263eb51c2d8e9bcea4fc97826266d186f96f558/pyserial-3.5-py2.py3-none-any.whl", hash = "sha256:c4451db6ba391ca6ca299fb3ec7bae67a5c55dde170964c7a14ceefec02f2cf0", size = 90585, upload-time = "2020-11-23T03:59:13.41Z" }, +] + +[[package]] +name = "pytest" +version = "9.1.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "exceptiongroup", marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, + { name = "iniconfig", marker = "sys_platform == 'darwin'" }, + { name = "packaging", marker = "sys_platform == 'darwin'" }, + { name = "pluggy", marker = "sys_platform == 'darwin'" }, + { name = "pygments", marker = "sys_platform == 'darwin'" }, + { name = "tomli", marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e4/47/b9efed96c114afcfa3c9d3fe98a76a1d14c74a9e266d397cf6eb64be5e01/pytest-9.1.1.tar.gz", hash = "sha256:1088fbde8f2b49d95a549a195707afa7a76a3ce9bcadc26b6d71f0ffda5fe313", size = 1636369, upload-time = "2026-06-19T10:58:32.857Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/24/25/1de2678b631f5a49215c6c96fff41ba892b0a34df68d6d80292b1b48aa7f/pytest-9.1.1-py3-none-any.whl", hash = "sha256:37a86b45efb9a47a61a36449063e8e18d0cab3161329fc099eb21783169c4f0c", size = 386536, upload-time = "2026-06-19T10:58:31.347Z" }, +] + +[[package]] +name = "pytest-asyncio" +version = "1.4.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "backports-asyncio-runner", marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, + { name = "pytest", marker = "sys_platform == 'darwin'" }, + { name = "typing-extensions", marker = "sys_platform == 'darwin'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/43/7c/d36d04db312ecf4298932ef77e6e4a9e8ad017906e24e34f0b0c361a2473/pytest_asyncio-1.4.0.tar.gz", hash = "sha256:c6c0d2259945122819f171a32ecea2c349ead889ee28176caaf492143424be42", size = 58514, upload-time = "2026-05-26T09:56:04.083Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/03/e2/08a497ef684b88559c9cc5f4ad53a37e7b99e727094a86d6ea32536d5d3c/pytest_asyncio-1.4.0-py3-none-any.whl", hash = "sha256:933ca923a23075a87fb7070c0ec272a6848489824d887c85c812670932835aa1", size = 16930, upload-time = "2026-05-26T09:56:02.576Z" }, +] + +[[package]] +name = "python-dateutil" +version = "2.9.0.post0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "six", marker = "sys_platform == 'darwin'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/66/c0/0c8b6ad9f17a802ee498c46e004a0eb49bc148f2fd230864601a86dcf6db/python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3", size = 342432, upload-time = "2024-03-01T18:36:20.211Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427", size = 229892, upload-time = "2024-03-01T18:36:18.57Z" }, +] + +[[package]] +name = "python-discovery" +version = "1.4.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "filelock", marker = "sys_platform == 'darwin'" }, + { name = "platformdirs", marker = "sys_platform == 'darwin'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/0b/1a/cbbaf13b730abb0a16b964d984e19f2fe520c21a4dc664051359a3f5a9e7/python_discovery-1.4.2.tar.gz", hash = "sha256:8f3746c4b4968d22afbb97d36e1a0e5b66e6c0f297290f2e95f05b9b8bf18690", size = 70277, upload-time = "2026-06-11T16:10:42.383Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1a/82/a70006589557f267f15bd384c0642ad49f0d97b690c3a05b166b9dcbad3b/python_discovery-1.4.2-py3-none-any.whl", hash = "sha256:475803f53b7b2ed6e490e27373f9d8340f7d2eebf9acdaf645d7d714c97bb500", size = 33886, upload-time = "2026-06-11T16:10:41.192Z" }, +] + +[[package]] +name = "python-dotenv" +version = "1.2.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/82/ed/0301aeeac3e5353ef3d94b6ec08bbcabd04a72018415dcb29e588514bba8/python_dotenv-1.2.2.tar.gz", hash = "sha256:2c371a91fbd7ba082c2c1dc1f8bf89ca22564a087c2c287cd9b662adde799cf3", size = 50135, upload-time = "2026-03-01T16:00:26.196Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0b/d7/1959b9648791274998a9c3526f6d0ec8fd2233e4d4acce81bbae76b44b2a/python_dotenv-1.2.2-py3-none-any.whl", hash = "sha256:1d8214789a24de455a8b8bd8ae6fe3c6b69a5e3d64aa8a8e5d68e694bbcb285a", size = 22101, upload-time = "2026-03-01T16:00:25.09Z" }, +] + +[[package]] +name = "python-gitlab" +version = "6.5.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "requests", marker = "sys_platform == 'darwin'" }, + { name = "requests-toolbelt", marker = "sys_platform == 'darwin'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/9a/bd/b30f1d3b303cb5d3c72e2d57a847d699e8573cbdfd67ece5f1795e49da1c/python_gitlab-6.5.0.tar.gz", hash = "sha256:97553652d94b02de343e9ca92782239aa2b5f6594c5482331a9490d9d5e8737d", size = 400591, upload-time = "2025-10-17T21:40:02.89Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/34/bd/b0d440685fbcafee462bed793a74aea88541887c4c30556a55ac64914b8d/python_gitlab-6.5.0-py3-none-any.whl", hash = "sha256:494e1e8e5edd15286eaf7c286f3a06652688f1ee20a49e2a0218ddc5cc475e32", size = 144419, upload-time = "2025-10-17T21:40:01.233Z" }, +] + +[[package]] +name = "python-multipart" +version = "0.0.32" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/5b/42/55c32bb9b12693c092ad250a0e82edb5b31ddeda6eb772de5f308b3804ad/python_multipart-0.0.32.tar.gz", hash = "sha256:be54b7f3fa167bb83e4fcd936b887b708f4e57fe75911c02aebf53efaf8d938e", size = 46881, upload-time = "2026-06-04T16:18:58.647Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e1/04/e8135ebd1ad02c56ec633277529b2602ff99ff634be76cdba5744cf554fd/python_multipart-0.0.32-py3-none-any.whl", hash = "sha256:ff6d3f776f16878c894e52e107296ffc890e913c611b1a4ec6c44e2821fe2e23", size = 30042, upload-time = "2026-06-04T16:18:57.319Z" }, +] + +[[package]] +name = "python-semantic-release" +version = "10.5.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "click", marker = "sys_platform == 'darwin'" }, + { name = "click-option-group", marker = "sys_platform == 'darwin'" }, + { name = "deprecated", marker = "sys_platform == 'darwin'" }, + { name = "dotty-dict", marker = "sys_platform == 'darwin'" }, + { name = "gitpython", marker = "sys_platform == 'darwin'" }, + { name = "importlib-resources", marker = "sys_platform == 'darwin'" }, + { name = "jinja2", marker = "sys_platform == 'darwin'" }, + { name = "pydantic", marker = "sys_platform == 'darwin'" }, + { name = "python-gitlab", marker = "sys_platform == 'darwin'" }, + { name = "requests", marker = "sys_platform == 'darwin'" }, + { name = "rich", marker = "sys_platform == 'darwin'" }, + { name = "shellingham", marker = "sys_platform == 'darwin'" }, + { name = "tomlkit", marker = "sys_platform == 'darwin'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/19/3a/7332b822825ed0e902c6e950e0d1e90e8f666fd12eb27855d1c8b6677eff/python_semantic_release-10.5.3.tar.gz", hash = "sha256:de4da78635fa666e5774caaca2be32063cae72431eb75e2ac23b9f2dfd190785", size = 618034, upload-time = "2025-12-14T22:37:29.782Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6b/01/ada29a1215df601bded0a2efd3b6d53864a0a9e0a9ea52aeaebe14fd03fd/python_semantic_release-10.5.3-py3-none-any.whl", hash = "sha256:1be0e07c36fa1f1ec9da4f438c1f6bbd7bc10eb0d6ac0089b0643103708c2823", size = 152716, upload-time = "2025-12-14T22:37:28.089Z" }, +] + +[[package]] +name = "pytz" +version = "2026.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ff/46/dd499ec9038423421951e4fad73051febaa13d2df82b4064f87af8b8c0c3/pytz-2026.2.tar.gz", hash = "sha256:0e60b47b29f21574376f218fe21abc009894a2321ea16c6754f3cad6eb7cdd6a", size = 320861, upload-time = "2026-05-04T01:35:29.667Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ec/dd/96da98f892250475bdf2328112d7468abdd4acc7b902b6af23f4ed958ea0/pytz-2026.2-py2.py3-none-any.whl", hash = "sha256:04156e608bee23d3792fd45c94ae47fae1036688e75032eea2e3bf0323d1f126", size = 510141, upload-time = "2026-05-04T01:35:27.408Z" }, +] + +[[package]] +name = "pyusb" +version = "1.3.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/00/6b/ce3727395e52b7b76dfcf0c665e37d223b680b9becc60710d4bc08b7b7cb/pyusb-1.3.1.tar.gz", hash = "sha256:3af070b607467c1c164f49d5b0caabe8ac78dbed9298d703a8dbf9df4052d17e", size = 77281, upload-time = "2025-01-08T23:45:01.866Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/28/b8/27e6312e86408a44fe16bd28ee12dd98608b39f7e7e57884a24e8f29b573/pyusb-1.3.1-py3-none-any.whl", hash = "sha256:bf9b754557af4717fe80c2b07cc2b923a9151f5c08d17bdb5345dac09d6a0430", size = 58465, upload-time = "2025-01-08T23:45:00.029Z" }, +] + +[[package]] +name = "pyyaml" +version = "6.0.3" +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/f4/a0/39350dd17dd6d6c6507025c0e53aef67a9293a6d37d3511f23ea510d5800/pyyaml-6.0.3-cp310-cp310-macosx_10_13_x86_64.whl", hash = "sha256:214ed4befebe12df36bcc8bc2b64b396ca31be9304b8f59e25c11cf94a4c033b", size = 184227, upload-time = "2025-09-25T21:31:46.04Z" }, + { url = "https://files.pythonhosted.org/packages/05/14/52d505b5c59ce73244f59c7a50ecf47093ce4765f116cdb98286a71eeca2/pyyaml-6.0.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:02ea2dfa234451bbb8772601d7b8e426c2bfa197136796224e50e35a78777956", size = 174019, upload-time = "2025-09-25T21:31:47.706Z" }, + { url = "https://files.pythonhosted.org/packages/6d/16/a95b6757765b7b031c9374925bb718d55e0a9ba8a1b6a12d25962ea44347/pyyaml-6.0.3-cp311-cp311-macosx_10_13_x86_64.whl", hash = "sha256:44edc647873928551a01e7a563d7452ccdebee747728c1080d881d68af7b997e", size = 185826, upload-time = "2025-09-25T21:31:58.655Z" }, + { url = "https://files.pythonhosted.org/packages/16/19/13de8e4377ed53079ee996e1ab0a9c33ec2faf808a4647b7b4c0d46dd239/pyyaml-6.0.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:652cb6edd41e718550aad172851962662ff2681490a8a711af6a4d288dd96824", size = 175577, upload-time = "2025-09-25T21:32:00.088Z" }, + { 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" }, + { url = "https://files.pythonhosted.org/packages/89/a0/6cf41a19a1f2f3feab0e9c0b74134aa2ce6849093d5517a0c550fe37a648/pyyaml-6.0.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:fc09d0aa354569bc501d4e787133afc08552722d3ab34836a80547331bb5d4a0", size = 173973, upload-time = "2025-09-25T21:32:12.492Z" }, +] + +[[package]] +name = "questionary" +version = "2.1.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "prompt-toolkit", marker = "sys_platform == 'darwin'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f6/45/eafb0bba0f9988f6a2520f9ca2df2c82ddfa8d67c95d6625452e97b204a5/questionary-2.1.1.tar.gz", hash = "sha256:3d7e980292bb0107abaa79c68dd3eee3c561b83a0f89ae482860b181c8bd412d", size = 25845, upload-time = "2025-08-28T19:00:20.851Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3c/26/1062c7ec1b053db9e499b4d2d5bc231743201b74051c973dadeac80a8f43/questionary-2.1.1-py3-none-any.whl", hash = "sha256:a51af13f345f1cdea62347589fbb6df3b290306ab8930713bfae4d475a7d4a59", size = 36753, upload-time = "2025-08-28T19:00:19.56Z" }, +] + +[[package]] +name = "reachy-mini" +version = "1.8.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "aiohttp", marker = "sys_platform == 'darwin'" }, + { name = "asgiref", marker = "sys_platform == 'darwin'" }, + { name = "fastapi", marker = "sys_platform == 'darwin'" }, + { name = "gstreamer-bundle", marker = "sys_platform == 'darwin'" }, + { name = "huggingface-hub", marker = "sys_platform == 'darwin'" }, + { name = "jinja2", marker = "sys_platform == 'darwin'" }, + { name = "libusb-package", marker = "sys_platform == 'darwin'" }, + { name = "log-throttling", marker = "sys_platform == 'darwin'" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, + { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' and sys_platform == 'darwin'" }, + { name = "pip", marker = "sys_platform == 'darwin'" }, + { name = "psutil", marker = "sys_platform == 'darwin'" }, + { name = "pyserial", marker = "sys_platform == 'darwin'" }, + { name = "python-multipart", marker = "sys_platform == 'darwin'" }, + { name = "pyusb", marker = "sys_platform == 'darwin'" }, + { name = "pyyaml", marker = "sys_platform == 'darwin'" }, + { name = "questionary", marker = "sys_platform == 'darwin'" }, + { name = "reachy-mini-motor-controller", marker = "sys_platform == 'darwin'" }, + { name = "reachy-mini-rust-kinematics", marker = "sys_platform == 'darwin'" }, + { name = "requests", marker = "sys_platform == 'darwin'" }, + { name = "rich", marker = "sys_platform == 'darwin'" }, + { name = "rustypot", marker = "sys_platform == 'darwin'" }, + { name = "scipy", version = "1.15.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, + { name = "scipy", version = "1.17.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.11.*' and sys_platform == 'darwin'" }, + { name = "scipy", version = "1.18.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.12' and sys_platform == 'darwin'" }, + { name = "starlette", marker = "sys_platform == 'darwin'" }, + { name = "toml", marker = "sys_platform == 'darwin'" }, + { name = "tornado", marker = "sys_platform == 'darwin'" }, + { name = "uvicorn", extra = ["standard"], marker = "sys_platform == 'darwin'" }, + { name = "websockets", marker = "sys_platform == 'darwin'" }, + { name = "zeroconf", marker = "sys_platform == 'darwin'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f9/20/a82cc900cef998cd8e9eff8bf6bf5a642e841b7daee12d74e184842a0d7d/reachy_mini-1.8.0.tar.gz", hash = "sha256:9c587f2386f1e11fe2f1fbfbcbffd191ee8dcf5cb1cd5fcd7621c2ab416a0dce", size = 24763681, upload-time = "2026-06-01T08:54:13.244Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2e/45/5a54ca987529754ddef55e9bd03cf2a553f79dc2e1bcf4262e661cc4bdae/reachy_mini-1.8.0-py3-none-any.whl", hash = "sha256:5dd686e77c158fe54528b706a0d51feb3c9d2d7b4a09f762a36cb24472254fd8", size = 24864618, upload-time = "2026-06-01T08:54:09.518Z" }, +] + +[[package]] +name = "reachy-mini-conversation-app" +version = "0.3.0" +source = { editable = "." } +dependencies = [ + { name = "aiortc", marker = "sys_platform == 'darwin'" }, + { name = "eclipse-zenoh", marker = "sys_platform == 'darwin'" }, + { name = "fastrtc", marker = "sys_platform == 'darwin'" }, + { name = "gradio", marker = "sys_platform == 'darwin'" }, + { name = "gradio-client", marker = "sys_platform == 'darwin'" }, + { name = "huggingface-hub", marker = "sys_platform == 'darwin'" }, + { name = "openai", marker = "sys_platform == 'darwin'" }, + { name = "opencv-python", marker = "sys_platform == 'darwin'" }, + { name = "python-dotenv", marker = "sys_platform == 'darwin'" }, + { name = "reachy-mini", marker = "sys_platform == 'darwin'" }, + { name = "reachy-mini-dances-library", marker = "sys_platform == 'darwin'" }, + { name = "reachy-mini-toolbox", marker = "sys_platform == 'darwin'" }, +] + +[package.optional-dependencies] +all-vision = [ + { name = "mediapipe", marker = "sys_platform == 'darwin'" }, + { name = "num2words", marker = "sys_platform == 'darwin'" }, + { name = "supervision", marker = "sys_platform == 'darwin'" }, + { name = "torch", marker = "sys_platform == 'darwin'" }, + { name = "transformers", marker = "sys_platform == 'darwin'" }, + { name = "ultralytics", marker = "sys_platform == 'darwin'" }, +] +local-vision = [ + { name = "num2words", marker = "sys_platform == 'darwin'" }, + { name = "torch", marker = "sys_platform == 'darwin'" }, + { name = "transformers", marker = "sys_platform == 'darwin'" }, +] +mediapipe-vision = [ + { name = "mediapipe", marker = "sys_platform == 'darwin'" }, +] +yolo-vision = [ + { name = "supervision", marker = "sys_platform == 'darwin'" }, + { name = "ultralytics", marker = "sys_platform == 'darwin'" }, +] + +[package.dev-dependencies] +dev = [ + { name = "mypy", marker = "sys_platform == 'darwin'" }, + { name = "pre-commit", marker = "sys_platform == 'darwin'" }, + { name = "pytest", marker = "sys_platform == 'darwin'" }, + { name = "pytest-asyncio", marker = "sys_platform == 'darwin'" }, + { name = "python-semantic-release", marker = "sys_platform == 'darwin'" }, + { name = "ruff", marker = "sys_platform == 'darwin'" }, + { name = "types-requests", marker = "sys_platform == 'darwin'" }, +] + +[package.metadata] +requires-dist = [ + { name = "aiortc", specifier = ">=1.13.0" }, + { name = "eclipse-zenoh", specifier = "~=1.7.0" }, + { name = "fastrtc", specifier = ">=0.0.34" }, + { name = "gradio", specifier = "==5.50.1.dev1" }, + { name = "gradio-client", specifier = ">=1.13.3" }, + { name = "huggingface-hub", specifier = "==1.3.0" }, + { name = "mediapipe", marker = "extra == 'all-vision'", specifier = "==0.10.14" }, + { name = "mediapipe", marker = "extra == 'mediapipe-vision'", specifier = "==0.10.14" }, + { name = "num2words", marker = "extra == 'all-vision'" }, + { name = "num2words", marker = "extra == 'local-vision'" }, + { name = "openai", specifier = ">=2.1" }, + { name = "opencv-python", specifier = ">=4.12.0.88" }, + { name = "python-dotenv" }, + { name = "reachy-mini", specifier = "==1.8.0" }, + { name = "reachy-mini-dances-library" }, + { name = "reachy-mini-toolbox" }, + { name = "supervision", marker = "extra == 'all-vision'" }, + { name = "supervision", marker = "extra == 'yolo-vision'" }, + { name = "torch", marker = "extra == 'all-vision'", specifier = ">=2.1" }, + { name = "torch", marker = "extra == 'local-vision'", specifier = ">=2.1" }, + { name = "transformers", marker = "extra == 'all-vision'", specifier = "==5.0.0rc2" }, + { name = "transformers", marker = "extra == 'local-vision'", specifier = "==5.0.0rc2" }, + { name = "ultralytics", marker = "extra == 'all-vision'" }, + { name = "ultralytics", marker = "extra == 'yolo-vision'" }, +] +provides-extras = ["local-vision", "yolo-vision", "mediapipe-vision", "all-vision"] + +[package.metadata.requires-dev] +dev = [ + { name = "mypy", specifier = "==1.18.2" }, + { name = "pre-commit" }, + { name = "pytest" }, + { name = "pytest-asyncio" }, + { name = "python-semantic-release", specifier = ">=10.5.3" }, + { name = "ruff", specifier = "==0.12.0" }, + { name = "types-requests" }, +] + +[[package]] +name = "reachy-mini-dances-library" +version = "0.2.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "reachy-mini", marker = "sys_platform == 'darwin'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/5f/0e/7b26c96caf905e8e0cedff57251da4f953b1c2b97a611c86aee76318f5d1/reachy_mini_dances_library-0.2.1.tar.gz", hash = "sha256:f63fbb0e27f97c547f4e4487e8491495365b24c6f0d063780ef1da9fa5b1daf1", size = 14022, upload-time = "2025-10-15T16:09:00.965Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e2/52/69d2d0434019e72811f77bfe408e6781a8bee10639e480d9d6ac1b745f81/reachy_mini_dances_library-0.2.1-py3-none-any.whl", hash = "sha256:b3b2028dd92648b70c262535e9b77aa481a0a3dcf6f2ceece84c08b725cbbddf", size = 16159, upload-time = "2025-10-15T16:08:59.673Z" }, +] + +[[package]] +name = "reachy-mini-motor-controller" +version = "1.5.6" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/0a/d6/56ea0dc75f8d578cb7522df6e662a5efce32308276c16db1ac65b63228cc/reachy_mini_motor_controller-1.5.6.tar.gz", hash = "sha256:98cb6e9e48dbcb3e4c3649aef418ca8cafea9056a00501c35dea7e86a3a3ec65", size = 29494, upload-time = "2026-06-12T09:31:10.783Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/77/1b/2833fdedeefd2964571ed28a1655cc7edf30b7335db28c3d80168e125392/reachy_mini_motor_controller-1.5.6-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:862a35a819408f0fde403b8054e65cda414d2e60798806772ae118a70c76c239", size = 572333, upload-time = "2026-06-12T09:30:38.784Z" }, + { url = "https://files.pythonhosted.org/packages/95/5f/0ec2b1a5857110223ec1d1b043fd3dd7289c56e5265d895aa479d4fcf19b/reachy_mini_motor_controller-1.5.6-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9c713d0ea4cc81bb19fcf324fdb618230b75f0a828bdc364f7adff63273d3863", size = 561945, upload-time = "2026-06-12T09:30:32.683Z" }, + { url = "https://files.pythonhosted.org/packages/aa/8b/6bbaa215425fb55619c6ff679c4d4ec6a407ea9304036c5829264c2275f4/reachy_mini_motor_controller-1.5.6-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:6c88e37ab920e8a69a06986e97ef4ed34f850160277262f041968a857c231ada", size = 571868, upload-time = "2026-06-12T09:30:39.978Z" }, + { url = "https://files.pythonhosted.org/packages/46/43/e0ec7fe9ba338acd971592b5296b837b3b5f1182334dcc4fff26f87a07c0/reachy_mini_motor_controller-1.5.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3d89f1c20873c6d6799d6795b8e743ad39901c9411b6c05698b5c4076fea6a84", size = 562693, upload-time = "2026-06-12T09:30:33.995Z" }, + { url = "https://files.pythonhosted.org/packages/74/a3/16a365e978d844eb7e5e07343959fe62052c5d898d41a43b4925116e0549/reachy_mini_motor_controller-1.5.6-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:5b30fb45b5068d9bf119bdd39aa475e64dc41e9a1fb229fc70b4a4fdf7d48374", size = 570893, upload-time = "2026-06-12T09:30:41.107Z" }, + { url = "https://files.pythonhosted.org/packages/31/99/d7b704e513735f55f1e0ba8022e310cdd1a660240cb8959eb9fc6034efe6/reachy_mini_motor_controller-1.5.6-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2a0fa22b0ac5ba40556c6b94f886fd9128735b009725d082efa7728a6d12bc76", size = 558962, upload-time = "2026-06-12T09:30:35.274Z" }, +] + +[[package]] +name = "reachy-mini-rust-kinematics" +version = "1.0.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/80/c6/3eb42a0d760ab3c9289963b8d08c1214bd84048ffb098f1ef1cb769e24c1/reachy_mini_rust_kinematics-1.0.3.tar.gz", hash = "sha256:9a01d8335854f308e88ab621bc50e0d2437f56e84c0f1e31f9aa93ae2dfcd15c", size = 16814, upload-time = "2025-12-04T11:53:46.816Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/17/a2/3b1070b8b549cb2c7418cb98e46174e385c4e7ea4e60fcfd5e971a945f9f/reachy_mini_rust_kinematics-1.0.3-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:42531fd9ab6a60e41d2b44369b403c5132e10859ac52913e9dcd1e25ee38a1f1", size = 308210, upload-time = "2025-12-04T11:52:39.234Z" }, + { url = "https://files.pythonhosted.org/packages/82/ab/ddede49a951a21b6ed881dfc740c6a145c0bc629504f9e94e719e52dfad4/reachy_mini_rust_kinematics-1.0.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c92e0d60e6babf46a30fc74201287237a73e310735b64439e891883574d79c30", size = 287226, upload-time = "2025-12-04T11:52:32.075Z" }, + { url = "https://files.pythonhosted.org/packages/47/8c/b4fe36c6e757dde53106560a9b48f06750ba574b0b17c882bf0cb760ae19/reachy_mini_rust_kinematics-1.0.3-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:c9099ea546c2606d6d5631cd2575cdd7f59195eed46357dad32ea7e56bd98bae", size = 307764, upload-time = "2025-12-04T11:52:40.252Z" }, + { url = "https://files.pythonhosted.org/packages/69/67/0f6f8c25ace6cbf45548be0a6ed5f120d873ef7126924e5482c7117e0eb3/reachy_mini_rust_kinematics-1.0.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b0b51036747541de5699b5babce1f80410f9ecec761001bc6d458bf9e9132695", size = 286761, upload-time = "2025-12-04T11:52:33.126Z" }, + { url = "https://files.pythonhosted.org/packages/6c/db/66dfefea6cbac47eca53c098f4cc473cd6b39b9138f85a5e3f327f51e2da/reachy_mini_rust_kinematics-1.0.3-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:72db0e164ca6d208feb451c71cfb3dbcaf796ac6e337f1c744c0a168a0334014", size = 304146, upload-time = "2025-12-04T11:52:41.235Z" }, + { url = "https://files.pythonhosted.org/packages/71/1e/8ce70d974aed942a6c18dacdc574eba4962e85d70373cd004fc4ee3f9de7/reachy_mini_rust_kinematics-1.0.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:02f2e94ffae1d4d6ebfe40f80fd332fa7d9d6c28db78ee431aeeabd022ba51d7", size = 284209, upload-time = "2025-12-04T11:52:34.253Z" }, +] + +[[package]] +name = "reachy-mini-toolbox" +version = "1.1.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/25/30/b18ab0771b276ab9ba4e0071f5f8f81818b362574644e95bacd9eae2a4c2/reachy_mini_toolbox-1.1.2.tar.gz", hash = "sha256:0f9d7591e40cc9a5a19e01a32301b67a04e7dcc5af49e7b45adb85065ec37e56", size = 9789, upload-time = "2025-12-07T09:34:26.154Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e5/74/3507b27191937b013184e2e4bfc7868c8ab0d91e1578d22a0243b19754bc/reachy_mini_toolbox-1.1.2-py3-none-any.whl", hash = "sha256:ee9c4de4428292e19a90e02cc2d3b6e36c26538ef4dfccbfb7cbbd89a656071b", size = 10601, upload-time = "2025-12-07T09:34:24.824Z" }, +] + +[[package]] +name = "regex" +version = "2026.5.9" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/dc/0e/49aee608ad09480e7fd276898c99ec6192985fa331abe4eb3a986094490b/regex-2026.5.9.tar.gz", hash = "sha256:a8234aa23ec39894bfe4a3f1b85616a7032481964a13ac6fc9f10de4f6fca270", size = 416074, upload-time = "2026-05-09T23:15:19.37Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fe/ed/0ad2c8edf634918eb4484365d3819fa7bd7f58daf807fe7fb21812c316e5/regex-2026.5.9-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a9e1328e17c84c1a5d22ec9f785ecef4a967fab9a42b6a8dc3bcbebd0a0c9e44", size = 489438, upload-time = "2026-05-09T23:11:29.374Z" }, + { url = "https://files.pythonhosted.org/packages/89/a9/4ed972ad263963b860b7c3e86e0e1bcc791def47b43b8c8efe57e710f139/regex-2026.5.9-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:bfe1ce50cbfb569d74e1e4337da6468961f31dbea55fd85aa5de59c0947a805a", size = 291270, upload-time = "2026-05-09T23:11:33.254Z" }, + { url = "https://files.pythonhosted.org/packages/16/81/075930d9fa28c4ea1f53398dd015ee7c882f623539759113cda1257f4b82/regex-2026.5.9-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:15ee42209947f4ca045412eae98416317238163618ace2a8e54f99586a466733", size = 289198, upload-time = "2026-05-09T23:11:35.769Z" }, + { url = "https://files.pythonhosted.org/packages/c2/dc/c1f2df4027e82fc54b5a473e4b250f5139faca49a0fbe29a48668d228f34/regex-2026.5.9-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ccf5249114cc3e772ecdd88a98a86eca0fd74c61ce32a94743758c083fc05d48", size = 489445, upload-time = "2026-05-09T23:12:06.111Z" }, + { url = "https://files.pythonhosted.org/packages/03/d2/59f01110660081cce9c0bc30ebd0b5ee250dacf658e3248ed92f01e0e8ee/regex-2026.5.9-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:46f1326ca6e65b0879d23ca302c0f2415aad42ff0309b9c818e7949fe19a41d8", size = 291271, upload-time = "2026-05-09T23:12:07.731Z" }, + { url = "https://files.pythonhosted.org/packages/58/b6/14b2c84ff90ddb370c81d27503f4a0fcf071496416f4855f6cc8c5d81c35/regex-2026.5.9-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ef31cbfe458e21c6122ba8150ff060e0c7789ed0d26eb423f25472584920b555", size = 289212, upload-time = "2026-05-09T23:12:09.266Z" }, + { url = "https://files.pythonhosted.org/packages/50/9b/6550044bc44e17c84d312c031c2ec42fbdb6a4ec4e29093be3a172d08772/regex-2026.5.9-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:57eeeb05db7979413dec5438f2db21d7ecbba787cde7a711df1a6f6df672aa06", size = 490451, upload-time = "2026-05-09T23:12:34.72Z" }, + { url = "https://files.pythonhosted.org/packages/1e/95/fc7ba4303b5a0f92446a12ee6778ef2c6c799233f5060042a31bf390cfe9/regex-2026.5.9-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:398c521292f4c7fb807001dcd54694d3a1fcafc179a36ad9cc56f98df85930b6", size = 292112, upload-time = "2026-05-09T23:12:36.285Z" }, + { url = "https://files.pythonhosted.org/packages/54/4b/ee27938d1b2c443e89a9a10e00d2d19aa5ee300cd3d61140644e93bb083e/regex-2026.5.9-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f7a7c26137296beba7784de6eba69c6a93a63ccebc385e4962fe67e267a91225", size = 289599, upload-time = "2026-05-09T23:12:38.089Z" }, +] + +[[package]] +name = "requests" +version = "2.34.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "certifi", marker = "sys_platform == 'darwin'" }, + { name = "charset-normalizer", marker = "sys_platform == 'darwin'" }, + { name = "idna", marker = "sys_platform == 'darwin'" }, + { name = "urllib3", marker = "sys_platform == 'darwin'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ac/c3/e2a2b89f2d3e2179abd6d00ebd70bff6273f37fb3e0cc209f48b39d00cbf/requests-2.34.2.tar.gz", hash = "sha256:f288924cae4e29463698d6d60bc6a4da69c89185ad1e0bcc4104f584e960b9ed", size = 142856, upload-time = "2026-05-14T19:25:27.735Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a0/f4/c67b0b3f1b9245e8d266f0f112c500d50e5b4e83cb6f3b71b6528104182a/requests-2.34.2-py3-none-any.whl", hash = "sha256:2a0d60c172f83ac6ab31e4554906c0f3b3588d37b5cb939b1c061f4907e278e0", size = 73075, upload-time = "2026-05-14T19:25:26.443Z" }, +] + +[[package]] +name = "requests-toolbelt" +version = "1.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "requests", marker = "sys_platform == 'darwin'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f3/61/d7545dafb7ac2230c70d38d31cbfe4cc64f7144dc41f6e4e4b78ecd9f5bb/requests-toolbelt-1.0.0.tar.gz", hash = "sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6", size = 206888, upload-time = "2023-05-01T04:11:33.229Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3f/51/d4db610ef29373b879047326cbf6fa98b6c1969d6f6dc423279de2b1be2c/requests_toolbelt-1.0.0-py2.py3-none-any.whl", hash = "sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06", size = 54481, upload-time = "2023-05-01T04:11:28.427Z" }, +] + +[[package]] +name = "rich" +version = "14.3.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "markdown-it-py", marker = "sys_platform == 'darwin'" }, + { name = "pygments", marker = "sys_platform == 'darwin'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e9/67/cae617f1351490c25a4b8ac3b8b63a4dda609295d8222bad12242dfdc629/rich-14.3.4.tar.gz", hash = "sha256:817e02727f2b25b40ef56f5aa2217f400c8489f79ca8f46ea2b70dd5e14558a9", size = 230524, upload-time = "2026-04-11T02:57:45.419Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b3/76/6d163cfac87b632216f71879e6b2cf17163f773ff59c00b5ff4900a80fa3/rich-14.3.4-py3-none-any.whl", hash = "sha256:07e7adb4690f68864777b1450859253bed81a99a31ac321ac1817b2313558952", size = 310480, upload-time = "2026-04-11T02:57:47.484Z" }, +] + +[[package]] +name = "ruff" +version = "0.12.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/24/90/5255432602c0b196a0da6720f6f76b93eb50baef46d3c9b0025e2f9acbf3/ruff-0.12.0.tar.gz", hash = "sha256:4d047db3662418d4a848a3fdbfaf17488b34b62f527ed6f10cb8afd78135bc5c", size = 4376101, upload-time = "2025-06-17T15:19:26.217Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e7/d3/021dde5a988fa3e25d2468d1dadeea0ae89dc4bc67d0140c6e68818a12a1/ruff-0.12.0-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:05ed0c914fabc602fc1f3b42c53aa219e5736cb030cdd85640c32dbc73da74a6", size = 11118435, upload-time = "2025-06-17T15:18:49.064Z" }, + { url = "https://files.pythonhosted.org/packages/07/a2/01a5acf495265c667686ec418f19fd5c32bcc326d4c79ac28824aecd6a32/ruff-0.12.0-py3-none-macosx_11_0_arm64.whl", hash = "sha256:07a7aa9b69ac3fcfda3c507916d5d1bca10821fe3797d46bad10f2c6de1edda0", size = 10466010, upload-time = "2025-06-17T15:18:51.341Z" }, +] + +[[package]] +name = "rustypot" +version = "1.5.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/98/5d/dec9f5fc87bc0dc10f851e8d26ad27dc7680a69d1b69024f8091ddc4ebb3/rustypot-1.5.0.tar.gz", hash = "sha256:8e2a49c6d5562c8e5fb05b032a48f11afcf20fd244d42c956294d3b4bbdd6c91", size = 61436, upload-time = "2026-05-27T08:43:43.271Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e6/20/bc1d04e4007fa8b4269a54da3433a0a4a8a587f3137d6840fe49ae35edc0/rustypot-1.5.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:d5bea66838a27fc97b325441f2b134aa1770221aab9667e3adbe37c247e3170b", size = 1811820, upload-time = "2026-05-27T08:43:06.102Z" }, + { url = "https://files.pythonhosted.org/packages/73/aa/d1aead4ba8442e4f9025e2d44e1693b702921a0c1b015cb303da83594a82/rustypot-1.5.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:1b3bd37574ad37de6e27d4a42a16d8e2d14d98d2a9c4956ada490bc3d0e4cb68", size = 1633195, upload-time = "2026-05-27T08:42:57.569Z" }, + { url = "https://files.pythonhosted.org/packages/86/75/e02d49d393c66641a6d70d0460e3234aa1bc22c2ed67c1c442058eeada56/rustypot-1.5.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:81dac7c9d5f1a59aa903ca97c5d9a3537feb196904877a755c786c88db4bed65", size = 1811930, upload-time = "2026-05-27T08:43:08.171Z" }, + { url = "https://files.pythonhosted.org/packages/9b/00/10af39f4847995aa88c7de87c801cf62ab4e619f742b1ea9991932db4c6a/rustypot-1.5.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4ff7f191f744104ec74f75b77ca8605bf70c392388b5423168a23b2af87ceef1", size = 1634144, upload-time = "2026-05-27T08:42:59.394Z" }, + { url = "https://files.pythonhosted.org/packages/c5/d3/5462bda708c9c53ca472a5add4a0f3bf73f986081031077e277344ff2c42/rustypot-1.5.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:e975ccfd0023db621ad5d828ba55ccdd0e3f36dc480ffefbc98bc1cbe2ddfed3", size = 1778207, upload-time = "2026-05-27T08:43:09.762Z" }, + { url = "https://files.pythonhosted.org/packages/09/18/fc8d16fa7aca3167edbf866f84eb45f1896a4a7235d8f3861bf05be1236e/rustypot-1.5.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:5a799242f606d7635e4bf9668e1a149dede6ff16f4534ee3909bcb6ae9edf704", size = 1624935, upload-time = "2026-05-27T08:43:01.293Z" }, +] + +[[package]] +name = "safehttpx" +version = "0.1.7" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "httpx", marker = "sys_platform == 'darwin'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/89/d1/4282284d9cf1ee873607a46442da977fc3c985059315ab23610be31d5885/safehttpx-0.1.7.tar.gz", hash = "sha256:db201c0978c41eddb8bb480f3eee59dd67304fdd91646035e9d9a720049a9d23", size = 10385, upload-time = "2025-10-24T18:30:09.783Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2e/a3/0f0b7d78e2f1eb9e8e1afbff1d2bff8d60144aee17aca51c065b516743dd/safehttpx-0.1.7-py3-none-any.whl", hash = "sha256:c4f4a162db6993464d7ca3d7cc4af0ffc6515a606dfd220b9f82c6945d869cde", size = 8959, upload-time = "2025-10-24T18:30:08.733Z" }, +] + +[[package]] +name = "safetensors" +version = "0.8.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/45/06/f955dbbb1859e3bd23c8ac6141af5106e7ad5fedec4a3a6e3d60f94b7001/safetensors-0.8.0.tar.gz", hash = "sha256:fabaf3e0f18a6618d9b36560682562157f77c2b71fcffc7b432be2baed9d753d", size = 325846, upload-time = "2026-06-09T07:52:25.563Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/39/a0/f718cda65b05407d228f97602cf60dca269c979867aa5beb25410de26cd3/safetensors-0.8.0-cp310-abi3-macosx_10_12_x86_64.whl", hash = "sha256:c554f85858e05226d3c2828e32395e677434685d6d94594a41643361c5e837f0", size = 473568, upload-time = "2026-06-09T07:52:18.829Z" }, + { url = "https://files.pythonhosted.org/packages/f5/b1/fa7c600e7dceae12e9606c7578cbc9ff1e1ed55844883ee5c92205e86226/safetensors-0.8.0-cp310-abi3-macosx_11_0_arm64.whl", hash = "sha256:c80201d22cbf405b80647a60ada77bba06c8fba2da2743ba1e89cdcc39a81f25", size = 484562, upload-time = "2026-06-09T07:52:17.518Z" }, +] + +[[package]] +name = "scikit-learn" +version = "1.7.2" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.11' and sys_platform == 'darwin'", +] +dependencies = [ + { name = "joblib", marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, + { name = "scipy", version = "1.15.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, + { name = "threadpoolctl", marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/98/c2/a7855e41c9d285dfe86dc50b250978105dce513d6e459ea66a6aeb0e1e0c/scikit_learn-1.7.2.tar.gz", hash = "sha256:20e9e49ecd130598f1ca38a1d85090e1a600147b9c02fa6f15d69cb53d968fda", size = 7193136, upload-time = "2025-09-09T08:21:29.075Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ba/3e/daed796fd69cce768b8788401cc464ea90b306fb196ae1ffed0b98182859/scikit_learn-1.7.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:6b33579c10a3081d076ab403df4a4190da4f4432d443521674637677dc91e61f", size = 9336221, upload-time = "2025-09-09T08:20:19.328Z" }, + { url = "https://files.pythonhosted.org/packages/1c/ce/af9d99533b24c55ff4e18d9b7b4d9919bbc6cd8f22fe7a7be01519a347d5/scikit_learn-1.7.2-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:36749fb62b3d961b1ce4fedf08fa57a1986cd409eff2d783bca5d4b9b5fce51c", size = 8653834, upload-time = "2025-09-09T08:20:22.073Z" }, + { url = "https://files.pythonhosted.org/packages/43/83/564e141eef908a5863a54da8ca342a137f45a0bfb71d1d79704c9894c9d1/scikit_learn-1.7.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c7509693451651cd7361d30ce4e86a1347493554f172b1c72a39300fa2aea79e", size = 9331967, upload-time = "2025-09-09T08:20:32.421Z" }, + { url = "https://files.pythonhosted.org/packages/18/d6/ba863a4171ac9d7314c4d3fc251f015704a2caeee41ced89f321c049ed83/scikit_learn-1.7.2-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:0486c8f827c2e7b64837c731c8feff72c0bd2b998067a8a9cbc10643c31f0fe1", size = 8648645, upload-time = "2025-09-09T08:20:34.436Z" }, + { url = "https://files.pythonhosted.org/packages/a7/aa/3996e2196075689afb9fce0410ebdb4a09099d7964d061d7213700204409/scikit_learn-1.7.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:8d91a97fa2b706943822398ab943cde71858a50245e31bc71dba62aab1d60a96", size = 9259818, upload-time = "2025-09-09T08:20:43.19Z" }, + { url = "https://files.pythonhosted.org/packages/43/5d/779320063e88af9c4a7c2cf463ff11c21ac9c8bd730c4a294b0000b666c9/scikit_learn-1.7.2-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:acbc0f5fd2edd3432a22c69bed78e837c70cf896cd7993d71d51ba6708507476", size = 8636997, upload-time = "2025-09-09T08:20:45.468Z" }, +] + +[[package]] +name = "scikit-learn" +version = "1.9.0" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.12' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and sys_platform == 'darwin'", +] +dependencies = [ + { name = "joblib", marker = "python_full_version >= '3.11' and sys_platform == 'darwin'" }, + { name = "narwhals", marker = "python_full_version >= '3.11' and sys_platform == 'darwin'" }, + { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' and sys_platform == 'darwin'" }, + { name = "scipy", version = "1.17.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.11.*' and sys_platform == 'darwin'" }, + { name = "scipy", version = "1.18.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.12' and sys_platform == 'darwin'" }, + { name = "threadpoolctl", marker = "python_full_version >= '3.11' and sys_platform == 'darwin'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/fa/6f/37092bdb25f712817231799fc5674d8e704066a8a70c1d2d40517e18b4ab/scikit_learn-1.9.0.tar.gz", hash = "sha256:8833266989d3a5110178a9fae30783675460724d0e1efb13b14901d2c660c557", size = 7750767, upload-time = "2026-06-02T11:54:32.706Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f5/be/e844fd9586e66540a15b71924d17a6cbc1bb749e81ddd0a796bcdba4c055/scikit_learn-1.9.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:9db6f4d34e68c8899e4cab27fdf8eafe6ed21f2ba52ceb25ea250cd237f8e47b", size = 8789686, upload-time = "2026-06-02T11:53:05.439Z" }, + { url = "https://files.pythonhosted.org/packages/42/e2/ff880f62677a17d035817d543cb0fc8727d01eccbee81c5f7fc733a9d856/scikit_learn-1.9.0-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:f401448645a3e7bc115aa3c094097865155b34bff1cba8101857d9104e99074c", size = 8256782, upload-time = "2026-06-02T11:53:08.904Z" }, + { url = "https://files.pythonhosted.org/packages/ac/20/75f915ff375d6249e6550ac740fdbbd66159a068fd3af1400ff62036b07a/scikit_learn-1.9.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:2bd41b0d201bc81575531b96b713d3eb5e5f50fb0b82101ff0f92294fdc236ac", size = 8741122, upload-time = "2026-06-02T11:53:24.08Z" }, + { url = "https://files.pythonhosted.org/packages/cc/d5/2b5148f2279196775e1db2aeb85d14b70ac80e7e32b3b28e7ebeafb0901d/scikit_learn-1.9.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:5be45aa4a42a68a533913a6ed736cf309de2226411c79ef8d609a5456f1939b1", size = 8261512, upload-time = "2026-06-02T11:53:27.183Z" }, +] + +[[package]] +name = "scipy" +version = "1.15.3" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.11' and sys_platform == 'darwin'", +] +dependencies = [ + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/0f/37/6964b830433e654ec7485e45a00fc9a27cf868d622838f6b6d9c5ec0d532/scipy-1.15.3.tar.gz", hash = "sha256:eae3cf522bc7df64b42cad3925c876e1b0b6c35c1337c93e12c0f366f55b0eaf", size = 59419214, upload-time = "2025-05-08T16:13:05.955Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/78/2f/4966032c5f8cc7e6a60f1b2e0ad686293b9474b65246b0c642e3ef3badd0/scipy-1.15.3-cp310-cp310-macosx_10_13_x86_64.whl", hash = "sha256:a345928c86d535060c9c2b25e71e87c39ab2f22fc96e9636bd74d1dbf9de448c", size = 38702770, upload-time = "2025-05-08T16:04:20.849Z" }, + { url = "https://files.pythonhosted.org/packages/a0/6e/0c3bf90fae0e910c274db43304ebe25a6b391327f3f10b5dcc638c090795/scipy-1.15.3-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:ad3432cb0f9ed87477a8d97f03b763fd1d57709f1bbde3c9369b1dff5503b253", size = 30094511, upload-time = "2025-05-08T16:04:27.103Z" }, + { url = "https://files.pythonhosted.org/packages/ea/b1/4deb37252311c1acff7f101f6453f0440794f51b6eacb1aad4459a134081/scipy-1.15.3-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:aef683a9ae6eb00728a542b796f52a5477b78252edede72b8327a886ab63293f", size = 22368151, upload-time = "2025-05-08T16:04:31.731Z" }, + { url = "https://files.pythonhosted.org/packages/38/7d/f457626e3cd3c29b3a49ca115a304cebb8cc6f31b04678f03b216899d3c6/scipy-1.15.3-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:1c832e1bd78dea67d5c16f786681b28dd695a8cb1fb90af2e27580d3d0967e92", size = 25121732, upload-time = "2025-05-08T16:04:36.596Z" }, + { url = "https://files.pythonhosted.org/packages/96/ab/5cc9f80f28f6a7dff646c5756e559823614a42b1939d86dd0ed550470210/scipy-1.15.3-cp311-cp311-macosx_10_13_x86_64.whl", hash = "sha256:993439ce220d25e3696d1b23b233dd010169b62f6456488567e830654ee37a6b", size = 38714255, upload-time = "2025-05-08T16:05:14.596Z" }, + { url = "https://files.pythonhosted.org/packages/4a/4a/66ba30abe5ad1a3ad15bfb0b59d22174012e8056ff448cb1644deccbfed2/scipy-1.15.3-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:34716e281f181a02341ddeaad584205bd2fd3c242063bd3423d61ac259ca7eba", size = 30111035, upload-time = "2025-05-08T16:05:20.152Z" }, + { url = "https://files.pythonhosted.org/packages/4b/fa/a7e5b95afd80d24313307f03624acc65801846fa75599034f8ceb9e2cbf6/scipy-1.15.3-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:3b0334816afb8b91dab859281b1b9786934392aa3d527cd847e41bb6f45bee65", size = 22384499, upload-time = "2025-05-08T16:05:24.494Z" }, + { url = "https://files.pythonhosted.org/packages/17/99/f3aaddccf3588bb4aea70ba35328c204cadd89517a1612ecfda5b2dd9d7a/scipy-1.15.3-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:6db907c7368e3092e24919b5e31c76998b0ce1684d51a90943cb0ed1b4ffd6c1", size = 25152602, upload-time = "2025-05-08T16:05:29.313Z" }, + { url = "https://files.pythonhosted.org/packages/37/4b/683aa044c4162e10ed7a7ea30527f2cbd92e6999c10a8ed8edb253836e9c/scipy-1.15.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:6ac6310fdbfb7aa6612408bd2f07295bcbd3fda00d2d702178434751fe48e019", size = 38766735, upload-time = "2025-05-08T16:06:06.471Z" }, + { url = "https://files.pythonhosted.org/packages/7b/7e/f30be3d03de07f25dc0ec926d1681fed5c732d759ac8f51079708c79e680/scipy-1.15.3-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:185cd3d6d05ca4b44a8f1595af87f9c372bb6acf9c808e99aa3e9aa03bd98cf6", size = 30173284, upload-time = "2025-05-08T16:06:11.686Z" }, + { url = "https://files.pythonhosted.org/packages/07/9c/0ddb0d0abdabe0d181c1793db51f02cd59e4901da6f9f7848e1f96759f0d/scipy-1.15.3-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:05dc6abcd105e1a29f95eada46d4a3f251743cfd7d3ae8ddb4088047f24ea477", size = 22446958, upload-time = "2025-05-08T16:06:15.97Z" }, + { url = "https://files.pythonhosted.org/packages/af/43/0bce905a965f36c58ff80d8bea33f1f9351b05fad4beaad4eae34699b7a1/scipy-1.15.3-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:06efcba926324df1696931a57a176c80848ccd67ce6ad020c810736bfd58eb1c", size = 25242454, upload-time = "2025-05-08T16:06:20.394Z" }, +] + +[[package]] +name = "scipy" +version = "1.17.1" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version == '3.11.*' and sys_platform == 'darwin'", +] +dependencies = [ + { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.11.*' and sys_platform == 'darwin'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/7a/97/5a3609c4f8d58b039179648e62dd220f89864f56f7357f5d4f45c29eb2cc/scipy-1.17.1.tar.gz", hash = "sha256:95d8e012d8cb8816c226aef832200b1d45109ed4464303e997c5b13122b297c0", size = 30573822, upload-time = "2026-02-23T00:26:24.851Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/df/75/b4ce781849931fef6fd529afa6b63711d5a733065722d0c3e2724af9e40a/scipy-1.17.1-cp311-cp311-macosx_10_14_x86_64.whl", hash = "sha256:1f95b894f13729334fb990162e911c9e5dc1ab390c58aa6cbecb389c5b5e28ec", size = 31613675, upload-time = "2026-02-23T00:16:00.13Z" }, + { url = "https://files.pythonhosted.org/packages/f7/58/bccc2861b305abdd1b8663d6130c0b3d7cc22e8d86663edbc8401bfd40d4/scipy-1.17.1-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:e18f12c6b0bc5a592ed23d3f7b891f68fd7f8241d69b7883769eb5d5dfb52696", size = 28162057, upload-time = "2026-02-23T00:16:09.456Z" }, + { url = "https://files.pythonhosted.org/packages/6d/ee/18146b7757ed4976276b9c9819108adbc73c5aad636e5353e20746b73069/scipy-1.17.1-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:a3472cfbca0a54177d0faa68f697d8ba4c80bbdc19908c3465556d9f7efce9ee", size = 20334032, upload-time = "2026-02-23T00:16:17.358Z" }, + { url = "https://files.pythonhosted.org/packages/ec/e6/cef1cf3557f0c54954198554a10016b6a03b2ec9e22a4e1df734936bd99c/scipy-1.17.1-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:766e0dc5a616d026a3a1cffa379af959671729083882f50307e18175797b3dfd", size = 22709533, upload-time = "2026-02-23T00:16:25.791Z" }, + { url = "https://files.pythonhosted.org/packages/35/48/b992b488d6f299dbe3f11a20b24d3dda3d46f1a635ede1c46b5b17a7b163/scipy-1.17.1-cp312-cp312-macosx_10_14_x86_64.whl", hash = "sha256:35c3a56d2ef83efc372eaec584314bd0ef2e2f0d2adb21c55e6ad5b344c0dcb8", size = 31610954, upload-time = "2026-02-23T00:17:49.855Z" }, + { url = "https://files.pythonhosted.org/packages/b2/02/cf107b01494c19dc100f1d0b7ac3cc08666e96ba2d64db7626066cee895e/scipy-1.17.1-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:fcb310ddb270a06114bb64bbe53c94926b943f5b7f0842194d585c65eb4edd76", size = 28172662, upload-time = "2026-02-23T00:18:01.64Z" }, + { url = "https://files.pythonhosted.org/packages/cf/a9/599c28631bad314d219cf9ffd40e985b24d603fc8a2f4ccc5ae8419a535b/scipy-1.17.1-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:cc90d2e9c7e5c7f1a482c9875007c095c3194b1cfedca3c2f3291cdc2bc7c086", size = 20344366, upload-time = "2026-02-23T00:18:12.015Z" }, + { url = "https://files.pythonhosted.org/packages/35/f5/906eda513271c8deb5af284e5ef0206d17a96239af79f9fa0aebfe0e36b4/scipy-1.17.1-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:c80be5ede8f3f8eded4eff73cc99a25c388ce98e555b17d31da05287015ffa5b", size = 22704017, upload-time = "2026-02-23T00:18:21.502Z" }, +] + +[[package]] +name = "scipy" +version = "1.18.0" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.12' and sys_platform == 'darwin'", +] +dependencies = [ + { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.12' and sys_platform == 'darwin'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a7/25/c2700dfaf6442b4effaa91af24ebce5dc9d31bb4a69706313aae70d72cd0/scipy-1.18.0.tar.gz", hash = "sha256:67b2ad2ad54c72ca6d04975a9b2df8c3638c34ddd5b28738e94fc2b57929d378", size = 30774447, upload-time = "2026-06-19T15:01:43.456Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6a/19/ca10ead60b0acc80b2b833c2c4a4f2ff753d0f58b811f70d911c7e94a25c/scipy-1.18.0-cp312-cp312-macosx_10_15_x86_64.whl", hash = "sha256:7bd21faaf5a1a3b2eff922d02db5f191b99a6518db9078a8fb23169f6d22259a", size = 31056519, upload-time = "2026-06-19T14:59:45.203Z" }, + { url = "https://files.pythonhosted.org/packages/96/72/1e6442a00cd2924d361aa1b642ab6373ec35c6fabf311a760be9f76e0f13/scipy-1.18.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:265915e79107de9f946b855e50d7470d5893ec3f54b342e1aa6201cbdcd8bb6b", size = 28681889, upload-time = "2026-06-19T14:59:48.103Z" }, + { url = "https://files.pythonhosted.org/packages/9b/2d/11dd93d21e147a73ba22bd75c0b9208d3a2e0ec76d53170ce7d9029b1015/scipy-1.18.0-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:9ab7b758be6940954a713ee466e2043e9f6e2ed965c1fce5c91039f4be3d90a9", size = 20423580, upload-time = "2026-06-19T14:59:50.665Z" }, + { url = "https://files.pythonhosted.org/packages/9c/01/93552f75e0d2a7dd115a45e59209c51e8d514daff02fc887d2623be06fe1/scipy-1.18.0-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:97b6cddaaee0a779ef6b5ca83c9604b27cc16b2b8fc22c142652df8793319fb8", size = 23054441, upload-time = "2026-06-19T14:59:53.564Z" }, +] + +[[package]] +name = "semantic-version" +version = "2.10.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/7d/31/f2289ce78b9b473d582568c234e104d2a342fd658cc288a7553d83bb8595/semantic_version-2.10.0.tar.gz", hash = "sha256:bdabb6d336998cbb378d4b9db3a4b56a1e3235701dc05ea2690d9a997ed5041c", size = 52289, upload-time = "2022-05-26T13:35:23.454Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6a/23/8146aad7d88f4fcb3a6218f41a60f6c2d4e3a72de72da1825dc7c8f7877c/semantic_version-2.10.0-py2.py3-none-any.whl", hash = "sha256:de78a3b8e0feda74cabc54aab2da702113e33ac9d9eb9d2389bcf1f58b7d9177", size = 15552, upload-time = "2022-05-26T13:35:21.206Z" }, +] + +[[package]] +name = "setuptools" +version = "81.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/0d/1c/73e719955c59b8e424d015ab450f51c0af856ae46ea2da83eba51cc88de1/setuptools-81.0.0.tar.gz", hash = "sha256:487b53915f52501f0a79ccfd0c02c165ffe06631443a886740b91af4b7a5845a", size = 1198299, upload-time = "2026-02-06T21:10:39.601Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e1/e3/c164c88b2e5ce7b24d667b9bd83589cf4f3520d97cad01534cd3c4f55fdb/setuptools-81.0.0-py3-none-any.whl", hash = "sha256:fdd925d5c5d9f62e4b74b30d6dd7828ce236fd6ed998a08d81de62ce5a6310d6", size = 1062021, upload-time = "2026-02-06T21:10:37.175Z" }, +] + +[[package]] +name = "shellingham" +version = "1.5.4" +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" }, +] + +[[package]] +name = "six" +version = "1.17.0" +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" }, +] + +[[package]] +name = "smmap" +version = "5.0.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/1f/ea/49c993d6dfdd7338c9b1000a0f36817ed7ec84577ae2e52f890d1a4ff909/smmap-5.0.3.tar.gz", hash = "sha256:4d9debb8b99007ae47165abc08670bd74cb74b5227dda7f643eccc4e9eb5642c", size = 22506, upload-time = "2026-03-09T03:43:26.1Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c1/d4/59e74daffcb57a07668852eeeb6035af9f32cbfd7a1d2511f17d2fe6a738/smmap-5.0.3-py3-none-any.whl", hash = "sha256:c106e05d5a61449cf6ba9a1e650227ecfb141590d2a98412103ff35d89fc7b2f", size = 24390, upload-time = "2026-03-09T03:43:24.361Z" }, +] + +[[package]] +name = "sniffio" +version = "1.3.1" +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" }, +] + +[[package]] +name = "sounddevice" +version = "0.5.5" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cffi", marker = "sys_platform == 'darwin'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/2a/f9/2592608737553638fca98e21e54bfec40bf577bb98a61b2770c912aab25e/sounddevice-0.5.5.tar.gz", hash = "sha256:22487b65198cb5bf2208755105b524f78ad173e5ab6b445bdab1c989f6698df3", size = 143191, upload-time = "2026-01-23T18:36:43.529Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1e/0a/478e441fd049002cf308520c0d62dd8333e7c6cc8d997f0dda07b9fbcc46/sounddevice-0.5.5-py3-none-any.whl", hash = "sha256:30ff99f6c107f49d25ad16a45cacd8d91c25a1bcdd3e81a206b921a3a6405b1f", size = 32807, upload-time = "2026-01-23T18:36:35.649Z" }, + { url = "https://files.pythonhosted.org/packages/56/f9/c037c35f6d0b6bc3bc7bfb314f1d6f1f9a341328ef47cd63fc4f850a7b27/sounddevice-0.5.5-py3-none-macosx_10_6_x86_64.macosx_10_6_universal2.whl", hash = "sha256:05eb9fd6c54c38d67741441c19164c0dae8ce80453af2d8c4ad2e7823d15b722", size = 108557, upload-time = "2026-01-23T18:36:37.41Z" }, +] + +[[package]] +name = "soundfile" +version = "0.14.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cffi", marker = "sys_platform == 'darwin'" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, + { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' and sys_platform == 'darwin'" }, + { name = "typing-extensions", marker = "sys_platform == 'darwin'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/d2/db/949331952a6fb1c5b12e9de80fd08747966c2039d1a61db4764fbd3981c2/soundfile-0.14.0.tar.gz", hash = "sha256:ba1c1a2d618bca5c406647c83b89f07cc8810fa506a50622a6993ba130c1de11", size = 47842, upload-time = "2026-06-06T08:58:47.869Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b1/d1/5e338af9ca6ed0786cd5bb03f6d60de1c325728c1189014f3b59aae7403c/soundfile-0.14.0-py2.py3-none-any.whl", hash = "sha256:8ba81ae3a89fd5ab3bef8a8eb481fbbe794e806309675a89b4df48b8d31908a8", size = 26799, upload-time = "2026-06-06T08:58:33.269Z" }, + { url = "https://files.pythonhosted.org/packages/7e/72/c6b21e58d3113596e7e8de0a08d6f1d95173492cfbca0a4db14148cbba2a/soundfile-0.14.0-py2.py3-none-macosx_10_9_x86_64.whl", hash = "sha256:19be05428da76ed61a4cad29b8e4bcf43a3e5c100089d2ec81dc961eed1b0dd4", size = 1144568, upload-time = "2026-06-06T08:58:35.231Z" }, + { url = "https://files.pythonhosted.org/packages/63/7a/dfdd6f8c748988427119f75eb860a3cedd858d1aea1fe28f39ad8559ef22/soundfile-0.14.0-py2.py3-none-macosx_11_0_arm64.whl", hash = "sha256:d828d35a059626da52f1415b5faee610aeab393319cb3fc4a9aef47b619fc14c", size = 1103726, upload-time = "2026-06-06T08:58:37.948Z" }, +] + +[[package]] +name = "soxr" +version = "1.1.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, + { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' and sys_platform == 'darwin'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ed/11/27cebce4a108f77afea7c80545115536b45e3f11ebfb914f638fdd9ba847/soxr-1.1.0.tar.gz", hash = "sha256:9f228ae21c78fa9359ca98d8a5e8e91f30639e438e574133dace62c5b5309e44", size = 173067, upload-time = "2026-05-03T00:15:18.214Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/75/96/6b335638dd3ef4e5d50b9a0a7497e8433ab10fb45457497010074dd3c734/soxr-1.1.0-cp310-cp310-macosx_10_14_x86_64.whl", hash = "sha256:9564d82f7fa6bf548e5f18bb86235dff20eea8bd30727b64d49783c95c34fb8d", size = 205270, upload-time = "2026-05-03T00:14:38.391Z" }, + { url = "https://files.pythonhosted.org/packages/d5/0e/79e479b38f014757af877755c6eeea10c8750f66ef1e2231709f1d5dc7ab/soxr-1.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9443e5eb82152d8952422b7285692192cc7dcffa5218bb511b096203018bc273", size = 167049, upload-time = "2026-05-03T00:14:40.226Z" }, + { url = "https://files.pythonhosted.org/packages/8e/49/3e6bc84f87439f222f40b616e9a29a170f41fb564710ea510df19dc26907/soxr-1.1.0-cp311-cp311-macosx_10_14_x86_64.whl", hash = "sha256:34cc92208c3c412c046813e69da639c04a792c6a41fbfd7d909d359cd3e97a2d", size = 205699, upload-time = "2026-05-03T00:14:46.67Z" }, + { url = "https://files.pythonhosted.org/packages/2f/94/216f46096a85b07d1e6ba7fd44491402e912a3d688cd4f36f0a600ca155f/soxr-1.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:bd30f7201eac896ebf5db7b09156e6f1a1b82601900d29d9c8449bdad8365b11", size = 167381, upload-time = "2026-05-03T00:14:48.012Z" }, + { url = "https://files.pythonhosted.org/packages/06/8a/f3da7973b5f1b05d2d7e94d5376b881dcbc05297900cae6c3d33d95b209b/soxr-1.1.0-cp312-abi3-macosx_10_14_x86_64.whl", hash = "sha256:e0e09fa633ce2e67df08b298afced4d184f6e753fc330f241022250f1d0d61da", size = 204124, upload-time = "2026-05-03T00:14:54.505Z" }, + { url = "https://files.pythonhosted.org/packages/03/dc/200013a74641f8774664bbcd2346c695c05c2e300ea792adcb40a293eed0/soxr-1.1.0-cp312-abi3-macosx_11_0_arm64.whl", hash = "sha256:d6a7ad82b8d5f3fcc04b1d2ca055562b96af571e1d4fa7c6c61d0fb509ac43b4", size = 165457, upload-time = "2026-05-03T00:14:56.007Z" }, +] + +[[package]] +name = "starlette" +version = "0.52.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "anyio", marker = "sys_platform == 'darwin'" }, + { name = "typing-extensions", marker = "sys_platform == 'darwin'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c4/68/79977123bb7be889ad680d79a40f339082c1978b5cfcf62c2d8d196873ac/starlette-0.52.1.tar.gz", hash = "sha256:834edd1b0a23167694292e94f597773bc3f89f362be6effee198165a35d62933", size = 2653702, upload-time = "2026-01-18T13:34:11.062Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/81/0d/13d1d239a25cbfb19e740db83143e95c772a1fe10202dda4b76792b114dd/starlette-0.52.1-py3-none-any.whl", hash = "sha256:0029d43eb3d273bc4f83a08720b4912ea4b071087a3b48db01b7c839f7954d74", size = 74272, upload-time = "2026-01-18T13:34:09.188Z" }, +] + +[[package]] +name = "supervision" +version = "0.29.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "defusedxml", marker = "sys_platform == 'darwin'" }, + { name = "matplotlib", version = "3.10.9", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, + { name = "matplotlib", version = "3.11.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' and sys_platform == 'darwin'" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, + { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' and sys_platform == 'darwin'" }, + { name = "opencv-python", marker = "sys_platform == 'darwin'" }, + { name = "pillow", marker = "sys_platform == 'darwin'" }, + { name = "pydeprecate", marker = "sys_platform == 'darwin'" }, + { name = "pyyaml", marker = "sys_platform == 'darwin'" }, + { name = "requests", marker = "sys_platform == 'darwin'" }, + { name = "scipy", version = "1.15.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, + { name = "scipy", version = "1.17.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.11.*' and sys_platform == 'darwin'" }, + { name = "scipy", version = "1.18.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.12' and sys_platform == 'darwin'" }, + { name = "tqdm", marker = "sys_platform == 'darwin'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/dc/ec/293e5693ef5f32b54533b680b909a96976925adbb5c3bbfbf53b199182e0/supervision-0.29.1.tar.gz", hash = "sha256:2db9f968a3253e6778573c39bbb8a8e3fa586ece6c98fbdc41d8fd8508eda5af", size = 246950, upload-time = "2026-06-23T19:55:37.717Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1e/7c/ed95842ac2e323f6a0fcaf5a5bb56b62c0596a4b177872da9f7605ca1ceb/supervision-0.29.1-py3-none-any.whl", hash = "sha256:8518f6bad0d19ff7a959d1b9eb1b54517aded814aa7f237598fed0e3a772c281", size = 280218, upload-time = "2026-06-23T19:55:36.114Z" }, +] + +[[package]] +name = "sympy" +version = "1.14.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "mpmath", marker = "sys_platform == 'darwin'" }, +] +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", size = 6299353, upload-time = "2025-04-27T18:04:59.103Z" }, +] + +[[package]] +name = "threadpoolctl" +version = "3.6.0" +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" }, +] + +[[package]] +name = "tokenizers" +version = "0.22.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "huggingface-hub", marker = "sys_platform == 'darwin'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/73/6f/f80cfef4a312e1fb34baf7d85c72d4411afde10978d4657f8cdd811d3ccc/tokenizers-0.22.2.tar.gz", hash = "sha256:473b83b915e547aa366d1eee11806deaf419e17be16310ac0a14077f1e28f917", size = 372115, upload-time = "2026-01-05T10:45:15.988Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/92/97/5dbfabf04c7e348e655e907ed27913e03db0923abb5dfdd120d7b25630e1/tokenizers-0.22.2-cp39-abi3-macosx_10_12_x86_64.whl", hash = "sha256:544dd704ae7238755d790de45ba8da072e9af3eea688f698b137915ae959281c", size = 3100275, upload-time = "2026-01-05T10:41:02.158Z" }, + { url = "https://files.pythonhosted.org/packages/2e/47/174dca0502ef88b28f1c9e06b73ce33500eedfac7a7692108aec220464e7/tokenizers-0.22.2-cp39-abi3-macosx_11_0_arm64.whl", hash = "sha256:1e418a55456beedca4621dbab65a318981467a2b188e982a23e117f115ce5001", size = 2981472, upload-time = "2026-01-05T10:41:00.276Z" }, +] + +[[package]] +name = "toml" +version = "0.10.2" +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" }, +] + +[[package]] +name = "tomli" +version = "2.4.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/22/de/48c59722572767841493b26183a0d1cc411d54fd759c5607c4590b6563a6/tomli-2.4.1.tar.gz", hash = "sha256:7c7e1a961a0b2f2472c1ac5b69affa0ae1132c39adcb67aba98568702b9cc23f", size = 17543, upload-time = "2026-03-25T20:22:03.828Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f4/11/db3d5885d8528263d8adc260bb2d28ebf1270b96e98f0e0268d32b8d9900/tomli-2.4.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f8f0fc26ec2cc2b965b7a3b87cd19c5c6b8c5e5f436b984e85f486d652285c30", size = 154704, upload-time = "2026-03-25T20:21:10.473Z" }, + { url = "https://files.pythonhosted.org/packages/6d/f7/675db52c7e46064a9aa928885a9b20f4124ecb9bc2e1ce74c9106648d202/tomli-2.4.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4ab97e64ccda8756376892c53a72bd1f964e519c77236368527f758fbc36a53a", size = 149454, upload-time = "2026-03-25T20:21:12.036Z" }, + { url = "https://files.pythonhosted.org/packages/c1/ba/42f134a3fe2b370f555f44b1d72feebb94debcab01676bf918d0cb70e9aa/tomli-2.4.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:c742f741d58a28940ce01d58f0ab2ea3ced8b12402f162f4d534dfe18ba1cd6a", size = 155924, upload-time = "2026-03-25T20:21:21.626Z" }, + { url = "https://files.pythonhosted.org/packages/dc/c7/62d7a17c26487ade21c5422b646110f2162f1fcc95980ef7f63e73c68f14/tomli-2.4.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7f86fd587c4ed9dd76f318225e7d9b29cfc5a9d43de44e5754db8d1128487085", size = 150018, upload-time = "2026-03-25T20:21:23.002Z" }, + { url = "https://files.pythonhosted.org/packages/7b/61/cceae43728b7de99d9b847560c262873a1f6c98202171fd5ed62640b494b/tomli-2.4.1-py3-none-any.whl", hash = "sha256:0d85819802132122da43cb86656f8d1f8c6587d54ae7dcaf30e90533028b49fe", size = 14583, upload-time = "2026-03-25T20:22:03.012Z" }, +] + +[[package]] +name = "tomlkit" +version = "0.13.3" +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" }, +] + +[[package]] +name = "torch" +version = "2.12.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "filelock", marker = "sys_platform == 'darwin'" }, + { name = "fsspec", marker = "sys_platform == 'darwin'" }, + { name = "jinja2", marker = "sys_platform == 'darwin'" }, + { name = "networkx", version = "3.4.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, + { name = "networkx", version = "3.6.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' and sys_platform == 'darwin'" }, + { name = "setuptools", marker = "sys_platform == 'darwin'" }, + { name = "sympy", marker = "sys_platform == 'darwin'" }, + { name = "typing-extensions", marker = "sys_platform == 'darwin'" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/db/ed/ff0c4f8cef63977a646dc80e40c05cae873f4097b12dc87e1cd7e1cecf42/torch-2.12.1-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:ec56e82be6a8b0c036771a77f7d32ad3c299770571af9815b3dafe61434389d5", size = 87967927, upload-time = "2026-06-17T21:08:43.16Z" }, + { url = "https://files.pythonhosted.org/packages/59/38/7028d3be540f1dcdf41660a2b01d0c51d2cb73915fe370d84e4d277a6d47/torch-2.12.1-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:ef81f503912effea2ce3d9b12a2e3a6ed488943e91271c90c7a829f60baf6aa2", size = 87975425, upload-time = "2026-06-17T21:08:34.094Z" }, + { url = "https://files.pythonhosted.org/packages/f0/54/efb7ebca77970012b0cc21687a55d70eb2ba514b2c2b8e18d9fb1222f3be/torch-2.12.1-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:d2dd0f2c5f7ccbddaf34cade0deaf476808368f902b9cdb7f36a2ab42301bc0e", size = 87991951, upload-time = "2026-06-17T21:07:49.309Z" }, +] + +[[package]] +name = "torchvision" +version = "0.27.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, + { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' and sys_platform == 'darwin'" }, + { name = "pillow", marker = "sys_platform == 'darwin'" }, + { name = "torch", marker = "sys_platform == 'darwin'" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/c9/10/8e3e5a70dded1f86368bc987d93fa0436e73a79060aead75a8783b040ebd/torchvision-0.27.1-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:68ba63b48af92f06db995adb23d8411993dba1dee705a4e92411b83a00930b7f", size = 1852109, upload-time = "2026-06-17T21:09:34.966Z" }, + { url = "https://files.pythonhosted.org/packages/64/46/bc0ebd93282aeedc1759f054a252c6fadf14b42a0535db3233c85cce4ae5/torchvision-0.27.1-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:ad8743a9c12c8c124ad0a1491e54c3ca0c749e91e374e3d92136060b22c9e0f4", size = 1852118, upload-time = "2026-06-17T21:09:32.448Z" }, + { url = "https://files.pythonhosted.org/packages/88/82/2e8fdc19e4f0bbe31d403a55d78318bcea4afcd3083e1e4700ef61ebb893/torchvision-0.27.1-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:448abfc3baba984da4577f737209e445da6be93e3b5f4799d90162bf61e3f485", size = 1852105, upload-time = "2026-06-17T21:09:33.695Z" }, +] + +[[package]] +name = "tornado" +version = "6.5.7" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/64/24/95ec527ad67b76d59299e5465b3935d05e4294b7e0290a3924b7487df30b/tornado-6.5.7.tar.gz", hash = "sha256:66c513a76cda70d53907bc27cf1447557699c2e95aa48ba27a442ff61c3ddfc2", size = 519252, upload-time = "2026-06-08T17:34:51.232Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/02/dc/c7043cab6fed8ae159fc1923ce829ada35c4dbd797d408a43858ffaf9639/tornado-6.5.7-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:148b2eb15c2c765a50796172c1e499649b35f30d2e3c3d3e15913cfa56bfb163", size = 448543, upload-time = "2026-06-08T17:34:38.052Z" }, + { url = "https://files.pythonhosted.org/packages/92/4f/090b1431e5a43df696feceffc268c5383cc079ecb5f08ce58f917109aafe/tornado-6.5.7-cp39-abi3-macosx_10_9_x86_64.whl", hash = "sha256:9da38de27f1da3b78a966f0dae12b5a1ea9afe72ca805d84ff06508272ddf100", size = 446707, upload-time = "2026-06-08T17:34:39.594Z" }, +] + +[[package]] +name = "tqdm" +version = "4.68.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/87/d7/0535a28b1f5f24f6612fb3ff1e89fb1a8d160fee0f976e0aa6803862134b/tqdm-4.68.3.tar.gz", hash = "sha256:00dfa48452b6b6cfae3dd9885636c23d3422d1ec97c66d96818cbd5e0821d482", size = 170596, upload-time = "2026-06-17T07:36:52.105Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d8/8e/bb97bb0c71802080bfc8952937d174e49cfc50de5c951dd47b2496f0dcdb/tqdm-4.68.3-py3-none-any.whl", hash = "sha256:39832cc2def2789a6f29df83f172db7416cea70052c0907a57801c5f2fdccb03", size = 78337, upload-time = "2026-06-17T07:36:50.132Z" }, +] + +[[package]] +name = "transformers" +version = "5.0.0rc2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "filelock", marker = "sys_platform == 'darwin'" }, + { name = "huggingface-hub", marker = "sys_platform == 'darwin'" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, + { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' and sys_platform == 'darwin'" }, + { name = "packaging", marker = "sys_platform == 'darwin'" }, + { name = "pyyaml", marker = "sys_platform == 'darwin'" }, + { name = "regex", marker = "sys_platform == 'darwin'" }, + { name = "requests", marker = "sys_platform == 'darwin'" }, + { name = "safetensors", marker = "sys_platform == 'darwin'" }, + { name = "tokenizers", marker = "sys_platform == 'darwin'" }, + { name = "tqdm", marker = "sys_platform == 'darwin'" }, + { name = "typer-slim", marker = "sys_platform == 'darwin'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/94/e2/86b1bd5264272953370a5e50a91da38d7a53a87c5faf3fd3ff62d7353879/transformers-5.0.0rc2.tar.gz", hash = "sha256:9f2fa5e132433dd7eb910dc224b32de0baf758f3b6ffc918dbb632e0af85c07a", size = 8362532, upload-time = "2026-01-07T16:58:02.603Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b4/eb/9526a77354a2126f5b220f4792dc8494d573773c098dac6a5ad1fc7a5f17/transformers-5.0.0rc2-py3-none-any.whl", hash = "sha256:f8f2a14060ab11f20a0eec39d827af54c1589c327c5799d82808ae3f4167418a", size = 10067329, upload-time = "2026-01-07T16:57:59.617Z" }, +] + +[[package]] +name = "typer" +version = "0.26.7" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "annotated-doc", marker = "sys_platform == 'darwin'" }, + { name = "rich", marker = "sys_platform == 'darwin'" }, + { name = "shellingham", marker = "sys_platform == 'darwin'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/5e/ed/ef06584ccdd5c410df0837951ecd7e15d9a6144ea1bd4c73cecab1a89891/typer-0.26.7.tar.gz", hash = "sha256:e314a34c617e419c091b2830dda3ea1f257134ff593061a8f5b9717ab8dddb3a", size = 201709, upload-time = "2026-06-03T07:18:06.843Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/24/25/2201973529af2c954de0bb725323c3aaed6d7f0ceee8f550dec9185df013/typer-0.26.7-py3-none-any.whl", hash = "sha256:5c87cfbc5d34491c5346ebf49c23e18d56ccb863268d3a8d592b26087c2f5e58", size = 122456, upload-time = "2026-06-03T07:18:05.732Z" }, +] + +[[package]] +name = "typer-slim" +version = "0.24.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typer", marker = "sys_platform == 'darwin'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a7/a7/e6aecc4b4eb59598829a3b5076a93aff291b4fdaa2ded25efc4e1f4d219c/typer_slim-0.24.0.tar.gz", hash = "sha256:f0ed36127183f52ae6ced2ecb2521789995992c521a46083bfcdbb652d22ad34", size = 4776, upload-time = "2026-02-16T22:08:51.2Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a7/24/5480c20380dfd18cf33d14784096dca45a24eae6102e91d49a718d3b6855/typer_slim-0.24.0-py3-none-any.whl", hash = "sha256:d5d7ee1ee2834d5020c7c616ed5e0d0f29b9a4b1dd283bdebae198ec09778d0e", size = 3394, upload-time = "2026-02-16T22:08:49.92Z" }, +] + +[[package]] +name = "types-requests" +version = "2.33.0.20260518" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "urllib3", marker = "sys_platform == 'darwin'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e0/01/c5a19253fe1ac159159ddf9a3a07cec8bb5e486ec4d9002ad2821da0e5d2/types_requests-2.33.0.20260518.tar.gz", hash = "sha256:df7bd3bfe0ca8402dfb841e7d9be714bb5578203283d66d7dc4ef69343449a5e", size = 24752, upload-time = "2026-05-18T06:07:37.966Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1c/bc/b139710a3b6018f7fb2b9508b35c8af564e61bf2bf4fa619d088f3e16f85/types_requests-2.33.0.20260518-py3-none-any.whl", hash = "sha256:626d697d1adaaff76e2044dc8c5c051d8f21abc157bdfe204a75558076fe0bf0", size = 21391, upload-time = "2026-05-18T06:07:37.044Z" }, +] + +[[package]] +name = "typing-extensions" +version = "4.15.0" +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://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-inspection" +version = "0.4.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions", marker = "sys_platform == 'darwin'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/55/e3/70399cb7dd41c10ac53367ae42139cf4b1ca5f36bb3dc6c9d33acdb43655/typing_inspection-0.4.2.tar.gz", hash = "sha256:ba561c48a67c5958007083d386c3295464928b01faa735ab8547c5692e87f464", size = 75949, upload-time = "2025-10-01T02:14:41.687Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/dc/9b/47798a6c91d8bdb567fe2698fe81e0c6b7cb7ef4d13da4114b41d239f65d/typing_inspection-0.4.2-py3-none-any.whl", hash = "sha256:4ed1cacbdc298c220f1bd249ed5287caa16f34d44ef4e9c3d0cbad5b521545e7", size = 14611, upload-time = "2025-10-01T02:14:40.154Z" }, +] + +[[package]] +name = "tzdata" +version = "2026.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ba/19/1b9b0e29f30c6d35cb345486df41110984ea67ae69dddbc0e8a100999493/tzdata-2026.2.tar.gz", hash = "sha256:9173fde7d80d9018e02a662e168e5a2d04f87c41ea174b139fbef642eda62d10", size = 198254, upload-time = "2026-04-24T15:22:08.651Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ce/e4/dccd7f47c4b64213ac01ef921a1337ee6e30e8c6466046018326977efd95/tzdata-2026.2-py2.py3-none-any.whl", hash = "sha256:bbe9af844f658da81a5f95019480da3a89415801f6cc966806612cc7169bffe7", size = 349321, upload-time = "2026-04-24T15:22:05.876Z" }, +] + +[[package]] +name = "ultralytics" +version = "8.4.76" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "matplotlib", version = "3.10.9", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, + { name = "matplotlib", version = "3.11.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' and sys_platform == 'darwin'" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, + { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' and sys_platform == 'darwin'" }, + { name = "nvidia-ml-py", marker = "sys_platform == 'darwin'" }, + { name = "opencv-python", marker = "sys_platform == 'darwin'" }, + { name = "pillow", marker = "sys_platform == 'darwin'" }, + { name = "polars", marker = "sys_platform == 'darwin'" }, + { name = "psutil", marker = "sys_platform == 'darwin'" }, + { name = "pyyaml", marker = "sys_platform == 'darwin'" }, + { name = "requests", marker = "sys_platform == 'darwin'" }, + { name = "scipy", version = "1.15.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, + { name = "scipy", version = "1.17.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.11.*' and sys_platform == 'darwin'" }, + { name = "scipy", version = "1.18.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.12' and sys_platform == 'darwin'" }, + { name = "torch", marker = "sys_platform == 'darwin'" }, + { name = "torchvision", marker = "sys_platform == 'darwin'" }, + { name = "ultralytics-thop", marker = "sys_platform == 'darwin'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/5d/0b/d6b82fe3115ddc9d44c3819555b66112c0940bbb8a5cd39dd2ab6b42acc6/ultralytics-8.4.76.tar.gz", hash = "sha256:332382999ed31cec039cae216ef877fb2af67babf1d3e8a3d3e267c5e51fca3a", size = 1109784, upload-time = "2026-06-24T14:13:30.449Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fe/b2/22624bd9e988a022e41b8ab51fb54e9413bffefdbc9902a90ead4d4823f6/ultralytics-8.4.76-py3-none-any.whl", hash = "sha256:a402f884c230ad3ad2bff6cfb8383737406dbdb5021775f61d8af4b89a6a015e", size = 1319242, upload-time = "2026-06-24T14:13:26.8Z" }, +] + +[[package]] +name = "ultralytics-thop" +version = "2.0.20" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, + { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' and sys_platform == 'darwin'" }, + { name = "torch", marker = "sys_platform == 'darwin'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/98/c6/d25cb53e141242f74950744179c21b8798bb09b9e7161465ecda4f577ddf/ultralytics_thop-2.0.20.tar.gz", hash = "sha256:f3595e0d8c6fd0b9f62fc2cd9be921755e2649a05c34f1fabaea0bff7295d641", size = 34682, upload-time = "2026-06-06T11:42:42.184Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0e/a9/5441a28af447c0ffe193f1f42dfebe2a518ab3e160e9e0d164e8901edead/ultralytics_thop-2.0.20-py3-none-any.whl", hash = "sha256:ef1b326404aeb10954f50db58982ec8dcab5946ee04a9b10e1107ec7ba4d5c22", size = 28954, upload-time = "2026-06-06T11:42:40.796Z" }, +] + +[[package]] +name = "urllib3" +version = "2.7.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/53/0c/06f8b233b8fd13b9e5ee11424ef85419ba0d8ba0b3138bf360be2ff56953/urllib3-2.7.0.tar.gz", hash = "sha256:231e0ec3b63ceb14667c67be60f2f2c40a518cb38b03af60abc813da26505f4c", size = 433602, upload-time = "2026-05-07T16:13:18.596Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7f/3e/5db95bcf282c52709639744ca2a8b149baccf648e39c8cc87553df9eae0c/urllib3-2.7.0-py3-none-any.whl", hash = "sha256:9fb4c81ebbb1ce9531cce37674bbc6f1360472bc18ca9a553ede278ef7276897", size = 131087, upload-time = "2026-05-07T16:13:17.151Z" }, +] + +[[package]] +name = "uvicorn" +version = "0.49.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "click", marker = "sys_platform == 'darwin'" }, + { name = "h11", marker = "sys_platform == 'darwin'" }, + { name = "typing-extensions", marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c4/1f/fa18009dea8469069cca78a4e877a008ab78f08b064bfc9ab891579077ff/uvicorn-0.49.0.tar.gz", hash = "sha256:ebf4271aa580d9de97f93192d4595176df6e91f9aae919ca73e4fc07df1e66a3", size = 91284, upload-time = "2026-06-03T22:01:30.448Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/88/fa/e1388bbcf24ef3274f45c0c1c7b501fd14971037c1b6ee23610553307497/uvicorn-0.49.0-py3-none-any.whl", hash = "sha256:ba3d14c3ee7e41c6c654c46c9eb489d33213cdd30aa1696eab1374337c13f68f", size = 71376, upload-time = "2026-06-03T22:01:29.037Z" }, +] + +[package.optional-dependencies] +standard = [ + { name = "httptools", marker = "sys_platform == 'darwin'" }, + { name = "python-dotenv", marker = "sys_platform == 'darwin'" }, + { name = "pyyaml", marker = "sys_platform == 'darwin'" }, + { name = "uvloop", marker = "platform_python_implementation != 'PyPy' and sys_platform == 'darwin'" }, + { name = "watchfiles", marker = "sys_platform == 'darwin'" }, + { name = "websockets", marker = "sys_platform == 'darwin'" }, +] + +[[package]] +name = "uvloop" +version = "0.22.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/06/f0/18d39dbd1971d6d62c4629cc7fa67f74821b0dc1f5a77af43719de7936a7/uvloop-0.22.1.tar.gz", hash = "sha256:6c84bae345b9147082b17371e3dd5d42775bddce91f885499017f4607fdaf39f", size = 2443250, upload-time = "2025-10-16T22:17:19.342Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/eb/14/ecceb239b65adaaf7fde510aa8bd534075695d1e5f8dadfa32b5723d9cfb/uvloop-0.22.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:ef6f0d4cc8a9fa1f6a910230cd53545d9a14479311e87e3cb225495952eb672c", size = 1343335, upload-time = "2025-10-16T22:16:11.43Z" }, + { url = "https://files.pythonhosted.org/packages/ba/ae/6f6f9af7f590b319c94532b9567409ba11f4fa71af1148cab1bf48a07048/uvloop-0.22.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:7cd375a12b71d33d46af85a3343b35d98e8116134ba404bd657b3b1d15988792", size = 742903, upload-time = "2025-10-16T22:16:12.979Z" }, + { url = "https://files.pythonhosted.org/packages/c7/d5/69900f7883235562f1f50d8184bb7dd84a2fb61e9ec63f3782546fdbd057/uvloop-0.22.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:c60ebcd36f7b240b30788554b6f0782454826a0ed765d8430652621b5de674b9", size = 1352420, upload-time = "2025-10-16T22:16:21.187Z" }, + { url = "https://files.pythonhosted.org/packages/a8/73/c4e271b3bce59724e291465cc936c37758886a4868787da0278b3b56b905/uvloop-0.22.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3b7f102bf3cb1995cfeaee9321105e8f5da76fdb104cdad8986f85461a1b7b77", size = 748677, upload-time = "2025-10-16T22:16:22.558Z" }, + { url = "https://files.pythonhosted.org/packages/3d/ff/7f72e8170be527b4977b033239a83a68d5c881cc4775fca255c677f7ac5d/uvloop-0.22.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:fe94b4564e865d968414598eea1a6de60adba0c040ba4ed05ac1300de402cd42", size = 1359936, upload-time = "2025-10-16T22:16:29.436Z" }, + { url = "https://files.pythonhosted.org/packages/c3/c6/e5d433f88fd54d81ef4be58b2b7b0cea13c442454a1db703a1eea0db1a59/uvloop-0.22.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:51eb9bd88391483410daad430813d982010f9c9c89512321f5b60e2cddbdddd6", size = 752769, upload-time = "2025-10-16T22:16:30.493Z" }, +] + +[[package]] +name = "virtualenv" +version = "21.5.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "distlib", marker = "sys_platform == 'darwin'" }, + { name = "filelock", marker = "sys_platform == 'darwin'" }, + { name = "platformdirs", marker = "sys_platform == 'darwin'" }, + { name = "python-discovery", marker = "sys_platform == 'darwin'" }, + { name = "typing-extensions", marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f1/a5/81f987504738e6defeed61ec1c47e2aefab3c35d8eeb87e1b3f38cf28254/virtualenv-21.5.1.tar.gz", hash = "sha256:dca3bf98275a59c652b69d68e73433e597d977c2da9198882479d1a7188009c8", size = 4578798, upload-time = "2026-06-16T16:23:58.603Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2c/02/3623e6169bed617ed1e2d372f7c69f92ec28d54c4dfc997055c8578ec148/virtualenv-21.5.1-py3-none-any.whl", hash = "sha256:55aa670b67bbfb991b03fda39bd3276d92c419d702376e98c5df1c9989a26783", size = 4558820, upload-time = "2026-06-16T16:23:56.963Z" }, +] + +[[package]] +name = "watchfiles" +version = "1.2.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "anyio", marker = "sys_platform == 'darwin'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/cd/41/5e1a4bb12aac5f1493fa1bdc11154eca3b258ca4eba65d39c473fe19d8e9/watchfiles-1.2.0.tar.gz", hash = "sha256:c995fba777f1ea992f090f9236e9284cf7a5d1a0130dd5a3d82c598cacd76838", size = 108252, upload-time = "2026-05-18T04:32:04.251Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0d/5a/2bf22ecb24916983bf1cc0095e7dea2741d14d6553b0d6a2ac8bc96eca93/watchfiles-1.2.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:bb68bf4df85abebe5efddc53cf2075520f243a59868d9b3973278b23e76962a9", size = 400471, upload-time = "2026-05-18T04:31:08.908Z" }, + { url = "https://files.pythonhosted.org/packages/55/70/dea1f6a0e76607841a60fb51af150e70124864673f61704abb62b90cdcc7/watchfiles-1.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c16cb06dd17d43b9d185094268459eac92c9538356f050e55b54e82cf700e1d4", size = 394599, upload-time = "2026-05-18T04:30:19.845Z" }, + { url = "https://files.pythonhosted.org/packages/fc/3d/8024c801df84d1587740d0359e7fdd80afeae3d159011f3d5376dd82f18e/watchfiles-1.2.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:704fd259e332e01f9b9c178f4bce9e49027e5587cc2600eeeaf8e76e1c846201", size = 400242, upload-time = "2026-05-18T04:31:19.014Z" }, + { url = "https://files.pythonhosted.org/packages/87/5b/f4dfd45323e949984a3a7f9dc31d1cbb049921e7d98253488dda72ccdaa9/watchfiles-1.2.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:6543cf55d170003296d185c0af981f3e1311564907e1f4e08671fc7693a890a5", size = 394562, upload-time = "2026-05-18T04:30:08.46Z" }, + { url = "https://files.pythonhosted.org/packages/b8/2f/e42c992d2afda3108ea1c02acecc991b9f31d05c14adc2a7cee9ee211fc4/watchfiles-1.2.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:bc13eb17538be00c874699dc0abe4ee2bc8d50bb1166a6b9e175ef3fd7eb8f26", size = 400115, upload-time = "2026-05-18T04:32:02.06Z" }, + { url = "https://files.pythonhosted.org/packages/5f/8f/6af2ea19065c91d8b0ea3516fdfc8c0d349f407e8e9fbf4e5a17360de8ad/watchfiles-1.2.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2d95ddc1eb6914154253d239089900813f6a767e174b8e6a50e7fdacb7e4236c", size = 393659, upload-time = "2026-05-18T04:30:50.951Z" }, + { url = "https://files.pythonhosted.org/packages/23/f4/7513ef1e85fc4c6331b59479d6d72661fc391fbe543678052ac72c8b6c19/watchfiles-1.2.0-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:4674d49eb94706dfe666c069fc0a1b646ffcf920473492e209f6d5f60d3f0cc2", size = 403050, upload-time = "2026-05-18T04:30:36.753Z" }, + { url = "https://files.pythonhosted.org/packages/27/0b/a54103cfd732bb703c7a749222011a0483ef3705948dae3b203158601119/watchfiles-1.2.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:094b9b70103d4e963499bdea001ee3c2697b144cd9ae6218a62c0f89ec9e31db", size = 396629, upload-time = "2026-05-18T04:32:03.268Z" }, +] + +[[package]] +name = "wcwidth" +version = "0.8.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/49/b4/51fe890511f0f242d07cb1ebe6a5b6db417262b9d2568b460347c57d95cc/wcwidth-0.8.1.tar.gz", hash = "sha256:faf5b4a5366a72dc49cad48cdf21f52bdf63bdda995178e483ba247ff79089b9", size = 1466072, upload-time = "2026-06-08T05:57:23.146Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/bd/6e/95b0e537de1f4d4301f76f944642c6da50d1511cc7b3d64dc418a66c7509/wcwidth-0.8.1-py3-none-any.whl", hash = "sha256:f453740b1e4a4f3291faa37944c555d71056c4da08d59809b307ef4feba695c8", size = 323092, upload-time = "2026-06-08T05:57:21.413Z" }, +] + +[[package]] +name = "websockets" +version = "15.0.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/21/e6/26d09fab466b7ca9c7737474c52be4f76a40301b08362eb2dbc19dcc16c1/websockets-15.0.1.tar.gz", hash = "sha256:82544de02076bafba038ce055ee6412d68da13ab47f0c60cab827346de828dee", size = 177016, upload-time = "2025-03-05T20:03:41.606Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1e/da/6462a9f510c0c49837bbc9345aca92d767a56c1fb2939e1579df1e1cdcf7/websockets-15.0.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d63efaa0cd96cf0c5fe4d581521d9fa87744540d4bc999ae6e08595a1014b45b", size = 175423, upload-time = "2025-03-05T20:01:35.363Z" }, + { url = "https://files.pythonhosted.org/packages/1c/9f/9d11c1a4eb046a9e106483b9ff69bce7ac880443f00e5ce64261b47b07e7/websockets-15.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ac60e3b188ec7574cb761b08d50fcedf9d77f1530352db4eef1707fe9dee7205", size = 173080, upload-time = "2025-03-05T20:01:37.304Z" }, + { url = "https://files.pythonhosted.org/packages/d5/4f/b462242432d93ea45f297b6179c7333dd0402b855a912a04e7fc61c0d71f/websockets-15.0.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5756779642579d902eed757b21b0164cd6fe338506a8083eb58af5c372e39d9a", size = 173329, upload-time = "2025-03-05T20:01:39.668Z" }, + { url = "https://files.pythonhosted.org/packages/9f/32/18fcd5919c293a398db67443acd33fde142f283853076049824fc58e6f75/websockets-15.0.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:823c248b690b2fd9303ba00c4f66cd5e2d8c3ba4aa968b2779be9532a4dad431", size = 175423, upload-time = "2025-03-05T20:01:56.276Z" }, + { url = "https://files.pythonhosted.org/packages/76/70/ba1ad96b07869275ef42e2ce21f07a5b0148936688c2baf7e4a1f60d5058/websockets-15.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:678999709e68425ae2593acf2e3ebcbcf2e69885a5ee78f9eb80e6e371f1bf57", size = 173082, upload-time = "2025-03-05T20:01:57.563Z" }, + { url = "https://files.pythonhosted.org/packages/86/f2/10b55821dd40eb696ce4704a87d57774696f9451108cff0d2824c97e0f97/websockets-15.0.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d50fd1ee42388dcfb2b3676132c78116490976f1300da28eb629272d5d93e905", size = 173330, upload-time = "2025-03-05T20:01:59.063Z" }, + { url = "https://files.pythonhosted.org/packages/51/6b/4545a0d843594f5d0771e86463606a3988b5a09ca5123136f8a76580dd63/websockets-15.0.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:3e90baa811a5d73f3ca0bcbf32064d663ed81318ab225ee4f427ad4e26e5aff3", size = 175437, upload-time = "2025-03-05T20:02:16.706Z" }, + { url = "https://files.pythonhosted.org/packages/f4/71/809a0f5f6a06522af902e0f2ea2757f71ead94610010cf570ab5c98e99ed/websockets-15.0.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:592f1a9fe869c778694f0aa806ba0374e97648ab57936f092fd9d87f8bc03665", size = 173096, upload-time = "2025-03-05T20:02:18.832Z" }, + { url = "https://files.pythonhosted.org/packages/3d/69/1a681dd6f02180916f116894181eab8b2e25b31e484c5d0eae637ec01f7c/websockets-15.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0701bc3cfcb9164d04a14b149fd74be7347a530ad3bbf15ab2c678a2cd3dd9a2", size = 173332, upload-time = "2025-03-05T20:02:20.187Z" }, + { url = "https://files.pythonhosted.org/packages/02/9e/d40f779fa16f74d3468357197af8d6ad07e7c5a27ea1ca74ceb38986f77a/websockets-15.0.1-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:0c9e74d766f2818bb95f84c25be4dea09841ac0f734d1966f415e4edfc4ef1c3", size = 173109, upload-time = "2025-03-05T20:03:17.769Z" }, + { url = "https://files.pythonhosted.org/packages/bc/cd/5b887b8585a593073fd92f7c23ecd3985cd2c3175025a91b0d69b0551372/websockets-15.0.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:1009ee0c7739c08a0cd59de430d6de452a55e42d6b522de7aa15e6f67db0b8e1", size = 173343, upload-time = "2025-03-05T20:03:19.094Z" }, + { url = "https://files.pythonhosted.org/packages/fa/a8/5b41e0da817d64113292ab1f8247140aac61cbf6cfd085d6a0fa77f4984f/websockets-15.0.1-py3-none-any.whl", hash = "sha256:f7a866fbc1e97b5c617ee4116daaa09b722101d4a3c170c787450ba409f9736f", size = 169743, upload-time = "2025-03-05T20:03:39.41Z" }, +] + +[[package]] +name = "wrapt" +version = "2.2.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/fe/a4/282c8e64300a59fc834518a54bf0afabb4ff9218b5fa76958b450459a844/wrapt-2.2.2.tar.gz", hash = "sha256:0788e321027c999bf221b667bd4a54aaefd1a36283749a860ac3eb77daed0302", size = 129068, upload-time = "2026-06-20T23:49:44.49Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e1/8b/59781d0fe7b0adfbea37f600857de4be68921e454aeecf1a11bda35cdccc/wrapt-2.2.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:055e6fcfaa28e58c6a8c247d48b92be9d56f818b7068aa4f22b15b3343a09931", size = 80556, upload-time = "2026-06-20T23:47:28.473Z" }, + { url = "https://files.pythonhosted.org/packages/94/dc/66c61aca927230c9cf97a3cb005c803971a1076ff9f7d61085d035c20085/wrapt-2.2.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8374eb6b1a58809211e84ff835a182bb17ab2807a5bfef23204c8cff38178a00", size = 81648, upload-time = "2026-06-20T23:47:30.504Z" }, + { url = "https://files.pythonhosted.org/packages/27/15/0c2d55168707465abfc41f33c0b23d792a5fa9b65c26983606940900a120/wrapt-2.2.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f1a2ff355ece6a111ca7a20dc86df6659c9205d3fcee674ca34f2a2854fd4e73", size = 80782, upload-time = "2026-06-20T23:47:44.367Z" }, + { url = "https://files.pythonhosted.org/packages/7d/b5/5c0b093eb48f8a062ef6267d3cb36e9bb1b88440181f6545a383c60efdf8/wrapt-2.2.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:55b9a899e6fff5444f229d30aa6e9ac92d2216d9d60f33c771b5d76a760d5f8e", size = 81678, upload-time = "2026-06-20T23:47:45.857Z" }, + { url = "https://files.pythonhosted.org/packages/2a/85/180b40628b23772692a0c76e8030114e1c0ae068470ed531919f0a5f2a4a/wrapt-2.2.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:8417fd3c674d3c8023d080292d29301531a12daf8bd938dd419710dd2f464f2b", size = 81484, upload-time = "2026-06-20T23:47:59.924Z" }, + { url = "https://files.pythonhosted.org/packages/94/f2/21c90f2a16689702e2aaff45795b11018dff2c9b1242bac10d225483f676/wrapt-2.2.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0e7070c7472582e31af3dfc2622b2381a0df7435110a9388ed8db5ffbce67efb", size = 82151, upload-time = "2026-06-20T23:48:01.303Z" }, + { url = "https://files.pythonhosted.org/packages/6e/d2/6317eb6d4554855bbf12d61857774af34747bf88a42c19bf306de67e2fa3/wrapt-2.2.2-py3-none-any.whl", hash = "sha256:5bad217350f19ce99ca5b5e71d406765ea86fe541628426772b657375ee1c048", size = 61460, upload-time = "2026-06-20T23:49:42.966Z" }, +] + +[[package]] +name = "yarl" +version = "1.24.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "idna", marker = "sys_platform == 'darwin'" }, + { name = "multidict", marker = "sys_platform == 'darwin'" }, + { name = "propcache", marker = "sys_platform == 'darwin'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/79/12/1e8f37460ea0f7eb59c221fdaf0ed75e7ac43e97f8093b9c6f411df50a78/yarl-1.24.2.tar.gz", hash = "sha256:9ac374123c6fd7abf64d1fec93962b0bd4ee2c19751755a762a72dd96c0378f8", size = 210798, upload-time = "2026-05-19T21:31:05.599Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3f/df/f1c7a3de0831cd83194f1a85c5bb431b13f81e6b45079314c86d1c4ef3f2/yarl-1.24.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:5249a113065c2b7a958bc699759e359cd61cfc81e3069662208f48f191b7ed12", size = 129057, upload-time = "2026-05-19T21:27:47.564Z" }, + { url = "https://files.pythonhosted.org/packages/48/41/7daafb32dd7562bf45b1ce56562e7e1a9146f6479b6456873eb8a3413c40/yarl-1.24.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:7f4425fa244fbf530b006d0c5f79ce920114cfff5b4f5f6056e669f8e160fdc0", size = 91545, upload-time = "2026-05-19T21:27:50.089Z" }, + { url = "https://files.pythonhosted.org/packages/a8/8f/7b3ec212f1ea0683f55f978e3246bc313c38818664edfc97a9f349a4901e/yarl-1.24.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:15c0b5e49d3c44e2a0b93e6a49476c5edad0a7686b92c395765a7ea775572a75", size = 91380, upload-time = "2026-05-19T21:27:51.953Z" }, + { url = "https://files.pythonhosted.org/packages/c5/c5/1ce244152ff2839645e7cae92f90e7bafcb2c52bea7ff586ac714f14f5df/yarl-1.24.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:36348bebb147b83818b9d7e673ea4debc75970afc6ffdc7e3975ad05ce5a58c1", size = 128971, upload-time = "2026-05-19T21:28:20.543Z" }, + { url = "https://files.pythonhosted.org/packages/87/5a/00f36967203ed89cb3acd2c8ed526cc3fed9418eb70ce128160a911c8499/yarl-1.24.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1a97e42c8a2233f2f279ecadd9e4a037bcb5d813b78435e8eedd4db5a9e9708c", size = 91507, upload-time = "2026-05-19T21:28:22.556Z" }, + { url = "https://files.pythonhosted.org/packages/31/d0/1fb0c1cd27288f39f6974da4318c32768d72c9890984541fdf1e2e32a51d/yarl-1.24.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8d027d56f1035e339d1001ac33eceab5b2ec8e42e449787bb75e289fb9a5cd1d", size = 91343, upload-time = "2026-05-19T21:28:24.092Z" }, + { url = "https://files.pythonhosted.org/packages/f0/da/866bcb01076ba49d2b42b309867bed3826421f1c479655eb7a607b44f20b/yarl-1.24.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:b975866c184564c827e0877380f0dae57dcca7e52782128381b72feff6dfceb8", size = 129957, upload-time = "2026-05-19T21:28:51.695Z" }, + { url = "https://files.pythonhosted.org/packages/bf/1d/fcefb70922ea2268a8971d8e5874d9a8218644200fb8465f1dcad55e6851/yarl-1.24.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:3b075301a2836a0e297b1b658cb6d6135df535d62efefdd60366bd589c2c82f2", size = 92164, upload-time = "2026-05-19T21:28:53.242Z" }, + { url = "https://files.pythonhosted.org/packages/29/b6/170e2b8d4e3bc30e6bfdcca53556537f5bf595e938632dfcb059311f3ff6/yarl-1.24.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8ae44649b00947634ab0dab2a374a638f52923a6e67083f2c156cd5cbd1a881d", size = 91688, upload-time = "2026-05-19T21:28:54.865Z" }, + { url = "https://files.pythonhosted.org/packages/fd/4d/4b880086bd0d3e034d25647be1d830afc3e3f610e98c4ab3490af6b1b6d5/yarl-1.24.2-py3-none-any.whl", hash = "sha256:2783d9226db8797636cd6896e4de81feed252d1db72265686c9558d97a4d94b9", size = 53576, upload-time = "2026-05-19T21:31:03.909Z" }, +] + +[[package]] +name = "zeroconf" +version = "0.150.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "ifaddr", marker = "sys_platform == 'darwin'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/09/ea/34bb185645ecaa18d34e5883bffea71aa9bffbbb994634884e8b2f3ad0c4/zeroconf-0.150.0.tar.gz", hash = "sha256:a5fe7feab1de6ef5e541e0a3d07e534fd91629b813fc27281593584100f63164", size = 213634, upload-time = "2026-06-22T17:52:37.982Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/22/37/6ff505bc61353fb62e4dc766aa4f651dd6f07de18a82cc3d244953168c4a/zeroconf-0.150.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6d5cfe83cfa85bf8f9bc31b1b33c20ae708d9ca76cef3ae92333e13f4147b169", size = 1683914, upload-time = "2026-06-22T18:23:31.98Z" }, + { url = "https://files.pythonhosted.org/packages/d9/65/b58fa5361e90e8bfc1c5355af9fc7e5d4f28bc6ad15f1cab6c558269cd6e/zeroconf-0.150.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ad2e3e3062491f56fd16388f1abce6f6185bdc84f221698a38fa9df7b8664c95", size = 1680489, upload-time = "2026-06-22T18:23:50.772Z" }, + { url = "https://files.pythonhosted.org/packages/63/a4/49a46fcf1afe8f96bec6751e4fe761ce2cd9c124f0d01748f69fa5566013/zeroconf-0.150.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1aba87b6c1cdb6859d0c2291c67dc7d3ac06612250fddd95f68b7632e1e89a79", size = 1684292, upload-time = "2026-06-22T18:24:08.468Z" }, +] From e9f80124217444ff4fa97274e680fe517cf6c7ca Mon Sep 17 00:00:00 2001 From: Johnny Greco Date: Wed, 24 Jun 2026 21:13:01 -0400 Subject: [PATCH 07/22] Include Reachy Mini simulator backend --- projects/reachy-mini-openshell/README.md | 37 ++++--- projects/reachy-mini-openshell/pyproject.toml | 2 +- projects/reachy-mini-openshell/uv.lock | 104 +++++++++++++++++- 3 files changed, 122 insertions(+), 21 deletions(-) diff --git a/projects/reachy-mini-openshell/README.md b/projects/reachy-mini-openshell/README.md index ef70d72e..97c1c189 100644 --- a/projects/reachy-mini-openshell/README.md +++ b/projects/reachy-mini-openshell/README.md @@ -1,5 +1,6 @@ --- -title: Reachy OpenShell + +## title: Reachy OpenShell emoji: 🤖 colorFrom: purple colorTo: gray @@ -8,7 +9,6 @@ pinned: false tags: - reachy_mini - reachy_mini_python_app ---- # 🤖 Reachy OpenShell @@ -42,16 +42,17 @@ This project contains: - Reachy Mini movement, dance, emotion, and look-around tools - a locked OpenShell profile for instructions and tool selection - optional camera, local vision, YOLO head-tracking, and MediaPipe head-tracking - integrations +integrations ## Requirements - Python 3.10, 3.11, or 3.12. The recommended local version is Python 3.12. - `uv` for the recommended local workflow -- Reachy Mini SDK 1.8.0, installed through this project. This is pinned to the - version compatible with the forked conversation-app dependency stack. +- Reachy Mini SDK 1.8.0 with the MuJoCo simulator backend, installed through +this project. The SDK is pinned to the version compatible with the forked +conversation-app dependency stack. - a running Reachy Mini daemon, either connected to hardware or started in - simulator mode +simulator mode - an OpenAI API key for conversation ## Install @@ -111,9 +112,10 @@ python -m pip install -e '.[mediapipe_vision]' python -m pip install -e '.[all_vision]' ``` -There are no `backend` or `sim` extras anymore. The previous backend extra -belonged to the deleted scaffold, and simulator support is provided by the -Reachy Mini daemon/runtime rather than a project extra. +There are no project-level `backend` or `sim` extras anymore. The previous +backend extra belonged to the deleted scaffold. The default dependency set +includes Reachy Mini's MuJoCo simulator backend because the local development +workflow starts `reachy-mini-daemon --sim` from this environment. ## Configuration @@ -163,7 +165,7 @@ In simulator mode, the app auto-enables Gradio. The examples still pass at: ```text -http://127.0.0.1:7860/ +c ``` If port `7860` is busy, Gradio may choose another available local port and print @@ -175,15 +177,15 @@ Useful app flags: - `--gradio`: launch the browser conversation UI. - `--no-camera`: disable camera usage. This is the recommended simulator - baseline. +baseline. - `--head-tracker yolo`: enable YOLO head tracking. Requires the `yolo_vision` - extra. +extra. - `--head-tracker mediapipe`: enable MediaPipe head tracking. Requires the - `mediapipe_vision` extra. +`mediapipe_vision` extra. - `--local-vision`: use a local vision model instead of Realtime vision. - Requires the `local_vision` extra. +Requires the `local_vision` extra. - `--robot-name `: connect to a daemon started with the same - `--robot-name`. +`--robot-name`. - `--debug`: enable debug logging. Examples: @@ -252,8 +254,7 @@ with an import error, install the matching optional dependency group. If `uv sync` tries to build `pygobject` or `pycairo` on macOS, the resolver is including a Linux media dependency path. This project scopes uv resolution to Darwin for the current local workflow; rerun `uv sync`, and if uv is still using -old metadata, clear the package cache with `uv cache clean reachy-mini pygobject -pycairo`. +old metadata, clear the package cache with `uv cache clean reachy-mini pygobject pycairo`. If you are running the simulator with `--no-media`, keep `--no-camera` on the -conversation app. +conversation app. \ No newline at end of file diff --git a/projects/reachy-mini-openshell/pyproject.toml b/projects/reachy-mini-openshell/pyproject.toml index 800679d8..ffce601d 100644 --- a/projects/reachy-mini-openshell/pyproject.toml +++ b/projects/reachy-mini-openshell/pyproject.toml @@ -8,7 +8,7 @@ version = "0.3.0" description = "OpenShell-oriented fork of the Reachy Mini conversation app." readme = "README.md" requires-python = ">=3.10,<3.13" -dependencies = [ "aiortc>=1.13.0", "fastrtc>=0.0.34", "gradio==5.50.1.dev1", "huggingface-hub==1.3.0", "opencv-python>=4.12.0.88", "python-dotenv", "openai>=2.1", "reachy_mini_dances_library", "reachy_mini_toolbox", "reachy-mini==1.8.0", "eclipse-zenoh~=1.7.0", "gradio_client>=1.13.3",] +dependencies = [ "aiortc>=1.13.0", "fastrtc>=0.0.34", "gradio==5.50.1.dev1", "huggingface-hub==1.3.0", "opencv-python>=4.12.0.88", "python-dotenv", "openai>=2.1", "reachy_mini_dances_library", "reachy_mini_toolbox", "reachy-mini[mujoco]==1.8.0", "eclipse-zenoh~=1.7.0", "gradio_client>=1.13.3",] [[project.authors]] name = "Pollen Robotics" email = "contact@pollen-robotics.com" diff --git a/projects/reachy-mini-openshell/uv.lock b/projects/reachy-mini-openshell/uv.lock index a7ff8ddf..4438d67d 100644 --- a/projects/reachy-mini-openshell/uv.lock +++ b/projects/reachy-mini-openshell/uv.lock @@ -434,6 +434,46 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/06/8a/6bb29455e16f119ec9db996d50f5ce40fdd7e1369fcfb6665144b50a0b7b/eclipse_zenoh-1.7.2-cp39-abi3-macosx_10_12_x86_64.whl", hash = "sha256:7d0429933d9abeb70939a2cb02e32b8c8929651fd1762f1308b5fbd4ae41c3d9", size = 8871746, upload-time = "2026-01-08T17:42:12.587Z" }, ] +[[package]] +name = "etils" +version = "1.13.0" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.11' and sys_platform == 'darwin'", +] +sdist = { url = "https://files.pythonhosted.org/packages/9b/a0/522bbff0f3cdd37968f90dd7f26c7aa801ed87f5ba335f156de7f2b88a48/etils-1.13.0.tar.gz", hash = "sha256:a5b60c71f95bcd2d43d4e9fb3dc3879120c1f60472bb5ce19f7a860b1d44f607", size = 106368, upload-time = "2025-07-15T10:29:10.563Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e7/98/87b5946356095738cb90a6df7b35ff69ac5750f6e783d5fbcc5cb3b6cbd7/etils-1.13.0-py3-none-any.whl", hash = "sha256:d9cd4f40fbe77ad6613b7348a18132cc511237b6c076dbb89105c0b520a4c6bb", size = 170603, upload-time = "2025-07-15T10:29:09.076Z" }, +] + +[package.optional-dependencies] +epath = [ + { name = "fsspec", marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, + { name = "importlib-resources", marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, + { name = "typing-extensions", marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, + { name = "zipp", marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, +] + +[[package]] +name = "etils" +version = "1.14.0" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.12' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and sys_platform == 'darwin'", +] +sdist = { url = "https://files.pythonhosted.org/packages/26/ce/6e067242fde898841922ac6fc82b0bb2fe35c38e995880bdffdfbe30182a/etils-1.14.0.tar.gz", hash = "sha256:8136e7f4c4173cd0af0ca5481c4475152f0b8686192951eefa60ee8711e1ede4", size = 108127, upload-time = "2026-03-04T17:41:36.291Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5a/3d/589663aeeacd59bb2f3e8596bfd3e81cf0fb18d70bb433199041f469771b/etils-1.14.0-py3-none-any.whl", hash = "sha256:b5df7341f54dbe1405a4450b2741207b4a8c279780402b45f87202b94dfc52b4", size = 172934, upload-time = "2026-03-04T17:41:35.01Z" }, +] + +[package.optional-dependencies] +epath = [ + { name = "fsspec", marker = "python_full_version >= '3.11' and sys_platform == 'darwin'" }, + { name = "typing-extensions", marker = "python_full_version >= '3.11' and sys_platform == 'darwin'" }, + { name = "zipp", marker = "python_full_version >= '3.11' and sys_platform == 'darwin'" }, +] + [[package]] name = "exceptiongroup" version = "1.3.1" @@ -571,6 +611,20 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/20/7a/1c6e3562dfd8950adbb11ffbc65d21e7c89d01a6e4f137fa981056de25c5/gitpython-3.1.50-py3-none-any.whl", hash = "sha256:d352abe2908d07355014abdd21ddf798c2a961469239afec4962e9da884858f9", size = 212507, upload-time = "2026-05-06T04:01:23.799Z" }, ] +[[package]] +name = "glfw" +version = "2.10.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/96/72/642d4f12f61816ac96777f7360d413e3977a7dd08237d196f02da681b186/glfw-2.10.0.tar.gz", hash = "sha256:801e55d8581b34df9aa2cfea43feb06ff617576e2a8cc5dac23ee75b26d10abe", size = 31475, upload-time = "2025-09-12T08:54:38.871Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3d/1f/a9ce08b1173b0ab625ee92f0c47a5278b3e76fd367699880d8ee7d56c338/glfw-2.10.0-py2.py27.py3.py30.py31.py32.py33.py34.py35.py36.py37.py38.p39.p310.p311.p312.p313-none-macosx_10_6_intel.whl", hash = "sha256:5f365a8c94bcea71ec91327e7c16e7cf739128479a18b8c1241b004b40acc412", size = 105329, upload-time = "2025-09-12T08:54:27.938Z" }, + { url = "https://files.pythonhosted.org/packages/7c/96/5a2220abcbd027eebcf8bedd28207a2de168899e51be13ba01ebdd4147a1/glfw-2.10.0-py2.py27.py3.py30.py31.py32.py33.py34.py35.py36.py37.py38.p39.p310.p311.p312.p313-none-macosx_11_0_arm64.whl", hash = "sha256:5328db1a92d07abd988730517ec02aa8390d3e6ef7ce98c8b57ecba2f43a39ba", size = 102179, upload-time = "2025-09-12T08:54:29.163Z" }, + { url = "https://files.pythonhosted.org/packages/b3/87/de0b33f6f00687499ca1371f22aa73396341b85bf88f1a284f9da8842493/glfw-2.10.0-py2.py27.py3.py30.py31.py32.py33.py34.py35.py36.py37.py38.py39.py310.py311.py312.py313.py314-none-macosx_10_6_intel.whl", hash = "sha256:2aab89d2d9535635ba011fc7303390685169a1aa6731ad580d08d043524b8899", size = 105326, upload-time = "2026-01-28T05:57:56.083Z" }, + { url = "https://files.pythonhosted.org/packages/b6/a6/6ea2f73ad4474896d9e38b3ffbe6ffd5a802c738392269e99e8c6621a461/glfw-2.10.0-py2.py27.py3.py30.py31.py32.py33.py34.py35.py36.py37.py38.py39.py310.py311.py312.py313.py314-none-macosx_11_0_arm64.whl", hash = "sha256:23936202a107039b5372f0b88ae1d11080746aa1c78910a45d4a0c4cf408cfaa", size = 102180, upload-time = "2026-01-28T05:57:57.787Z" }, + { url = "https://files.pythonhosted.org/packages/8c/a8/d4dab8a58fc2e6981fc7a58c4e56ba9d777fb24931cec6a22152edbb3540/glfw-2.10.0-py2.py3-none-macosx_10_6_intel.whl", hash = "sha256:a0d1f29f206219cc291edfb6cace663a86da2470632551c998e3db82d48ea177", size = 105288, upload-time = "2026-03-10T17:21:19.929Z" }, + { url = "https://files.pythonhosted.org/packages/14/61/68d35e001872a7705112418da236fa2418d4f2e5419f8b2837f9b81bb3da/glfw-2.10.0-py2.py3-none-macosx_11_0_arm64.whl", hash = "sha256:d28d6f3ef217e64e35dc6fd0a7acb4cec9bfe7cd14dd9b35a7228a87002de154", size = 102139, upload-time = "2026-03-10T17:21:21.645Z" }, +] + [[package]] name = "google-crc32c" version = "1.8.0" @@ -1273,6 +1327,29 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/50/2e/ebdb85a8da151397a2790363676b7ed7c125924fe618e4c6d8befb0cc62c/msgpack-1.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:d3567748a5107cb40cdf66a275430c2f87c07777698f4bfd25c35f44d533258c", size = 82657, upload-time = "2026-06-18T16:12:59.396Z" }, ] +[[package]] +name = "mujoco" +version = "3.3.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "absl-py", marker = "sys_platform == 'darwin'" }, + { name = "etils", version = "1.13.0", source = { registry = "https://pypi.org/simple" }, extra = ["epath"], marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, + { name = "etils", version = "1.14.0", source = { registry = "https://pypi.org/simple" }, extra = ["epath"], marker = "python_full_version >= '3.11' and sys_platform == 'darwin'" }, + { name = "glfw", marker = "sys_platform == 'darwin'" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, + { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' and sys_platform == 'darwin'" }, + { name = "pyopengl", marker = "sys_platform == 'darwin'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/8a/c6/76716fd205ccd0afbaef8b355555ace70347bd02c921d14e05e68eab3dbb/mujoco-3.3.0.tar.gz", hash = "sha256:0fb12ab715bc2b6d2394a6330b8c3a1dd95b0f3ba812bfe4f6c91e0a1ca3ad0f", size = 801447, upload-time = "2025-02-27T19:16:18.748Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0c/f4/21ff1dc849ff6ab8f2fc29d6d6286ab5e03c25ac7cced3bcbbe052c257be/mujoco-3.3.0-cp310-cp310-macosx_10_16_x86_64.whl", hash = "sha256:676285e5a752e5b937fc79ff56cad6d62021992e6800d8085ab316c67d7b0ee4", size = 6484740, upload-time = "2025-02-27T19:14:36.642Z" }, + { url = "https://files.pythonhosted.org/packages/ca/3b/22acd7de2cf66839a3e49b57cc428ab6816764f128209a80578403eac83d/mujoco-3.3.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a6991fe6b255eabf5c62c8a3dffa2e04a51bd74d04de42869c322da1c4279562", size = 6512230, upload-time = "2025-02-27T19:14:40.481Z" }, + { url = "https://files.pythonhosted.org/packages/11/aa/a0b20e86e9944fdbdbea004974df1426f4bc532c9711112012e89a56a389/mujoco-3.3.0-cp311-cp311-macosx_10_16_x86_64.whl", hash = "sha256:d61157a53356c790ef73d4ec918288c2dd7d0da26eaa1de8f56cffbdcd1ca275", size = 6498398, upload-time = "2025-02-27T19:14:59.241Z" }, + { url = "https://files.pythonhosted.org/packages/b5/12/5a158a125114e35409e60dedeb694bf80d7e3a02c99edc8734ed352baff2/mujoco-3.3.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:60025a554e444a85d3183714115f48ea4582c5c654f120c5f7652e22260b0069", size = 6524031, upload-time = "2025-02-27T19:15:04.301Z" }, + { url = "https://files.pythonhosted.org/packages/11/6f/218bf9c8480340d640d4f8e09c0295bfd02cc08610bd6798fad12ebc9cc0/mujoco-3.3.0-cp312-cp312-macosx_10_16_x86_64.whl", hash = "sha256:32a7671069799e69f51bf515f6f97d8b2c852a0de065129033347e616fe4e9ed", size = 6588848, upload-time = "2025-02-27T19:15:22.124Z" }, + { url = "https://files.pythonhosted.org/packages/42/3b/f17690dee3f3f3771e9953ffe634d0a1649af44c609c8b201325b9a7fbe6/mujoco-3.3.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2f435f34ea8c41711e68c635ada89c7347e9d53a330c2ff748723a96495d8710", size = 6493393, upload-time = "2025-02-27T19:15:26.398Z" }, +] + [[package]] name = "multidict" version = "6.7.1" @@ -1807,6 +1884,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/8d/0e/8d215484a9877adcf2459a8b28165fc89668b034565277fd55d666edd247/pylibsrtp-1.0.0-cp310-abi3-macosx_11_0_arm64.whl", hash = "sha256:aaad74e5c8cbc1c32056c3767fea494c1e62b3aea2c908eda2a1051389fdad76", size = 2182739, upload-time = "2025-10-13T16:12:17.121Z" }, ] +[[package]] +name = "pyopengl" +version = "3.1.10" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/6f/16/912b7225d56284859cd9a672827f18be43f8012f8b7b932bc4bd959a298e/pyopengl-3.1.10.tar.gz", hash = "sha256:c4a02d6866b54eb119c8e9b3fb04fa835a95ab802dd96607ab4cdb0012df8335", size = 1915580, upload-time = "2025-08-18T02:33:01.76Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/de/e4/1ba6f44e491c4eece978685230dde56b14d51a0365bc1b774ddaa94d14cd/pyopengl-3.1.10-py3-none-any.whl", hash = "sha256:794a943daced39300879e4e47bd94525280685f42dbb5a998d336cfff151d74f", size = 3194996, upload-time = "2025-08-18T02:32:59.902Z" }, +] + [[package]] name = "pyopenssl" version = "26.3.0" @@ -2035,6 +2121,11 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/2e/45/5a54ca987529754ddef55e9bd03cf2a553f79dc2e1bcf4262e661cc4bdae/reachy_mini-1.8.0-py3-none-any.whl", hash = "sha256:5dd686e77c158fe54528b706a0d51feb3c9d2d7b4a09f762a36cb24472254fd8", size = 24864618, upload-time = "2026-06-01T08:54:09.518Z" }, ] +[package.optional-dependencies] +mujoco = [ + { name = "mujoco", marker = "sys_platform == 'darwin'" }, +] + [[package]] name = "reachy-mini-conversation-app" version = "0.3.0" @@ -2049,7 +2140,7 @@ dependencies = [ { name = "openai", marker = "sys_platform == 'darwin'" }, { name = "opencv-python", marker = "sys_platform == 'darwin'" }, { name = "python-dotenv", marker = "sys_platform == 'darwin'" }, - { name = "reachy-mini", marker = "sys_platform == 'darwin'" }, + { name = "reachy-mini", extra = ["mujoco"], marker = "sys_platform == 'darwin'" }, { name = "reachy-mini-dances-library", marker = "sys_platform == 'darwin'" }, { name = "reachy-mini-toolbox", marker = "sys_platform == 'darwin'" }, ] @@ -2102,7 +2193,7 @@ requires-dist = [ { name = "openai", specifier = ">=2.1" }, { name = "opencv-python", specifier = ">=4.12.0.88" }, { name = "python-dotenv" }, - { name = "reachy-mini", specifier = "==1.8.0" }, + { name = "reachy-mini", extras = ["mujoco"], specifier = "==1.8.0" }, { name = "reachy-mini-dances-library" }, { name = "reachy-mini-toolbox" }, { name = "supervision", marker = "extra == 'all-vision'" }, @@ -2947,3 +3038,12 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/d9/65/b58fa5361e90e8bfc1c5355af9fc7e5d4f28bc6ad15f1cab6c558269cd6e/zeroconf-0.150.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ad2e3e3062491f56fd16388f1abce6f6185bdc84f221698a38fa9df7b8664c95", size = 1680489, upload-time = "2026-06-22T18:23:50.772Z" }, { url = "https://files.pythonhosted.org/packages/63/a4/49a46fcf1afe8f96bec6751e4fe761ce2cd9c124f0d01748f69fa5566013/zeroconf-0.150.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1aba87b6c1cdb6859d0c2291c67dc7d3ac06612250fddd95f68b7632e1e89a79", size = 1684292, upload-time = "2026-06-22T18:24:08.468Z" }, ] + +[[package]] +name = "zipp" +version = "4.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b9/d8/eab98a517c14134c0b2eb4e2387bc5f457334293ec5d2dd3857ec2966802/zipp-4.1.0.tar.gz", hash = "sha256:4cb57381f544315db7688e976e922a2b18cdb513d21cc194eb42232ba2a3e602", size = 26214, upload-time = "2026-05-18T20:08:57.967Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3a/13/547360d81e6d88d58492968ffda9f9542854f11310ee556fef14260cc886/zipp-4.1.0-py3-none-any.whl", hash = "sha256:25ad4e16390cd314347dd8f1de67a2ac538ae658ed4ab9db16029c07c188e97f", size = 10238, upload-time = "2026-05-18T20:08:57.045Z" }, +] From 8a0b2a4595fba67a5f19754f03eeb161dcfc4f2d Mon Sep 17 00:00:00 2001 From: Johnny Greco Date: Wed, 24 Jun 2026 23:17:09 -0400 Subject: [PATCH 08/22] Support provider-routed text input --- projects/reachy-mini-openshell/.env.example | 5 +- .../reachy_mini_conversation_app/config.py | 29 +- .../reachy_mini_conversation_app/console.py | 261 +---------- .../src/reachy_mini_conversation_app/main.py | 60 ++- .../openai_realtime.py | 442 ++++++++++++++---- .../static/index.html | 54 --- .../static/main.js | 136 ------ .../static/style.css | 210 --------- .../tests/test_openai_realtime.py | 332 +++++++++++++ 9 files changed, 771 insertions(+), 758 deletions(-) delete mode 100644 projects/reachy-mini-openshell/src/reachy_mini_conversation_app/static/index.html delete mode 100644 projects/reachy-mini-openshell/src/reachy_mini_conversation_app/static/main.js delete mode 100644 projects/reachy-mini-openshell/src/reachy_mini_conversation_app/static/style.css diff --git a/projects/reachy-mini-openshell/.env.example b/projects/reachy-mini-openshell/.env.example index 12cf25b2..42515c10 100644 --- a/projects/reachy-mini-openshell/.env.example +++ b/projects/reachy-mini-openshell/.env.example @@ -1,5 +1,6 @@ -OPENAI_API_KEY= -MODEL_NAME="gpt-realtime" +OPENAI_API_KEY=${NVIDIA_API_KEY} +OPENAI_BASE_URL=https://inference-api.nvidia.com/v1 +MODEL_NAME=azure/anthropic/claude-opus-4-8 # Used only with --local-vision. LOCAL_VISION_MODEL=HuggingFaceTB/SmolVLM2-2.2B-Instruct diff --git a/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/config.py b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/config.py index fe10c9fd..6cf01c4f 100644 --- a/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/config.py +++ b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/config.py @@ -3,7 +3,7 @@ import logging from pathlib import Path -from dotenv import find_dotenv, load_dotenv +from dotenv import find_dotenv, load_dotenv, dotenv_values LOCKED_PROFILE = "_reachy_mini_conversation_app_locked_profile" @@ -38,6 +38,8 @@ def _env_flag(name: str, default: bool = False) -> bool: sys.exit(1) _skip_dotenv = _env_flag("REACHY_MINI_SKIP_DOTENV", default=False) +_dotenv_path = "" +_dotenv_values: dict[str, str | None] = {} if _skip_dotenv: logger.info("Skipping .env loading because REACHY_MINI_SKIP_DOTENV is set") @@ -46,24 +48,43 @@ def _env_flag(name: str, default: bool = False) -> bool: dotenv_path = find_dotenv(usecwd=True) if dotenv_path: + _dotenv_path = dotenv_path + _dotenv_values = dict(dotenv_values(dotenv_path)) # Load .env and override environment variables load_dotenv(dotenv_path=dotenv_path, override=True) logger.info(f"Configuration loaded from {dotenv_path}") else: - logger.warning("No .env file found, using environment variables") + logger.warning("No .env file found") + + +def _dotenv_value(name: str, default: str | None = None) -> str | None: + """Return a value from the loaded .env file only.""" + value = _dotenv_values.get(name) + if value is None: + return default + value = value.strip() + return value if value else default class Config: """Configuration class for the conversation app.""" - OPENAI_API_KEY = os.getenv("OPENAI_API_KEY") + OPENAI_API_KEY = _dotenv_value("OPENAI_API_KEY") + OPENAI_BASE_URL = _dotenv_value("OPENAI_BASE_URL", "https://api.openai.com/v1") MODEL_NAME = os.getenv("MODEL_NAME", "gpt-realtime") HF_HOME = os.getenv("HF_HOME", "./cache") LOCAL_VISION_MODEL = os.getenv("LOCAL_VISION_MODEL", "HuggingFaceTB/SmolVLM2-2.2B-Instruct") HF_TOKEN = os.getenv("HF_TOKEN") - logger.debug(f"Model: {MODEL_NAME}, HF_HOME: {HF_HOME}, Vision Model: {LOCAL_VISION_MODEL}") + logger.debug( + "Model: %s, Base URL: %s, HF_HOME: %s, Vision Model: %s", + MODEL_NAME, + OPENAI_BASE_URL, + HF_HOME, + LOCAL_VISION_MODEL, + ) logger.debug(f"Locked profile: {LOCKED_PROFILE}") + logger.debug("Dotenv path: %s", _dotenv_path or "") def __init__(self) -> None: """Initialize the configuration.""" diff --git a/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/console.py b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/console.py index 57103578..ff284fca 100644 --- a/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/console.py +++ b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/console.py @@ -1,20 +1,9 @@ -"""Bidirectional local audio stream with optional settings UI. +"""Bidirectional local audio stream for Reachy Mini audio.""" -In headless mode, there is no Gradio UI. If the OpenAI API key is not -available via environment/.env, we expose a minimal settings page via the -Reachy Mini Apps settings server to let non-technical users enter it. - -The settings UI is served from this package's ``static/`` folder and offers a -single password field to set ``OPENAI_API_KEY``. Once set, we persist it to the -app instance's ``.env`` file (if available) and proceed to start streaming. -""" - -import os -import sys import time import asyncio import logging -from typing import List, Optional +from typing import Any, List, Optional from pathlib import Path from fastrtc import AdditionalOutputs, audio_to_float32 @@ -26,20 +15,6 @@ from reachy_mini_conversation_app.openai_realtime import OpenaiRealtimeHandler -try: - # FastAPI is provided by the Reachy Mini Apps runtime - from fastapi import FastAPI, Response - from pydantic import BaseModel - from fastapi.responses import FileResponse, JSONResponse - from starlette.staticfiles import StaticFiles -except Exception: # pragma: no cover - only loaded when settings_app is used - FastAPI = object # type: ignore - FileResponse = object # type: ignore - JSONResponse = object # type: ignore - StaticFiles = object # type: ignore - BaseModel = object # type: ignore - - logger = logging.getLogger(__name__) @@ -51,12 +26,12 @@ def __init__( handler: OpenaiRealtimeHandler, robot: ReachyMini, *, - settings_app: Optional[FastAPI] = None, + settings_app: Optional[Any] = None, instance_path: Optional[str] = None, ): """Initialize the stream with an OpenAI realtime handler and pipelines. - - ``settings_app``: the Reachy Mini Apps FastAPI to attach settings endpoints. + - ``settings_app``: reserved for the Reachy Mini Apps runtime. - ``instance_path``: directory where per-instance ``.env`` should be stored. """ self.handler = handler @@ -65,240 +40,38 @@ def __init__( self._tasks: List[asyncio.Task[None]] = [] # Allow the handler to flush the player queue when appropriate. self.handler._clear_queue = self.clear_audio_queue - self._settings_app: Optional[FastAPI] = settings_app + self._settings_app: Optional[Any] = settings_app self._instance_path: Optional[str] = instance_path - self._settings_initialized = False self._asyncio_loop = None - # ---- Settings UI (only when API key is missing) ---- - def _read_env_lines(self, env_path: Path) -> list[str]: - """Load env file contents or a template as a list of lines.""" - inst = env_path.parent - try: - if env_path.exists(): - try: - return env_path.read_text(encoding="utf-8").splitlines() - except Exception: - return [] - template_text = None - ex = inst / ".env.example" - if ex.exists(): - try: - template_text = ex.read_text(encoding="utf-8") - except Exception: - template_text = None - if template_text is None: - try: - cwd_example = Path.cwd() / ".env.example" - if cwd_example.exists(): - template_text = cwd_example.read_text(encoding="utf-8") - except Exception: - template_text = None - if template_text is None: - packaged = Path(__file__).parent / ".env.example" - if packaged.exists(): - try: - template_text = packaged.read_text(encoding="utf-8") - except Exception: - template_text = None - return template_text.splitlines() if template_text else [] - except Exception: - return [] - - def _persist_api_key(self, key: str) -> None: - """Persist API key to environment and instance ``.env`` if possible. - - Behavior: - - Always sets ``OPENAI_API_KEY`` in process env and in-memory config. - - Writes/updates ``/.env``: - * If ``.env`` exists, replaces/append OPENAI_API_KEY line. - * Else, copies template from ``/.env.example`` when present, - otherwise falls back to the packaged template - ``reachy_mini_conversation_app/.env.example``. - * Ensures the resulting file contains the full template plus the key. - - Loads the written ``.env`` into the current process environment. - """ - k = (key or "").strip() - if not k: - return - # Update live process env and config so consumers see it immediately - try: - os.environ["OPENAI_API_KEY"] = k - except Exception: # best-effort - pass - try: - config.OPENAI_API_KEY = k - except Exception: - pass - - if not self._instance_path: - return - try: - inst = Path(self._instance_path) - env_path = inst / ".env" - lines = self._read_env_lines(env_path) - replaced = False - for i, ln in enumerate(lines): - if ln.strip().startswith("OPENAI_API_KEY="): - lines[i] = f"OPENAI_API_KEY={k}" - replaced = True - break - if not replaced: - lines.append(f"OPENAI_API_KEY={k}") - final_text = "\n".join(lines) + "\n" - env_path.write_text(final_text, encoding="utf-8") - logger.info("Persisted OPENAI_API_KEY to %s", env_path) - - # Load the newly written .env into this process to ensure downstream imports see it - try: - from dotenv import load_dotenv - - load_dotenv(dotenv_path=str(env_path), override=True) - except Exception: - pass - except Exception as e: - logger.warning("Failed to persist OPENAI_API_KEY: %s", e) - - def _init_settings_ui_if_needed(self) -> None: - """Attach minimal settings UI to the settings app. - - Always mounts the UI when a settings_app is provided so that users - see a confirmation message even if the API key is already configured. - """ - if self._settings_initialized: - return - if self._settings_app is None: - return - - static_dir = Path(__file__).parent / "static" - index_file = static_dir / "index.html" - - if hasattr(self._settings_app, "mount"): - try: - # Serve /static/* assets - self._settings_app.mount("/static", StaticFiles(directory=str(static_dir)), name="static") - except Exception: - pass - - class ApiKeyPayload(BaseModel): - openai_api_key: str - - # GET / -> index.html - @self._settings_app.get("/") - def _root() -> FileResponse: - return FileResponse(str(index_file)) - - # GET /favicon.ico -> optional, avoid noisy 404s on some browsers - @self._settings_app.get("/favicon.ico") - def _favicon() -> Response: - return Response(status_code=204) - - # GET /status -> whether key is set - @self._settings_app.get("/status") - def _status() -> JSONResponse: - has_key = bool(config.OPENAI_API_KEY and str(config.OPENAI_API_KEY).strip()) - return JSONResponse({"has_key": has_key}) - - # GET /ready -> whether backend finished loading tools - @self._settings_app.get("/ready") - def _ready() -> JSONResponse: - try: - mod = sys.modules.get("reachy_mini_conversation_app.tools.core_tools") - ready = bool(getattr(mod, "_TOOLS_INITIALIZED", False)) if mod else False - except Exception: - ready = False - return JSONResponse({"ready": ready}) - - # POST /openai_api_key -> set/persist key - @self._settings_app.post("/openai_api_key") - def _set_key(payload: ApiKeyPayload) -> JSONResponse: - key = (payload.openai_api_key or "").strip() - if not key: - return JSONResponse({"ok": False, "error": "empty_key"}, status_code=400) - self._persist_api_key(key) - return JSONResponse({"ok": True}) - - # POST /validate_api_key -> validate key without persisting it - @self._settings_app.post("/validate_api_key") - async def _validate_key(payload: ApiKeyPayload) -> JSONResponse: - key = (payload.openai_api_key or "").strip() - if not key: - return JSONResponse({"valid": False, "error": "empty_key"}, status_code=400) - - # Try to validate by checking if we can fetch the models - try: - import httpx - - headers = {"Authorization": f"Bearer {key}", "Content-Type": "application/json"} - async with httpx.AsyncClient(timeout=10.0) as client: - response = await client.get("https://api.openai.com/v1/models", headers=headers) - if response.status_code == 200: - return JSONResponse({"valid": True}) - elif response.status_code == 401: - return JSONResponse({"valid": False, "error": "invalid_api_key"}, status_code=401) - else: - return JSONResponse( - {"valid": False, "error": "validation_failed"}, status_code=response.status_code - ) - except Exception as e: - logger.warning(f"API key validation failed: {e}") - return JSONResponse({"valid": False, "error": "validation_error"}, status_code=500) - - self._settings_initialized = True - def launch(self) -> None: """Start the recorder/player and run the async processing loops. - If the OpenAI key is missing, expose a tiny settings UI via the - Reachy Mini settings server to collect it before starting streams. + Provider credentials are loaded from `.env` only. If `OPENAI_API_KEY` is + missing, startup stops before media is opened. """ self._stop_event.clear() - # Try to load an existing instance .env first (covers subsequent runs) + # Try to load an existing instance .env first for Reachy Mini app-shell runs. if self._instance_path: try: - from dotenv import load_dotenv + from dotenv import load_dotenv, dotenv_values env_path = Path(self._instance_path) / ".env" if env_path.exists(): load_dotenv(dotenv_path=str(env_path), override=True) - new_key = os.getenv("OPENAI_API_KEY", "").strip() - if new_key: - try: - config.OPENAI_API_KEY = new_key - except Exception: - pass + values = dotenv_values(env_path) + config.OPENAI_API_KEY = (values.get("OPENAI_API_KEY") or "").strip() or None + config.OPENAI_BASE_URL = ( + (values.get("OPENAI_BASE_URL") or "").strip() + or "https://api.openai.com/v1" + ) except Exception: pass # Instance .env loading is optional; continue with defaults - # If key is still missing, try to download one from HuggingFace if not (config.OPENAI_API_KEY and str(config.OPENAI_API_KEY).strip()): - logger.info("OPENAI_API_KEY not set, attempting to download from HuggingFace...") - try: - from gradio_client import Client - client = Client("HuggingFaceM4/gradium_setup", verbose=False) - key, status = client.predict(api_name="/claim_b_key") - if key and key.strip(): - logger.info("Successfully downloaded API key from HuggingFace") - # Persist it immediately - self._persist_api_key(key) - except Exception as e: - logger.warning(f"Failed to download API key from HuggingFace: {e}") - - # Always expose settings UI if a settings app is available - # (do this AFTER loading/downloading the key so status endpoint sees the right value) - self._init_settings_ui_if_needed() - - # If key is still missing -> wait until provided via the settings UI - if not (config.OPENAI_API_KEY and str(config.OPENAI_API_KEY).strip()): - logger.warning("OPENAI_API_KEY not found. Open the app settings page to enter it.") - # Poll until the key becomes available (set via the settings UI) - try: - while not (config.OPENAI_API_KEY and str(config.OPENAI_API_KEY).strip()): - time.sleep(0.2) - except KeyboardInterrupt: - logger.info("Interrupted while waiting for API key.") - return + logger.error("OPENAI_API_KEY is missing. Add it to .env and restart the conversation app.") + return # Start media after key is set/available self._robot.media.start_recording() diff --git a/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/main.py b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/main.py index 6b809e8a..f618aef4 100644 --- a/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/main.py +++ b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/main.py @@ -31,7 +31,7 @@ def main() -> None: def run( args: argparse.Namespace, - robot: ReachyMini = None, + robot: ReachyMini | None = None, app_stop_event: Optional[threading.Event] = None, settings_app: Optional[Any] = None, instance_path: Optional[str] = None, @@ -41,7 +41,6 @@ def run( import gradio as gr from fastapi import FastAPI from fastrtc import Stream - from gradio.utils import get_space except ImportError as exc: raise RuntimeError( "Reachy OpenShell conversation dependencies are not installed. " @@ -144,25 +143,66 @@ def run( stream_manager: gr.Blocks | LocalStream | None = None if args.gradio: - api_key_textbox = gr.Textbox( - label="OPENAI API Key", - type="password", - value=os.getenv("OPENAI_API_KEY") if not get_space() else "", - ) - stream = Stream( handler=handler, mode="send-receive", modality="audio", additional_inputs=[ chatbot, - api_key_textbox, ], additional_outputs=[chatbot], additional_outputs_handler=update_chatbot, ui_args={"title": "Talk with Reachy Mini"}, ) stream_manager = stream.ui + + with stream_manager: + input_mode = gr.Radio( + choices=["Microphone", "Text"], + value="Microphone", + label="Input", + ) + with gr.Row(): + text_input = gr.Textbox( + label="Message", + lines=2, + max_lines=5, + visible=False, + ) + send_button = gr.Button("Send", variant="primary", visible=False) + + def switch_input_mode(mode: str) -> tuple[dict[str, Any], dict[str, Any], dict[str, Any]]: + text_mode = mode == "Text" + return ( + gr.update(visible=not text_mode), + gr.update(visible=text_mode), + gr.update(visible=text_mode), + ) + + async def send_text_message( + message: str, + chatbot_messages: List[Dict[str, Any]] | None, + ) -> tuple[List[Dict[str, Any]], str]: + updated_chatbot = list(chatbot_messages or []) + updated_chatbot.extend(await handler.send_text_message(message)) + return updated_chatbot, "" + + input_mode.change( + fn=switch_input_mode, + inputs=input_mode, + outputs=[stream.webrtc_component, text_input, send_button], + ) + text_input.submit( + fn=send_text_message, + inputs=[text_input, chatbot], + outputs=[chatbot, text_input], + ) + send_button.click( + fn=send_text_message, + inputs=[text_input, chatbot], + outputs=[chatbot, text_input], + ) + if not settings_app: app = FastAPI() else: @@ -243,7 +283,7 @@ def run(self, reachy_mini: ReachyMini, stop_event: threading.Event) -> None: robot=reachy_mini, app_stop_event=stop_event, settings_app=self.settings_app, - instance_path=instance_path, + instance_path=str(instance_path), ) diff --git a/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/openai_realtime.py b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/openai_realtime.py index c43d6172..7e993157 100644 --- a/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/openai_realtime.py +++ b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/openai_realtime.py @@ -4,8 +4,7 @@ import random import asyncio import logging -from typing import Any, Final, Tuple, Literal, Optional -from pathlib import Path +from typing import Any, Final, Tuple, Literal, Optional, cast from datetime import datetime import cv2 @@ -22,6 +21,7 @@ from reachy_mini_conversation_app.tools.core_tools import ( ToolDependencies, get_tool_specs, + dispatch_tool_call_with_manager, ) from reachy_mini_conversation_app.tools.background_tool_manager import ( ToolCallRoutine, @@ -89,9 +89,6 @@ def __init__(self, deps: ToolDependencies, gradio_mode: bool = False, instance_p self.is_idle_tool_call = False self.gradio_mode = gradio_mode self.instance_path = instance_path - # Track how the API key was provided (env vs textbox) and its value - self._key_source: Literal["env", "textbox"] = "env" - self._provided_api_key: str | None = None # Debouncing for partial transcripts self.partial_transcript_task: asyncio.Task[None] | None = None @@ -101,6 +98,8 @@ def __init__(self, deps: ToolDependencies, gradio_mode: bool = False, instance_p # Internal lifecycle flags self._shutdown_requested: bool = False self._connected_event: asyncio.Event = asyncio.Event() + self._text_startup_task: asyncio.Task[None] | None = None + self._startup_error: str | None = None # Background tool manager self.tool_manager = BackgroundToolManager() @@ -120,6 +119,314 @@ def copy(self) -> "OpenaiRealtimeHandler": """Create a copy of the handler.""" return OpenaiRealtimeHandler(self.deps, self.gradio_mode, self.instance_path) + def _record_startup_error(self, message: str) -> None: + """Store a startup failure so the UI can show a useful error.""" + self._startup_error = message + try: + self._connected_event.set() + except Exception: + pass + + def _realtime_context(self) -> str: + """Return non-secret Realtime configuration for diagnostics.""" + return f"model={config.MODEL_NAME!r}, base_url={config.OPENAI_BASE_URL!r}" + + def _provider_realtime_hint(self) -> str: + """Return a provider-specific hint for common compatibility failures.""" + base_url = str(config.OPENAI_BASE_URL) + if "integrate.api.nvidia.com" in base_url or "inference-api.nvidia.com" in base_url: + return ( + " NVIDIA OpenAI-compatible chat endpoints use Chat Completions; " + "microphone mode requires an OpenAI-compatible Realtime API endpoint." + ) + return "" + + def _not_connected_message(self) -> str: + """Return the user-facing reason the Realtime session is unavailable.""" + if self._startup_error: + return f"[error] {self._startup_error}" + return ( + "[error] Realtime session is not connected. Check OPENAI_API_KEY, " + "OPENAI_BASE_URL, and MODEL_NAME in .env." + ) + + @staticmethod + def _text_model_uses_realtime() -> bool: + """Return whether typed messages should use the Realtime transport.""" + return "realtime" in str(config.MODEL_NAME).lower() + + @staticmethod + def _chat_completion_tool_specs() -> list[dict[str, Any]]: + """Convert Realtime-style tool specs to Chat Completions tool specs.""" + chat_tools: list[dict[str, Any]] = [] + for tool in get_tool_specs(): + if tool.get("type") != "function": + continue + chat_tools.append( + { + "type": "function", + "function": { + "name": tool.get("name"), + "description": tool.get("description", ""), + "parameters": tool.get("parameters", {}), + }, + } + ) + return chat_tools + + @staticmethod + def _tool_call_value(tool_call: Any, name: str) -> Any: + """Read a value from either an SDK model object or a dict.""" + if isinstance(tool_call, dict): + return tool_call.get(name) + return getattr(tool_call, name, None) + + @classmethod + def _tool_call_function_value(cls, tool_call: Any, name: str) -> Any: + """Read a function value from either an SDK tool-call object or a dict.""" + function = cls._tool_call_value(tool_call, "function") + if isinstance(function, dict): + return function.get(name) + return getattr(function, name, None) + + @staticmethod + def _serialize_tool_call(tool_call: Any) -> dict[str, Any]: + """Convert a tool call into the dict shape Chat Completions expects.""" + if hasattr(tool_call, "model_dump"): + return tool_call.model_dump() + if isinstance(tool_call, dict): + return tool_call + return { + "id": getattr(tool_call, "id", None), + "type": getattr(tool_call, "type", "function"), + "function": { + "name": getattr(getattr(tool_call, "function", None), "name", None), + "arguments": getattr(getattr(tool_call, "function", None), "arguments", "{}"), + }, + } + + def _openai_api_key_or_error(self) -> str | None: + """Return the configured API key or record a useful startup error.""" + openai_api_key = (config.OPENAI_API_KEY or "").strip() + if openai_api_key: + return openai_api_key + + message = ( + "OPENAI_API_KEY is missing or empty after reading .env. Add it to .env and restart the " + "conversation app. If .env uses OPENAI_API_KEY=${NVIDIA_API_KEY}, make sure " + "NVIDIA_API_KEY is exported in the shell that starts the app." + ) + self._record_startup_error(message) + logger.error(message) + return None + + async def _ensure_text_session(self) -> bool: + """Start a Realtime session for text-only Gradio input if needed.""" + if self.connection is not None: + return True + + if self._text_startup_task is None or self._text_startup_task.done(): + self._startup_error = None + try: + self._connected_event.clear() + except Exception: + pass + self._text_startup_task = asyncio.create_task(self.start_up(), name="openai-realtime-text") + + try: + await asyncio.wait_for(self._connected_event.wait(), timeout=10.0) + except asyncio.TimeoutError: + logger.warning("Timed out waiting for text Realtime session startup") + + return self.connection is not None + + @staticmethod + def _chat_message_from_output(output: AdditionalOutputs) -> dict[str, Any] | None: + """Convert a FastRTC AdditionalOutputs payload into a chatbot message.""" + if not output.args: + return None + candidate = output.args[0] + if not isinstance(candidate, dict): + return None + role = candidate.get("role") + content = candidate.get("content") + if role == "user_partial" or not isinstance(role, str) or content is None: + return None + return candidate + + async def send_text_message(self, message: str, timeout: float = 30.0) -> list[dict[str, Any]]: + """Send a typed user message and collect chat updates.""" + text = message.strip() + if not text: + return [] + + if not self._text_model_uses_realtime(): + return await self._send_chat_completion_text_message(text) + + if not await self._ensure_text_session(): + return [ + { + "role": "assistant", + "content": self._not_connected_message(), + }, + ] + + await self.connection.conversation.item.create( + item={ + "type": "message", + "role": "user", + "content": [{"type": "input_text", "text": text}], + }, + ) + await self._safe_response_create() + + messages: list[dict[str, Any]] = [{"role": "user", "content": text}] + saw_assistant_message = False + deadline = asyncio.get_event_loop().time() + timeout + + while asyncio.get_event_loop().time() < deadline: + try: + output = await asyncio.wait_for(self.output_queue.get(), timeout=0.5) + except asyncio.TimeoutError: + if saw_assistant_message and self._response_done_event.is_set(): + break + continue + + if not isinstance(output, AdditionalOutputs): + continue + + chat_message = self._chat_message_from_output(output) + if chat_message is None: + continue + + messages.append(chat_message) + if chat_message.get("role") == "assistant": + saw_assistant_message = True + + if saw_assistant_message and self._response_done_event.is_set(): + break + + if not saw_assistant_message: + messages.append({"role": "assistant", "content": "[error] Timed out waiting for a response."}) + + return messages + + async def _send_chat_completion_text_message(self, text: str) -> list[dict[str, Any]]: + """Send a typed message through Chat Completions for non-Realtime models.""" + openai_api_key = self._openai_api_key_or_error() + if openai_api_key is None: + return [{"role": "assistant", "content": self._not_connected_message()}] + + if getattr(self, "client", None) is None: + self.client = AsyncOpenAI( + api_key=openai_api_key, + base_url=config.OPENAI_BASE_URL, + ) + + chatbot_messages: list[dict[str, Any]] = [{"role": "user", "content": text}] + chat_messages: list[dict[str, Any]] = [ + {"role": "system", "content": get_session_instructions()}, + {"role": "user", "content": text}, + ] + chat_tools = self._chat_completion_tool_specs() + + try: + completion = await self.client.chat.completions.create( + model=config.MODEL_NAME, + messages=cast(Any, chat_messages), + tools=cast(Any, chat_tools), + tool_choice="auto", + ) + except Exception as e: + logger.exception("Chat Completions request failed") + return [ + *chatbot_messages, + { + "role": "assistant", + "content": ( + f"[error] Chat Completions request failed " + f"(model={config.MODEL_NAME!r}, base_url={config.OPENAI_BASE_URL!r}): " + f"{type(e).__name__}: {e}" + ), + }, + ] + + choice = completion.choices[0] if completion.choices else None + assistant_message = getattr(choice, "message", None) if choice else None + assistant_content = getattr(assistant_message, "content", None) or "" + tool_calls = getattr(assistant_message, "tool_calls", None) or [] + + if not tool_calls: + chatbot_messages.append({"role": "assistant", "content": assistant_content or "[no response]"}) + return chatbot_messages + + chat_messages.append( + { + "role": "assistant", + "content": assistant_content, + "tool_calls": [self._serialize_tool_call(tool_call) for tool_call in tool_calls], + } + ) + + for tool_call in tool_calls: + tool_call_id = self._tool_call_value(tool_call, "id") or str(uuid.uuid4()) + tool_name = self._tool_call_function_value(tool_call, "name") + args_json = self._tool_call_function_value(tool_call, "arguments") or "{}" + if not isinstance(tool_name, str): + tool_result = {"error": "tool call did not include a valid function name"} + else: + tool_result = await dispatch_tool_call_with_manager( + tool_name, + args_json, + self.deps, + self.tool_manager, + ) + + tool_result_json = json.dumps(tool_result) + chat_messages.append( + { + "role": "tool", + "tool_call_id": tool_call_id, + "content": tool_result_json, + } + ) + chatbot_messages.append( + { + "role": "assistant", + "content": tool_result_json, + "metadata": { + "title": f"Used tool {tool_name or 'unknown'}", + "status": "done", + }, + } + ) + + try: + follow_up = await self.client.chat.completions.create( + model=config.MODEL_NAME, + messages=cast(Any, chat_messages), + tools=cast(Any, chat_tools), + ) + except Exception as e: + logger.exception("Chat Completions tool follow-up failed") + chatbot_messages.append( + { + "role": "assistant", + "content": ( + f"[error] Chat Completions tool follow-up failed " + f"(model={config.MODEL_NAME!r}, base_url={config.OPENAI_BASE_URL!r}): " + f"{type(e).__name__}: {e}" + ), + } + ) + return chatbot_messages + + follow_up_choice = follow_up.choices[0] if follow_up.choices else None + follow_up_message = getattr(follow_up_choice, "message", None) if follow_up_choice else None + follow_up_content = getattr(follow_up_message, "content", None) or "Done." + chatbot_messages.append({"role": "assistant", "content": follow_up_content}) + return chatbot_messages + async def _emit_debounced_partial(self, transcript: str, sequence: int) -> None: """Emit partial transcript after debounce delay.""" try: @@ -134,27 +441,14 @@ async def _emit_debounced_partial(self, transcript: str, sequence: int) -> None: async def start_up(self) -> None: """Start the handler with minimal retries on unexpected websocket closure.""" - openai_api_key = config.OPENAI_API_KEY - if self.gradio_mode and not openai_api_key: - # api key was not found in .env or in the environment variables - await self.wait_for_args() # type: ignore[no-untyped-call] - args = list(self.latest_args) - textbox_api_key = args[3] if len(args[3]) > 0 else None - if textbox_api_key is not None: - openai_api_key = textbox_api_key - self._key_source = "textbox" - self._provided_api_key = textbox_api_key - else: - openai_api_key = config.OPENAI_API_KEY - else: - if not openai_api_key or not openai_api_key.strip(): - # In headless console mode, LocalStream now blocks startup until the key is provided. - # However, unit tests may invoke this handler directly with a stubbed client. - # To keep tests hermetic without requiring a real key, fall back to a placeholder. - logger.warning("OPENAI_API_KEY missing. Proceeding with a placeholder (tests/offline).") - openai_api_key = "DUMMY" + openai_api_key = self._openai_api_key_or_error() + if openai_api_key is None: + return - self.client = AsyncOpenAI(api_key=openai_api_key) + self.client = AsyncOpenAI( + api_key=openai_api_key, + base_url=config.OPENAI_BASE_URL, + ) max_attempts = 3 for attempt in range(1, max_attempts + 1): @@ -173,12 +467,29 @@ async def start_up(self) -> None: logger.info("Retrying in %.1f seconds...", delay) await asyncio.sleep(delay) continue - raise + message = ( + f"Realtime websocket closed before startup completed ({self._realtime_context()}): " + f"{type(e).__name__}: {e}.{self._provider_realtime_hint()}" + ) + self._record_startup_error(message) + logger.error(message) + return + except Exception as e: + message = ( + f"Realtime startup failed ({self._realtime_context()}): " + f"{type(e).__name__}: {e}.{self._provider_realtime_hint()}" + ) + self._record_startup_error(message) + logger.exception(message) + return finally: # never keep a stale reference self.connection = None try: - self._connected_event.clear() + if self._startup_error is None: + self._connected_event.clear() + else: + self._connected_event.set() except Exception: pass @@ -418,10 +729,12 @@ async def _run_realtime_session(self) -> None: LOCKED_PROFILE, get_session_voice(), ) - # If we reached here, the session update succeeded which implies the API key worked. - # Persist the key to a newly created .env (copied from .env.example) if needed. - self._persist_api_key_if_needed() - except Exception: + except Exception as e: + message = ( + f"Realtime session.update failed ({self._realtime_context()}): " + f"{type(e).__name__}: {e}.{self._provider_realtime_hint()}" + ) + self._record_startup_error(message) logger.exception("Realtime session.update failed; aborting startup") return @@ -742,70 +1055,3 @@ async def send_idle_signal(self, idle_duration: float) -> None: "tool_choice": "required", }, ) - - def _persist_api_key_if_needed(self) -> None: - """Persist the API key into `.env` inside `instance_path/` when appropriate. - - - Only runs in Gradio mode when key came from the textbox and is non-empty. - - Only saves if `self.instance_path` is not None. - - Writes `.env` to `instance_path/.env` (does not overwrite if it already exists). - - If `instance_path/.env.example` exists, copies its contents while overriding OPENAI_API_KEY. - """ - try: - if not self.gradio_mode: - logger.warning("Not in Gradio mode; skipping API key persistence.") - return - - if self._key_source != "textbox": - logger.info("API key not provided via textbox; skipping persistence.") - return - - key = (self._provided_api_key or "").strip() - if not key: - logger.warning("No API key provided via textbox; skipping persistence.") - return - if self.instance_path is None: - logger.warning("Instance path is None; cannot persist API key.") - return - - # Update the current process environment for downstream consumers - try: - import os - - os.environ["OPENAI_API_KEY"] = key - except Exception: # best-effort - pass - - target_dir = Path(self.instance_path) - env_path = target_dir / ".env" - if env_path.exists(): - # Respect existing user configuration - logger.info(".env already exists at %s; not overwriting.", env_path) - return - - example_path = target_dir / ".env.example" - content_lines: list[str] = [] - if example_path.exists(): - try: - content = example_path.read_text(encoding="utf-8") - content_lines = content.splitlines() - except Exception as e: - logger.warning("Failed to read .env.example at %s: %s", example_path, e) - - # Replace or append the OPENAI_API_KEY line - replaced = False - for i, line in enumerate(content_lines): - if line.strip().startswith("OPENAI_API_KEY="): - content_lines[i] = f"OPENAI_API_KEY={key}" - replaced = True - break - if not replaced: - content_lines.append(f"OPENAI_API_KEY={key}") - - # Ensure file ends with newline - final_text = "\n".join(content_lines) + "\n" - env_path.write_text(final_text, encoding="utf-8") - logger.info("Created %s and stored OPENAI_API_KEY for future runs.", env_path) - except Exception as e: - # Never crash the app for QoL persistence; just log. - logger.warning("Could not persist OPENAI_API_KEY to .env: %s", e) diff --git a/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/static/index.html b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/static/index.html deleted file mode 100644 index 058cff29..00000000 --- a/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/static/index.html +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - Reachy OpenShell - Settings - - - -
    -
    -
    -

    Loading…

    -
    -
    -
    -
    Headless control
    -

    Reachy OpenShell

    -

    Configure your OpenAI API key for the conversation app.

    -
    - - - - -
    - - - - diff --git a/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/static/main.js b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/static/main.js deleted file mode 100644 index 4932fc8d..00000000 --- a/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/static/main.js +++ /dev/null @@ -1,136 +0,0 @@ -const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms)); - -async function fetchWithTimeout(url, options = {}, timeoutMs = 2000) { - const controller = new AbortController(); - const id = setTimeout(() => controller.abort(), timeoutMs); - try { - return await fetch(url, { ...options, signal: controller.signal }); - } finally { - clearTimeout(id); - } -} - -async function waitForStatus(timeoutMs = 15000) { - const loadingText = document.querySelector("#loading p"); - let attempts = 0; - const deadline = Date.now() + timeoutMs; - while (true) { - attempts += 1; - try { - const url = new URL("/status", window.location.origin); - url.searchParams.set("_", Date.now().toString()); - const resp = await fetchWithTimeout(url, {}, 2000); - if (resp.ok) return await resp.json(); - } catch (e) {} - if (loadingText) { - loadingText.textContent = attempts > 8 ? "Starting backend…" : "Loading…"; - } - if (Date.now() >= deadline) return null; - await sleep(500); - } -} - -async function validateKey(key) { - const body = { openai_api_key: key }; - const resp = await fetch("/validate_api_key", { - method: "POST", - headers: { "Content-Type": "application/json" }, - body: JSON.stringify(body), - }); - const data = await resp.json().catch(() => ({})); - if (!resp.ok) { - throw new Error(data.error || "validation_failed"); - } - return data; -} - -async function saveKey(key) { - const body = { openai_api_key: key }; - const resp = await fetch("/openai_api_key", { - method: "POST", - headers: { "Content-Type": "application/json" }, - body: JSON.stringify(body), - }); - if (!resp.ok) { - const data = await resp.json().catch(() => ({})); - throw new Error(data.error || "save_failed"); - } - return await resp.json(); -} - -function show(el, flag) { - el.classList.toggle("hidden", !flag); -} - -async function init() { - const loading = document.getElementById("loading"); - const statusEl = document.getElementById("status"); - const formPanel = document.getElementById("form-panel"); - const configuredPanel = document.getElementById("configured"); - const saveBtn = document.getElementById("save-btn"); - const changeKeyBtn = document.getElementById("change-key-btn"); - const input = document.getElementById("api-key"); - - show(loading, true); - show(formPanel, false); - show(configuredPanel, false); - - const st = (await waitForStatus()) || { has_key: false }; - - if (st.has_key) { - show(configuredPanel, true); - } else { - show(formPanel, true); - } - show(loading, false); - - changeKeyBtn.addEventListener("click", () => { - show(configuredPanel, false); - show(formPanel, true); - input.value = ""; - statusEl.textContent = ""; - statusEl.className = "status"; - }); - - input.addEventListener("input", () => { - input.classList.remove("error"); - }); - - saveBtn.addEventListener("click", async () => { - const key = input.value.trim(); - if (!key) { - statusEl.textContent = "Please enter a valid key."; - statusEl.className = "status warn"; - input.classList.add("error"); - return; - } - statusEl.textContent = "Validating API key..."; - statusEl.className = "status"; - input.classList.remove("error"); - try { - const validation = await validateKey(key); - if (!validation.valid) { - statusEl.textContent = "Invalid API key. Please check your key and try again."; - statusEl.className = "status error"; - input.classList.add("error"); - return; - } - statusEl.textContent = "Key valid! Saving..."; - statusEl.className = "status ok"; - await saveKey(key); - statusEl.textContent = "Saved. Reloading…"; - statusEl.className = "status ok"; - window.location.reload(); - } catch (e) { - input.classList.add("error"); - if (e.message === "invalid_api_key") { - statusEl.textContent = "Invalid API key. Please check your key and try again."; - } else { - statusEl.textContent = "Failed to validate/save key. Please try again."; - } - statusEl.className = "status error"; - } - }); -} - -window.addEventListener("DOMContentLoaded", init); \ No newline at end of file diff --git a/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/static/style.css b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/static/style.css deleted file mode 100644 index 1f8f0c8f..00000000 --- a/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/static/style.css +++ /dev/null @@ -1,210 +0,0 @@ -:root { - --bg: #060b1a; - --bg-2: #071023; - --panel: rgba(11, 18, 36, 0.8); - --border: rgba(255, 255, 255, 0.08); - --text: #eaf2ff; - --muted: #9fb6d7; - --ok: #4ce0b3; - --warn: #ffb547; - --error: #ff5c70; - --accent: #45c4ff; - --accent-2: #5ef0c1; - --shadow: 0 20px 70px rgba(0, 0, 0, 0.45); -} - -* { box-sizing: border-box; } -body { - margin: 0; - min-height: 100vh; - font-family: "Space Grotesk", "Inter", "Segoe UI", sans-serif; - background: radial-gradient(circle at 20% 20%, rgba(69, 196, 255, 0.16), transparent 35%), - radial-gradient(circle at 80% 0%, rgba(94, 240, 193, 0.16), transparent 32%), - linear-gradient(135deg, var(--bg), var(--bg-2)); - color: var(--text); -} - -.ambient { - position: fixed; - inset: 0; - background: radial-gradient(circle at 30% 60%, rgba(255, 255, 255, 0.05), transparent 35%), - radial-gradient(circle at 75% 30%, rgba(69, 196, 255, 0.08), transparent 32%); - filter: blur(60px); - z-index: 0; - pointer-events: none; -} - -.loading { - position: fixed; - inset: 0; - background: rgba(5, 10, 24, 0.92); - backdrop-filter: blur(4px); - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; - z-index: 9999; -} -.loading .spinner { - width: 46px; - height: 46px; - border: 4px solid rgba(255,255,255,0.15); - border-top-color: var(--accent); - border-radius: 50%; - animation: spin 1s linear infinite; - margin-bottom: 12px; -} -.loading p { color: var(--muted); margin: 0; letter-spacing: 0.4px; } -@keyframes spin { to { transform: rotate(360deg); } } - -.container { - position: relative; - max-width: 600px; - margin: 10vh auto; - padding: 0 24px 40px; - z-index: 1; -} - -.hero { - margin-bottom: 24px; -} -.hero h1 { - margin: 6px 0 6px; - font-size: 32px; - letter-spacing: -0.4px; -} -.subtitle { - margin: 0; - color: var(--muted); - line-height: 1.5; -} -.pill { - display: inline-flex; - align-items: center; - gap: 6px; - padding: 6px 12px; - border-radius: 999px; - background: rgba(94, 240, 193, 0.1); - color: var(--accent-2); - font-size: 12px; - letter-spacing: 0.3px; - border: 1px solid rgba(94, 240, 193, 0.25); -} - -.panel { - background: var(--panel); - border: 1px solid var(--border); - border-radius: 14px; - padding: 18px 18px 16px; - box-shadow: var(--shadow); - backdrop-filter: blur(10px); - margin-top: 16px; -} -.panel-heading { - display: flex; - align-items: center; - justify-content: space-between; - gap: 12px; - margin-bottom: 8px; -} -.panel-heading h2 { - margin: 2px 0; - font-size: 22px; -} -.eyebrow { - margin: 0; - text-transform: uppercase; - font-size: 11px; - letter-spacing: 0.5px; - color: var(--muted); -} -.muted { color: var(--muted); } -.chip { - display: inline-flex; - align-items: center; - padding: 6px 10px; - border-radius: 999px; - font-size: 12px; - color: var(--text); - background: rgba(255, 255, 255, 0.08); - border: 1px solid var(--border); -} -.chip-ok { - background: rgba(76, 224, 179, 0.15); - color: var(--ok); - border-color: rgba(76, 224, 179, 0.4); -} - -.hidden { display: none; } -label { - display: block; - margin: 8px 0 6px; - font-size: 13px; - color: var(--muted); - letter-spacing: 0.2px; -} -input[type="password"], -input[type="text"] { - width: 100%; - padding: 12px 14px; - border: 1px solid var(--border); - border-radius: 10px; - background: rgba(255, 255, 255, 0.04); - color: var(--text); - transition: border 0.15s ease, box-shadow 0.15s ease; -} -input:focus { - border-color: rgba(94, 240, 193, 0.7); - outline: none; - box-shadow: 0 0 0 3px rgba(94, 240, 193, 0.15); -} -input.error { - border-color: var(--error); - box-shadow: 0 0 0 3px rgba(255, 92, 112, 0.15); -} - -button { - display: inline-flex; - align-items: center; - justify-content: center; - margin-top: 12px; - padding: 11px 16px; - border: none; - border-radius: 10px; - background: linear-gradient(120deg, var(--accent), var(--accent-2)); - color: #031022; - cursor: pointer; - font-weight: 600; - letter-spacing: 0.2px; - box-shadow: 0 14px 40px rgba(69, 196, 255, 0.25); - transition: transform 0.12s ease, filter 0.12s ease, box-shadow 0.12s ease; -} -button:hover { filter: brightness(1.06); transform: translateY(-1px); } -button:active { transform: translateY(0); } -button.ghost { - background: rgba(255, 255, 255, 0.05); - color: var(--text); - box-shadow: none; - border: 1px solid var(--border); -} -button.ghost:hover { border-color: rgba(94, 240, 193, 0.4); } -.actions { - display: flex; - align-items: center; - gap: 12px; - flex-wrap: wrap; -} -.status { - margin: 0; - color: var(--muted); - font-size: 13px; -} -.status.ok { color: var(--ok); } -.status.warn { color: var(--warn); } -.status.error { color: var(--error); } - -@media (max-width: 760px) { - .hero h1 { font-size: 26px; } - button { width: 100%; justify-content: center; } - .actions { flex-direction: column; align-items: flex-start; } -} \ No newline at end of file diff --git a/projects/reachy-mini-openshell/tests/test_openai_realtime.py b/projects/reachy-mini-openshell/tests/test_openai_realtime.py index 39a82e3e..4a014ab4 100644 --- a/projects/reachy-mini-openshell/tests/test_openai_realtime.py +++ b/projects/reachy-mini-openshell/tests/test_openai_realtime.py @@ -20,6 +20,12 @@ def _build_handler(loop: asyncio.AbstractEventLoop) -> OpenaiRealtimeHandler: return OpenaiRealtimeHandler(deps) +def _set_openai_test_config(monkeypatch: Any) -> None: + monkeypatch.setattr(rt_mod.config, "OPENAI_API_KEY", "test-key") + monkeypatch.setattr(rt_mod.config, "OPENAI_BASE_URL", "https://example.test/v1") + monkeypatch.setattr(rt_mod.config, "MODEL_NAME", "test-realtime-model") + + def test_format_timestamp_uses_wall_clock() -> None: """Test that format_timestamp uses wall clock time.""" loop = asyncio.new_event_loop() @@ -44,6 +50,7 @@ async def test_start_up_retries_on_abrupt_close(monkeypatch: Any, caplog: Any) - Ensures handler clears self.connection at the end. """ caplog.set_level(logging.WARNING) + _set_openai_test_config(monkeypatch) # Use a local Exception as the module's ConnectionClosedError to avoid ws dependency FakeCCE = type("FakeCCE", (Exception,), {}) @@ -120,6 +127,330 @@ def __init__(self, **_kw: Any) -> None: self.realtime = FakeRealtime() warnings = [r for r in caplog.records if r.levelname == "WARNING" and "closed unexpectedly" in r.msg] assert len(warnings) == 1 + +@pytest.mark.asyncio +async def test_start_up_passes_env_base_url_to_openai_client(monkeypatch: Any) -> None: + """OPENAI_API_KEY and OPENAI_BASE_URL come from config and are passed to the SDK.""" + _set_openai_test_config(monkeypatch) + client_kwargs: dict[str, Any] = {} + + class FakeConn: + async def __aenter__(self) -> "FakeConn": return self + async def __aexit__(self, exc_type: Any, exc: Any, tb: Any) -> bool: return False + def __aiter__(self) -> "FakeConn": return self + async def __anext__(self) -> None: raise StopAsyncIteration + + class _Session: + async def update(self, **_kw: Any) -> None: return None + session = _Session() + + class FakeRealtime: + def connect(self, **_kw: Any) -> FakeConn: + return FakeConn() + + class FakeClient: + def __init__(self, **kwargs: Any) -> None: + client_kwargs.update(kwargs) + self.realtime = FakeRealtime() + + monkeypatch.setattr(rt_mod, "AsyncOpenAI", FakeClient) + + deps = ToolDependencies(reachy_mini=MagicMock(), movement_manager=MagicMock()) + handler = rt_mod.OpenaiRealtimeHandler(deps) + + await handler.start_up() + + assert client_kwargs == { + "api_key": "test-key", + "base_url": "https://example.test/v1", + } + + +@pytest.mark.asyncio +async def test_send_text_message_creates_input_text_and_collects_response(monkeypatch: Any) -> None: + """Text mode sends a user input_text item and returns chatbot updates.""" + _set_openai_test_config(monkeypatch) + event_queue: asyncio.Queue[Any] = asyncio.Queue() + created_items: list[dict[str, Any]] = [] + + class FakeEvent: + def __init__(self, etype: str, **kwargs: Any) -> None: + self.type = etype + for key, value in kwargs.items(): + setattr(self, key, value) + + class FakeSession: + async def update(self, **_kw: Any) -> None: + return None + + class FakeConversationItem: + async def create(self, **kwargs: Any) -> None: + created_items.append(kwargs["item"]) + + class FakeConversation: + item = FakeConversationItem() + + class FakeResponse: + async def create(self, **_kw: Any) -> None: + await event_queue.put(FakeEvent("response.created")) + await event_queue.put(FakeEvent("response.output_audio_transcript.done", transcript="Hello from text mode.")) + await event_queue.put(FakeEvent("response.done", response=MagicMock(usage=None))) + + async def cancel(self, **_kw: Any) -> None: + return None + + class FakeInputAudioBuffer: + async def append(self, **_kw: Any) -> None: + return None + + class FakeConn: + session = FakeSession() + conversation = FakeConversation() + response = FakeResponse() + input_audio_buffer = FakeInputAudioBuffer() + + async def __aenter__(self) -> "FakeConn": + return self + + async def __aexit__(self, exc_type: Any, exc: Any, tb: Any) -> bool: + return False + + def __aiter__(self) -> "FakeConn": + return self + + async def __anext__(self) -> Any: + event = await event_queue.get() + if event is None: + raise StopAsyncIteration + return event + + async def close(self) -> None: + await event_queue.put(None) + + class FakeRealtime: + def connect(self, **_kw: Any) -> FakeConn: + return FakeConn() + + class FakeClient: + def __init__(self, **_kw: Any) -> None: + self.realtime = FakeRealtime() + + monkeypatch.setattr(rt_mod, "AsyncOpenAI", FakeClient) + + deps = ToolDependencies(reachy_mini=MagicMock(), movement_manager=MagicMock()) + handler = rt_mod.OpenaiRealtimeHandler(deps) + + messages = await handler.send_text_message("Hello typed Reachy") + await handler.shutdown() + if handler._text_startup_task is not None: + await asyncio.wait_for(handler._text_startup_task, timeout=1) + + assert created_items == [ + { + "type": "message", + "role": "user", + "content": [{"type": "input_text", "text": "Hello typed Reachy"}], + } + ] + assert messages == [ + {"role": "user", "content": "Hello typed Reachy"}, + {"role": "assistant", "content": "Hello from text mode."}, + ] + + +@pytest.mark.asyncio +async def test_send_text_message_reports_missing_dotenv_key(monkeypatch: Any) -> None: + """Text mode reports the actual missing-key problem instead of a generic connection error.""" + monkeypatch.setattr(rt_mod.config, "OPENAI_API_KEY", "") + monkeypatch.setattr(rt_mod.config, "OPENAI_BASE_URL", "https://inference-api.nvidia.com/v1") + monkeypatch.setattr(rt_mod.config, "MODEL_NAME", "nvidia/nemotron-3-super-120b-a12b") + + deps = ToolDependencies(reachy_mini=MagicMock(), movement_manager=MagicMock()) + handler = rt_mod.OpenaiRealtimeHandler(deps) + + messages = await handler.send_text_message("Hello") + + assert len(messages) == 1 + assert "OPENAI_API_KEY is missing or empty" in messages[0]["content"] + assert "NVIDIA_API_KEY" in messages[0]["content"] + + +@pytest.mark.asyncio +async def test_send_text_message_reports_realtime_startup_failure(monkeypatch: Any) -> None: + """Text mode includes model/base URL context when the Realtime provider rejects startup.""" + monkeypatch.setattr(rt_mod.config, "OPENAI_API_KEY", "test-key") + monkeypatch.setattr(rt_mod.config, "OPENAI_BASE_URL", "https://inference-api.nvidia.com/v1") + monkeypatch.setattr(rt_mod.config, "MODEL_NAME", "gpt-realtime") + + class FakeSession: + async def update(self, **_kw: Any) -> None: + raise RuntimeError("404 not found") + + class FakeConn: + session = FakeSession() + + async def __aenter__(self) -> "FakeConn": + return self + + async def __aexit__(self, exc_type: Any, exc: Any, tb: Any) -> bool: + return False + + class FakeRealtime: + def connect(self, **_kw: Any) -> FakeConn: + return FakeConn() + + class FakeClient: + def __init__(self, **_kw: Any) -> None: + self.realtime = FakeRealtime() + + monkeypatch.setattr(rt_mod, "AsyncOpenAI", FakeClient) + + deps = ToolDependencies(reachy_mini=MagicMock(), movement_manager=MagicMock()) + handler = rt_mod.OpenaiRealtimeHandler(deps) + + messages = await handler.send_text_message("Hello") + + assert len(messages) == 1 + content = messages[0]["content"] + assert "Realtime session.update failed" in content + assert "gpt-realtime" in content + assert "https://inference-api.nvidia.com/v1" in content + assert "Chat Completions" in content + + +@pytest.mark.asyncio +async def test_send_text_message_uses_chat_completions_for_non_realtime_model(monkeypatch: Any) -> None: + """Non-Realtime model IDs use Chat Completions instead of the Realtime websocket.""" + monkeypatch.setattr(rt_mod.config, "OPENAI_API_KEY", "test-key") + monkeypatch.setattr(rt_mod.config, "OPENAI_BASE_URL", "https://inference-api.nvidia.com/v1") + monkeypatch.setattr(rt_mod.config, "MODEL_NAME", "nvidia/nemotron-3-super-120b-a12b") + create_calls: list[dict[str, Any]] = [] + + class FakeMessage: + content = "Hello from Nemotron." + tool_calls: list[Any] = [] + + class FakeChoice: + message = FakeMessage() + + class FakeCompletion: + choices = [FakeChoice()] + + class FakeCompletions: + async def create(self, **kwargs: Any) -> FakeCompletion: + create_calls.append(kwargs) + return FakeCompletion() + + class FakeChat: + completions = FakeCompletions() + + class FakeClient: + def __init__(self, **_kw: Any) -> None: + self.chat = FakeChat() + + monkeypatch.setattr(rt_mod, "AsyncOpenAI", FakeClient) + + deps = ToolDependencies(reachy_mini=MagicMock(), movement_manager=MagicMock()) + handler = rt_mod.OpenaiRealtimeHandler(deps) + + messages = await handler.send_text_message("Hello") + + assert messages == [ + {"role": "user", "content": "Hello"}, + {"role": "assistant", "content": "Hello from Nemotron."}, + ] + assert len(create_calls) == 1 + assert create_calls[0]["model"] == "nvidia/nemotron-3-super-120b-a12b" + assert create_calls[0]["messages"][-1] == {"role": "user", "content": "Hello"} + + +@pytest.mark.asyncio +async def test_chat_completion_tool_follow_up_keeps_tools_param(monkeypatch: Any) -> None: + """Anthropic-compatible backends require tools= on the follow-up after a tool result.""" + monkeypatch.setattr(rt_mod.config, "OPENAI_API_KEY", "test-key") + monkeypatch.setattr(rt_mod.config, "OPENAI_BASE_URL", "https://inference-api.nvidia.com/v1") + monkeypatch.setattr(rt_mod.config, "MODEL_NAME", "azure/anthropic/claude-opus-4-8") + monkeypatch.setattr( + rt_mod, + "get_tool_specs", + lambda: [ + { + "type": "function", + "name": "dance", + "description": "Dance once.", + "parameters": {"type": "object", "properties": {}}, + } + ], + ) + + async def fake_dispatch_tool_call_with_manager(*_args: Any, **_kwargs: Any) -> dict[str, Any]: + return {"ok": True} + + monkeypatch.setattr(rt_mod, "dispatch_tool_call_with_manager", fake_dispatch_tool_call_with_manager) + create_calls: list[dict[str, Any]] = [] + + class FakeFunction: + name = "dance" + arguments = "{}" + + class FakeToolCall: + id = "call_1" + type = "function" + function = FakeFunction() + + def model_dump(self) -> dict[str, Any]: + return { + "id": self.id, + "type": self.type, + "function": { + "name": self.function.name, + "arguments": self.function.arguments, + }, + } + + class FakeToolMessage: + content = "" + tool_calls = [FakeToolCall()] + + class FakeFinalMessage: + content = "I danced." + tool_calls: list[Any] = [] + + class FakeChoice: + def __init__(self, message: Any) -> None: + self.message = message + + class FakeCompletion: + def __init__(self, message: Any) -> None: + self.choices = [FakeChoice(message)] + + class FakeCompletions: + async def create(self, **kwargs: Any) -> FakeCompletion: + create_calls.append(kwargs) + if len(create_calls) == 1: + return FakeCompletion(FakeToolMessage()) + return FakeCompletion(FakeFinalMessage()) + + class FakeChat: + completions = FakeCompletions() + + class FakeClient: + def __init__(self, **_kw: Any) -> None: + self.chat = FakeChat() + + monkeypatch.setattr(rt_mod, "AsyncOpenAI", FakeClient) + + deps = ToolDependencies(reachy_mini=MagicMock(), movement_manager=MagicMock()) + handler = rt_mod.OpenaiRealtimeHandler(deps) + + messages = await handler.send_text_message("Dance") + + assert messages[-1] == {"role": "assistant", "content": "I danced."} + assert len(create_calls) == 2 + assert create_calls[0]["tools"] + assert create_calls[1]["tools"] == create_calls[0]["tools"] + assert any(message["role"] == "tool" for message in create_calls[1]["messages"]) + # ---- Cost calculation tests ---- @@ -193,6 +524,7 @@ async def test_response_sender_retries_on_active_response_rejection(monkeypatch: processing, not mocked out. """ caplog.set_level(logging.DEBUG) + _set_openai_test_config(monkeypatch) FakeCCE = type("FakeCCE", (Exception,), {}) monkeypatch.setattr(rt_mod, "ConnectionClosedError", FakeCCE) From 822a144753e799b6373df3e211c03c527b230cfe Mon Sep 17 00:00:00 2001 From: Johnny Greco Date: Wed, 24 Jun 2026 23:17:53 -0400 Subject: [PATCH 09/22] Switch Reachy project type checks to ty --- projects/reachy-mini-openshell/pyproject.toml | 22 ++++---- projects/reachy-mini-openshell/uv.lock | 53 +++++-------------- 2 files changed, 23 insertions(+), 52 deletions(-) diff --git a/projects/reachy-mini-openshell/pyproject.toml b/projects/reachy-mini-openshell/pyproject.toml index ffce601d..be842755 100644 --- a/projects/reachy-mini-openshell/pyproject.toml +++ b/projects/reachy-mini-openshell/pyproject.toml @@ -14,7 +14,15 @@ name = "Pollen Robotics" email = "contact@pollen-robotics.com" [dependency-groups] -dev = [ "pytest", "pytest-asyncio", "ruff==0.12.0", "mypy==1.18.2", "pre-commit", "types-requests", "python-semantic-release>=10.5.3",] +dev = [ + "pytest", + "pytest-asyncio", + "ruff==0.12.0", + "pre-commit", + "types-requests", + "python-semantic-release>=10.5.3", + "ty>=0.0.53", +] [tool.uv] environments = [ @@ -35,15 +43,7 @@ include-package-data = true [tool.ruff] line-length = 119 -exclude = [ ".venv", "dist", "build", "**/__pycache__", "*.egg-info", ".mypy_cache", ".pytest_cache",] - -[tool.mypy] -python_version = "3.12" -files = [ "src/",] -ignore_missing_imports = true -strict = true -show_error_codes = true -warn_unused_ignores = true +exclude = [ ".venv", "dist", "build", "**/__pycache__", "*.egg-info", ".pytest_cache",] [project.entry-points.reachy_mini_apps] reachy_mini_conversation_app = "reachy_mini_conversation_app.main:ReachyMiniConversationApp" @@ -52,7 +52,7 @@ reachy_mini_conversation_app = "reachy_mini_conversation_app.main:ReachyMiniConv "" = "src" [tool.setuptools.package-data] -reachy_mini_conversation_app = [ "images/*", "static/*", "profiles/**/*.py", "profiles/**/*.txt",] +reachy_mini_conversation_app = [ "images/*", "profiles/**/*.py", "profiles/**/*.txt",] [tool.ruff.lint] select = [ "E", "F", "W", "I", "C4", "D",] diff --git a/projects/reachy-mini-openshell/uv.lock b/projects/reachy-mini-openshell/uv.lock index 4438d67d..a3dcec23 100644 --- a/projects/reachy-mini-openshell/uv.lock +++ b/projects/reachy-mini-openshell/uv.lock @@ -1371,36 +1371,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/81/08/7036c080d7117f28a4af526d794aab6a84463126db031b007717c1a6676e/multidict-6.7.1-py3-none-any.whl", hash = "sha256:55d97cc6dae627efa6a6e548885712d4864b81110ac76fa4e534c03819fa4a56", size = 12319, upload-time = "2026-01-26T02:46:44.004Z" }, ] -[[package]] -name = "mypy" -version = "1.18.2" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "mypy-extensions", marker = "sys_platform == 'darwin'" }, - { name = "pathspec", marker = "sys_platform == 'darwin'" }, - { name = "tomli", marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, - { name = "typing-extensions", marker = "sys_platform == 'darwin'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/c0/77/8f0d0001ffad290cef2f7f216f96c814866248a0b92a722365ed54648e7e/mypy-1.18.2.tar.gz", hash = "sha256:06a398102a5f203d7477b2923dda3634c36727fa5c237d8f859ef90c42a9924b", size = 3448846, upload-time = "2025-09-19T00:11:10.519Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/03/6f/657961a0743cff32e6c0611b63ff1c1970a0b482ace35b069203bf705187/mypy-1.18.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c1eab0cf6294dafe397c261a75f96dc2c31bffe3b944faa24db5def4e2b0f77c", size = 12807973, upload-time = "2025-09-19T00:10:35.282Z" }, - { url = "https://files.pythonhosted.org/packages/10/e9/420822d4f661f13ca8900f5fa239b40ee3be8b62b32f3357df9a3045a08b/mypy-1.18.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:7a780ca61fc239e4865968ebc5240bb3bf610ef59ac398de9a7421b54e4a207e", size = 11896527, upload-time = "2025-09-19T00:10:55.791Z" }, - { url = "https://files.pythonhosted.org/packages/88/87/cafd3ae563f88f94eec33f35ff722d043e09832ea8530ef149ec1efbaf08/mypy-1.18.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:807d9315ab9d464125aa9fcf6d84fde6e1dc67da0b6f80e7405506b8ac72bc7f", size = 12731198, upload-time = "2025-09-19T00:09:44.857Z" }, - { url = "https://files.pythonhosted.org/packages/0f/e0/1e96c3d4266a06d4b0197ace5356d67d937d8358e2ee3ffac71faa843724/mypy-1.18.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:776bb00de1778caf4db739c6e83919c1d85a448f71979b6a0edd774ea8399341", size = 11817879, upload-time = "2025-09-19T00:09:47.131Z" }, - { url = "https://files.pythonhosted.org/packages/07/06/dfdd2bc60c66611dd8335f463818514733bc763e4760dee289dcc33df709/mypy-1.18.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:33eca32dd124b29400c31d7cf784e795b050ace0e1f91b8dc035672725617e34", size = 12908273, upload-time = "2025-09-19T00:10:58.321Z" }, - { url = "https://files.pythonhosted.org/packages/81/14/6a9de6d13a122d5608e1a04130724caf9170333ac5a924e10f670687d3eb/mypy-1.18.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a3c47adf30d65e89b2dcd2fa32f3aeb5e94ca970d2c15fcb25e297871c8e4764", size = 11920910, upload-time = "2025-09-19T00:10:20.043Z" }, - { url = "https://files.pythonhosted.org/packages/87/e3/be76d87158ebafa0309946c4a73831974d4d6ab4f4ef40c3b53a385a66fd/mypy-1.18.2-py3-none-any.whl", hash = "sha256:22a1748707dd62b58d2ae53562ffc4d7f8bcc727e8ac7cbc69c053ddc874d47e", size = 2352367, upload-time = "2025-09-19T00:10:15.489Z" }, -] - -[[package]] -name = "mypy-extensions" -version = "1.1.0" -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" }, -] - [[package]] name = "narwhals" version = "2.22.1" @@ -1627,15 +1597,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/5c/bd/bf8064d9cfa214294356c2d6702b716d3cf3bb24be59287a6a21e24cae6b/pandas-2.3.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3fd2f887589c7aa868e02632612ba39acb0b8948faf5cc58f0850e165bd46f35", size = 10729618, upload-time = "2025-09-29T23:39:08.659Z" }, ] -[[package]] -name = "pathspec" -version = "1.1.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/5a/82/42f767fc1c1143d6fd36efb827202a2d997a375e160a71eb2888a925aac1/pathspec-1.1.1.tar.gz", hash = "sha256:17db5ecd524104a120e173814c90367a96a98d07c45b2e10c2f3919fff91bf5a", size = 135180, upload-time = "2026-04-27T01:46:08.907Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/f1/d9/7fb5aa316bc299258e68c73ba3bddbc499654a07f151cba08f6153988714/pathspec-1.1.1-py3-none-any.whl", hash = "sha256:a00ce642f577bf7f473932318056212bc4f8bfdf53128c78bbd5af0b9b20b189", size = 57328, upload-time = "2026-04-27T01:46:07.06Z" }, -] - [[package]] name = "pillow" version = "11.3.0" @@ -2169,12 +2130,12 @@ yolo-vision = [ [package.dev-dependencies] dev = [ - { name = "mypy", marker = "sys_platform == 'darwin'" }, { name = "pre-commit", marker = "sys_platform == 'darwin'" }, { name = "pytest", marker = "sys_platform == 'darwin'" }, { name = "pytest-asyncio", marker = "sys_platform == 'darwin'" }, { name = "python-semantic-release", marker = "sys_platform == 'darwin'" }, { name = "ruff", marker = "sys_platform == 'darwin'" }, + { name = "ty", marker = "sys_platform == 'darwin'" }, { name = "types-requests", marker = "sys_platform == 'darwin'" }, ] @@ -2209,12 +2170,12 @@ provides-extras = ["local-vision", "yolo-vision", "mediapipe-vision", "all-visio [package.metadata.requires-dev] dev = [ - { name = "mypy", specifier = "==1.18.2" }, { name = "pre-commit" }, { name = "pytest" }, { name = "pytest-asyncio" }, { name = "python-semantic-release", specifier = ">=10.5.3" }, { name = "ruff", specifier = "==0.12.0" }, + { name = "ty", specifier = ">=0.0.53" }, { name = "types-requests" }, ] @@ -2766,6 +2727,16 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/b4/eb/9526a77354a2126f5b220f4792dc8494d573773c098dac6a5ad1fc7a5f17/transformers-5.0.0rc2-py3-none-any.whl", hash = "sha256:f8f2a14060ab11f20a0eec39d827af54c1589c327c5799d82808ae3f4167418a", size = 10067329, upload-time = "2026-01-07T16:57:59.617Z" }, ] +[[package]] +name = "ty" +version = "0.0.53" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/96/87/d5a1d099a41ed22f939b9eec5af3c40bd907409e673cc0b8fcfd1e354ab2/ty-0.0.53.tar.gz", hash = "sha256:86e8c522b1a1ae267cd6442cc93c0c954a2a59b89565e4fb493c1133bd5a056e", size = 5998692, upload-time = "2026-06-24T06:53:57.021Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9d/55/9edc86267086c1d0be32b0625f2cae4bd269f62e9f0084f5469d5a7ada9e/ty-0.0.53-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:5b1079f5f18667362e6a2df0c08eef83b99cc7ec1f1e6bd6a43eb17087a62da2", size = 11793873, upload-time = "2026-06-24T06:53:21.188Z" }, + { url = "https://files.pythonhosted.org/packages/17/9b/92f080253ca27ad60f4a982f1d6e67fce1ab117514b8b51a25ed3e64a6b2/ty-0.0.53-py3-none-macosx_11_0_arm64.whl", hash = "sha256:b0699807f3333c052120998d0f652f9e13d534b16cbb4f04397885569e2889e5", size = 11190702, upload-time = "2026-06-24T06:53:23.216Z" }, +] + [[package]] name = "typer" version = "0.26.7" From e4160de3eccd7809135b2fa0846d911ad6132fcd Mon Sep 17 00:00:00 2001 From: Johnny Greco Date: Wed, 24 Jun 2026 23:18:07 -0400 Subject: [PATCH 10/22] Document Reachy simulator workflow --- .../screenshots/gradio-home.png | Bin 0 -> 27027 bytes docs/index.md | 1 + docs/research/applications.md | 1 + .../reachy-mini-conversation-simulator.md | 234 ++++++++++++++++++ projects/reachy-mini-openshell/README.md | 66 ++++- zensical.toml | 3 +- 6 files changed, 291 insertions(+), 14 deletions(-) create mode 100644 docs/assets/reachy-mini-openshell/screenshots/gradio-home.png create mode 100644 docs/research/reachy-mini-conversation-simulator.md diff --git a/docs/assets/reachy-mini-openshell/screenshots/gradio-home.png b/docs/assets/reachy-mini-openshell/screenshots/gradio-home.png new file mode 100644 index 0000000000000000000000000000000000000000..bbd0cde4931c727bfa923b8af185903784a20d7d GIT binary patch literal 27027 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 literal 0 HcmV?d00001 diff --git a/docs/index.md b/docs/index.md index 62f67664..39f9afb8 100644 --- a/docs/index.md +++ b/docs/index.md @@ -19,6 +19,7 @@ - [Research engineering](research/index.md) - [Runtime notes](research/runtime.md) - [Application skeletons](research/applications.md) +- [Reachy Mini simulator tutorial](research/reachy-mini-conversation-simulator.md) - [Dev Notes](dev-notes/index.md) ## What belongs here diff --git a/docs/research/applications.md b/docs/research/applications.md index d761fb70..2fc8b8e6 100644 --- a/docs/research/applications.md +++ b/docs/research/applications.md @@ -5,6 +5,7 @@ OpenShell applications. ## Candidate skeletons +- [Reachy Mini conversation app simulator tutorial](reachy-mini-conversation-simulator.md) - Agent workflow demo - Research paper companion - Evaluation harness diff --git a/docs/research/reachy-mini-conversation-simulator.md b/docs/research/reachy-mini-conversation-simulator.md new file mode 100644 index 00000000..6a03c44f --- /dev/null +++ b/docs/research/reachy-mini-conversation-simulator.md @@ -0,0 +1,234 @@ +# Reachy Mini Conversation App Simulator Tutorial + +This tutorial walks through the local simulator workflow for the Reachy +OpenShell conversation app. It starts the Reachy Mini daemon in MuJoCo +simulation mode, verifies that the daemon is healthy, launches the Gradio +conversation UI, and shows what to expect in the browser. + +The app in this repository is an OpenShell-oriented fork of the Reachy Mini +conversation app template. The upstream Hugging Face Space is a useful reference +for the broader app family: [pollen-robotics/reachy_mini_conversation_app](https://huggingface.co/spaces/pollen-robotics/reachy_mini_conversation_app/tree/main). + +## What You Need + +- macOS with Python 3.10, 3.11, or 3.12. Python 3.12 is the recommended local + version. +- `uv`. +- An API key for conversation. Microphone mode requires an OpenAI-compatible + Realtime model; text mode can also use OpenAI-compatible Chat Completions + providers such as NVIDIA NIM. +- This repository checked out locally. + +The local dependency set includes `reachy-mini[mujoco]==1.8.0`, so the MuJoCo +simulator backend is installed by the default project sync. + +## 1. Install The Project + +From the repository root: + +```sh +cd projects/reachy-mini-openshell +uv venv --python 3.12 +source .venv/bin/activate +uv sync +cp .env.example .env +``` + +Edit `.env`. For OpenAI Realtime microphone and text input, use: + +```sh +OPENAI_API_KEY=your_api_key_here +OPENAI_BASE_URL=https://api.openai.com/v1 +MODEL_NAME=gpt-realtime +``` + +For NVIDIA-hosted text input through an OpenAI-compatible Chat Completions +endpoint, reference your existing NVIDIA API key environment variable: + +```sh +OPENAI_API_KEY=${NVIDIA_API_KEY} +OPENAI_BASE_URL=https://inference-api.nvidia.com/v1 +MODEL_NAME=azure/anthropic/claude-opus-4-8 +``` + +Use the exact model ID exposed by your provider. For example, NVIDIA model IDs +can look like `nvidia/nemotron-3-super-120b-a12b` or +`azure/anthropic/claude-opus-4-8`, depending on the endpoint and account. + +Those provider values are loaded from `.env` only. The browser UI does not +include fields for credentials, endpoint routing, or model selection. + +Run a quick import check: + +```sh +python - <<'PY' +import mujoco +import reachy_mini + +print("mujoco", mujoco.__version__) +print("reachy_mini", reachy_mini.__version__) +PY +``` + +You should see MuJoCo and Reachy Mini versions printed. If MuJoCo is missing, +rerun `uv sync` from `projects/reachy-mini-openshell`. + +## 2. Start The Simulator Daemon + +Start the Reachy Mini daemon in one terminal: + +```sh +reachy-mini-daemon \ + --sim \ + --scene minimal \ + --headless \ + --no-media \ + --fastapi-host 127.0.0.1 \ + --fastapi-port 8000 \ + --dataset-update-interval 0 +``` + +The important log line is: + +```text +Daemon started successfully. +``` + +The daemon should keep running in that terminal. Leave it open while you use the +conversation app. + +## 3. Verify The Daemon + +Open this URL in your browser: + +```text +http://127.0.0.1:8000/api/daemon/status +``` + +You should see syntax-highlighted JSON in the browser. The exact `version` can +vary, but a healthy simulator daemon should look like this: + +```json +{ + "type": "daemon_status", + "robot_name": "reachy_mini", + "state": "running", + "wireless_version": false, + "desktop_app_daemon": false, + "simulation_enabled": true, + "mockup_sim_enabled": false, + "no_media": true, + "media_released": false, + "camera_specs_name": "", + "backend_status": { + "motor_control_mode": "enabled", + "error": null + }, + "error": null, + "wlan_ip": null, + "version": "1.8.0", + "hardware_id": null +} +``` + +If `state` is `error` and the message mentions MuJoCo, the simulator dependency +is missing from the environment that started the daemon. Stop the daemon, run +`uv sync`, and start it again from the activated project environment. + +## 4. Start The Conversation App + +Open a second terminal, activate the same environment, and start the app: + +```sh +cd projects/reachy-mini-openshell +source .venv/bin/activate +python -m reachy_mini_conversation_app --gradio --no-camera +``` + +The console script is equivalent: + +```sh +reachy-mini-conversation-app --gradio --no-camera +``` + +The app connects to the daemon through the Reachy Mini SDK. In simulator mode it +uses the browser-based Gradio UI. The expected launch line is: + +```text +Running on local URL: http://127.0.0.1:7860 +``` + +If port `7860` is busy, Gradio may choose another local port. Use the URL printed +by the terminal. + +## 5. Open The Gradio UI + +Open the Gradio URL, usually: + +```text +http://127.0.0.1:7860/ +``` + +You should see the `Talk with Reachy Mini` page with an empty chat transcript, +an audio stream panel, and an `Input` selector. + +![Gradio conversation UI for Talk with Reachy Mini](../assets/reachy-mini-openshell/screenshots/gradio-home.png) + +If the app logs that `OPENAI_API_KEY` is missing, stop the app, update `.env`, +and restart it. Credentials are intentionally not entered in the browser. If +`.env` references `${NVIDIA_API_KEY}`, make sure that variable is +exported in the shell that starts the app. + +## 6. Talk To Reachy + +Use `Microphone` mode to speak when `MODEL_NAME` points to a Realtime-capable +model. Click `Click to Access Microphone` in the `Stream` panel and allow +microphone access in the browser. Once the stream starts, speak naturally. + +Use `Text` mode to type instead. Switch `Input` to `Text`, enter a message, and +send it from the text composer. For non-Realtime model IDs such as NVIDIA NIM +models, text mode uses Chat Completions. Tool calls are supported in text mode, +including providers that require the tool schema to remain attached after a tool +result is returned. + +Useful first prompts are: + +```text +Hello Reachy, introduce yourself. +Can you dance? +Look around the room. +Show me a happy emotion. +Stop moving. +``` + +Because this tutorial runs with `--no-camera`, camera and head-tracking features +are disabled. Voice conversation and motion tools are still available through the +simulated daemon. + +## 7. Stop The Demo + +Stop the conversation app with `Ctrl+C` in the app terminal. Then stop the +daemon with `Ctrl+C` in the daemon terminal. + +## Troubleshooting + +If the app cannot connect to the daemon, make sure the daemon terminal is still +running and that its status page reports `state: "running"`. + +If the app starts but the browser does not open automatically, copy the `Running +on local URL` value from the terminal into your browser. + +If the browser cannot access the microphone, check the browser permission prompt +and macOS microphone privacy settings. + +If text mode returns `404 page not found`, check that `OPENAI_BASE_URL` matches +the provider's OpenAI-compatible endpoint and that `MODEL_NAME` is an exact +model ID from that provider. + +If text mode returns `401 Unauthorized` with NVIDIA endpoints, make sure +`OPENAI_API_KEY=${NVIDIA_API_KEY}` resolves to a key that is authorized for +generation, not only model listing. + +If the daemon reports `MuJoCo is not installed`, make sure you started the +daemon from this project environment after running `uv sync`. The dependency is +provided by `reachy-mini[mujoco]==1.8.0`. diff --git a/projects/reachy-mini-openshell/README.md b/projects/reachy-mini-openshell/README.md index 97c1c189..14661352 100644 --- a/projects/reachy-mini-openshell/README.md +++ b/projects/reachy-mini-openshell/README.md @@ -39,6 +39,7 @@ This project contains: - a forked Reachy Mini voice conversation app - OpenAI Realtime audio conversation support +- text conversation support through OpenAI-compatible Chat Completions - Reachy Mini movement, dance, emotion, and look-around tools - a locked OpenShell profile for instructions and tool selection - optional camera, local vision, YOLO head-tracking, and MediaPipe head-tracking @@ -53,7 +54,9 @@ this project. The SDK is pinned to the version compatible with the forked conversation-app dependency stack. - a running Reachy Mini daemon, either connected to hardware or started in simulator mode -- an OpenAI API key for conversation +- an API key for conversation. Microphone mode requires an OpenAI-compatible +Realtime model; text mode can also use OpenAI-compatible Chat Completions +providers such as NVIDIA NIM. ## Install @@ -67,12 +70,27 @@ uv sync cp .env.example .env ``` -Then edit `.env` and set: +Then edit `.env`. For OpenAI Realtime microphone and text input, use: ```bash OPENAI_API_KEY=your_api_key_here +OPENAI_BASE_URL=https://api.openai.com/v1 +MODEL_NAME=gpt-realtime ``` +For NVIDIA-hosted text input through an OpenAI-compatible Chat Completions +endpoint, reference your existing NVIDIA API key environment variable: + +```bash +OPENAI_API_KEY=${NVIDIA_API_KEY} +OPENAI_BASE_URL=https://inference-api.nvidia.com/v1 +MODEL_NAME=azure/anthropic/claude-opus-4-8 +``` + +Use the exact model ID exposed by your provider. For example, NVIDIA model IDs +can look like `nvidia/nemotron-3-super-120b-a12b` or +`azure/anthropic/claude-opus-4-8`, depending on the endpoint and account. + If you are not using `uv`, install the app in editable mode from the project directory: @@ -119,21 +137,22 @@ workflow starts `reachy-mini-daemon --sim` from this environment. ## Configuration -The app loads `.env` from the current directory or a parent directory unless -`REACHY_MINI_SKIP_DOTENV=1` is set. +The app loads `.env` from the current directory or a parent directory. Provider +credentials and routing must be configured in `.env`; they are not accepted from +the browser UI or the Reachy Mini settings UI. -Supported environment variables: +Supported `.env` values: -- `OPENAI_API_KEY`: API key used by OpenAI Realtime. -- `MODEL_NAME`: Realtime model name. Defaults to `gpt-realtime`. +- `OPENAI_API_KEY`: API key used by the configured model provider. This can +reference another exported environment variable, such as +`${NVIDIA_API_KEY}`. +- `OPENAI_BASE_URL`: OpenAI-compatible API base URL. +- `MODEL_NAME`: provider model ID. Model names containing `realtime` use the +Realtime path; other model IDs use Chat Completions for text input. - `LOCAL_VISION_MODEL`: Hugging Face model used with `--local-vision`. - `HF_HOME`: Hugging Face cache directory. Defaults to `./cache`. - `HF_TOKEN`: optional Hugging Face token for gated models. -When running with Gradio, the UI also includes an OpenAI API key field. The -bundled Reachy Mini settings UI can store and validate the key when the app is -run through the Reachy Mini app shell. - ## Run Locally Start the Reachy Mini daemon first. For the local simulator baseline: @@ -165,12 +184,18 @@ In simulator mode, the app auto-enables Gradio. The examples still pass at: ```text -c +http://127.0.0.1:7860/ ``` If port `7860` is busy, Gradio may choose another available local port and print that URL in the terminal. +The Gradio UI includes an `Input` selector. Use `Microphone` for the WebRTC +audio stream with a Realtime-capable model, or switch to `Text` for typed +messages. Text mode uses Chat Completions when `MODEL_NAME` is a non-Realtime +model ID. Tool calls are supported in text mode; the app keeps the tool schema +attached on the post-tool follow-up request for providers that require it. + ## Runtime Flags Useful app flags: @@ -233,8 +258,14 @@ Useful local checks: python -m compileall src tests python -m reachy_mini_conversation_app --help reachy-mini-app-assistant check . +uv run ty check ``` +`ty` is the selected Python type checker for this project. The current copied +conversation-app baseline still reports diagnostics in motion, vision, optional +dependency, and SDK event typing, so use `uv run ty check` as the active audit +while that baseline is tightened. + Tests require the development dependency group: ```bash @@ -251,10 +282,19 @@ name to the app with `--robot-name`. If `--local-vision`, `--head-tracker yolo`, or `--head-tracker mediapipe` fails with an import error, install the matching optional dependency group. +If text mode returns `404 page not found`, check that `OPENAI_BASE_URL` matches +the provider's OpenAI-compatible endpoint and that `MODEL_NAME` is an exact +model ID from that provider. A catalog name, marketing page slug, or doubled +namespace may not be accepted by `/chat/completions`. + +If text mode returns `401 Unauthorized` with NVIDIA endpoints, make sure +`OPENAI_API_KEY=${NVIDIA_API_KEY}` resolves to a key that is authorized for +generation, not only model listing. + If `uv sync` tries to build `pygobject` or `pycairo` on macOS, the resolver is including a Linux media dependency path. This project scopes uv resolution to Darwin for the current local workflow; rerun `uv sync`, and if uv is still using old metadata, clear the package cache with `uv cache clean reachy-mini pygobject pycairo`. If you are running the simulator with `--no-media`, keep `--no-camera` on the -conversation app. \ No newline at end of file +conversation app. diff --git a/zensical.toml b/zensical.toml index 4f4429a5..4a97977d 100644 --- a/zensical.toml +++ b/zensical.toml @@ -10,7 +10,8 @@ nav = [ {"Research Engineering" = [ "research/index.md", "research/runtime.md", - "research/applications.md" + "research/applications.md", + "research/reachy-mini-conversation-simulator.md" ]}, {"Dev Notes" = [ "dev-notes/index.md", From 527cb052d03efb31c23b4923afd0ca1bd479a87e Mon Sep 17 00:00:00 2001 From: Johnny Greco Date: Thu, 25 Jun 2026 19:10:16 +0000 Subject: [PATCH 11/22] Fix microphone realtime startup --- projects/reachy-mini-openshell/README.md | 5 ++ .../openai_realtime.py | 39 ++++++-- .../tests/test_openai_realtime.py | 88 ++++++++++++++++++- 3 files changed, 123 insertions(+), 9 deletions(-) diff --git a/projects/reachy-mini-openshell/README.md b/projects/reachy-mini-openshell/README.md index 14661352..5df8a444 100644 --- a/projects/reachy-mini-openshell/README.md +++ b/projects/reachy-mini-openshell/README.md @@ -196,6 +196,11 @@ messages. Text mode uses Chat Completions when `MODEL_NAME` is a non-Realtime model ID. Tool calls are supported in text mode; the app keeps the tool schema attached on the post-tool follow-up request for providers that require it. +If the microphone appears to connect but no transcript or model response +arrives, check the visible chat error and your `.env` values. Microphone mode +requires an OpenAI-compatible Realtime model and endpoint; Chat Completions +providers are supported through the `Text` input mode only. + ## Runtime Flags Useful app flags: diff --git a/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/openai_realtime.py b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/openai_realtime.py index 7e993157..9d7db348 100644 --- a/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/openai_realtime.py +++ b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/openai_realtime.py @@ -98,8 +98,9 @@ def __init__(self, deps: ToolDependencies, gradio_mode: bool = False, instance_p # Internal lifecycle flags self._shutdown_requested: bool = False self._connected_event: asyncio.Event = asyncio.Event() - self._text_startup_task: asyncio.Task[None] | None = None + self._realtime_startup_task: asyncio.Task[None] | None = None self._startup_error: str | None = None + self._microphone_error_reported: bool = False # Background tool manager self.tool_manager = BackgroundToolManager() @@ -220,26 +221,37 @@ def _openai_api_key_or_error(self) -> str | None: logger.error(message) return None - async def _ensure_text_session(self) -> bool: - """Start a Realtime session for text-only Gradio input if needed.""" + async def _ensure_realtime_session(self, task_name: str) -> bool: + """Start a Realtime session for Gradio text or microphone input if needed.""" if self.connection is not None: return True - if self._text_startup_task is None or self._text_startup_task.done(): + if self._realtime_startup_task is None or self._realtime_startup_task.done(): self._startup_error = None try: self._connected_event.clear() except Exception: pass - self._text_startup_task = asyncio.create_task(self.start_up(), name="openai-realtime-text") + self._realtime_startup_task = asyncio.create_task(self.start_up(), name=task_name) try: await asyncio.wait_for(self._connected_event.wait(), timeout=10.0) except asyncio.TimeoutError: - logger.warning("Timed out waiting for text Realtime session startup") + logger.warning("Timed out waiting for Realtime session startup") return self.connection is not None + async def _ensure_text_session(self) -> bool: + """Start a Realtime session for text-only Gradio input if needed.""" + return await self._ensure_realtime_session("openai-realtime-text") + + async def _report_microphone_error_once(self, message: str) -> None: + """Show one visible microphone error instead of silently dropping every frame.""" + if self._microphone_error_reported: + return + self._microphone_error_reported = True + await self.output_queue.put(AdditionalOutputs({"role": "assistant", "content": message})) + @staticmethod def _chat_message_from_output(output: AdditionalOutputs) -> dict[str, Any] | None: """Convert a FastRTC AdditionalOutputs payload into a chatbot message.""" @@ -946,7 +958,20 @@ async def receive(self, frame: Tuple[int, NDArray[np.int16]]) -> None: """ if not self.connection: - return + if not self._text_model_uses_realtime(): + self._record_startup_error( + "Microphone mode requires an OpenAI-compatible Realtime model. " + f"Current MODEL_NAME={config.MODEL_NAME!r} uses the text path only; " + "switch Input to Text or configure a Realtime model for microphone input." + ) + await self._report_microphone_error_once(self._not_connected_message()) + return + + if not await self._ensure_realtime_session("openai-realtime-microphone"): + await self._report_microphone_error_once(self._not_connected_message()) + return + + self._microphone_error_reported = False input_sample_rate, audio_frame = frame diff --git a/projects/reachy-mini-openshell/tests/test_openai_realtime.py b/projects/reachy-mini-openshell/tests/test_openai_realtime.py index 4a014ab4..93182722 100644 --- a/projects/reachy-mini-openshell/tests/test_openai_realtime.py +++ b/projects/reachy-mini-openshell/tests/test_openai_realtime.py @@ -1,3 +1,4 @@ +import base64 import random import asyncio import logging @@ -5,6 +6,7 @@ from datetime import datetime, timezone from unittest.mock import MagicMock +import numpy as np import pytest import reachy_mini_conversation_app.openai_realtime as rt_mod @@ -242,8 +244,8 @@ def __init__(self, **_kw: Any) -> None: messages = await handler.send_text_message("Hello typed Reachy") await handler.shutdown() - if handler._text_startup_task is not None: - await asyncio.wait_for(handler._text_startup_task, timeout=1) + if handler._realtime_startup_task is not None: + await asyncio.wait_for(handler._realtime_startup_task, timeout=1) assert created_items == [ { @@ -258,6 +260,88 @@ def __init__(self, **_kw: Any) -> None: ] +@pytest.mark.asyncio +async def test_receive_lazily_starts_realtime_and_appends_microphone_audio(monkeypatch: Any) -> None: + """Mic frames should start the Realtime session before appending audio.""" + _set_openai_test_config(monkeypatch) + event_queue: asyncio.Queue[Any] = asyncio.Queue() + appended_audio: list[str] = [] + + class FakeSession: + async def update(self, **_kw: Any) -> None: + return None + + class FakeInputAudioBuffer: + async def append(self, **kwargs: Any) -> None: + appended_audio.append(kwargs["audio"]) + + class FakeConn: + session = FakeSession() + input_audio_buffer = FakeInputAudioBuffer() + + async def __aenter__(self) -> "FakeConn": + return self + + async def __aexit__(self, exc_type: Any, exc: Any, tb: Any) -> bool: + return False + + def __aiter__(self) -> "FakeConn": + return self + + async def __anext__(self) -> Any: + event = await event_queue.get() + if event is None: + raise StopAsyncIteration + return event + + async def close(self) -> None: + await event_queue.put(None) + + class FakeRealtime: + def connect(self, **_kw: Any) -> FakeConn: + return FakeConn() + + class FakeClient: + def __init__(self, **_kw: Any) -> None: + self.realtime = FakeRealtime() + + monkeypatch.setattr(rt_mod, "AsyncOpenAI", FakeClient) + + deps = ToolDependencies(reachy_mini=MagicMock(), movement_manager=MagicMock()) + handler = rt_mod.OpenaiRealtimeHandler(deps) + audio_frame = np.array([0, 1000, -1000, 0], dtype=np.int16) + + await handler.receive((24000, audio_frame)) + await handler.shutdown() + if handler._realtime_startup_task is not None: + await asyncio.wait_for(handler._realtime_startup_task, timeout=1) + + assert appended_audio == [base64.b64encode(audio_frame.tobytes()).decode("utf-8")] + + +@pytest.mark.asyncio +async def test_receive_reports_non_realtime_model_without_opening_realtime(monkeypatch: Any) -> None: + """Mic mode should visibly fail when MODEL_NAME can only use text completions.""" + monkeypatch.setattr(rt_mod.config, "OPENAI_API_KEY", "test-key") + monkeypatch.setattr(rt_mod.config, "OPENAI_BASE_URL", "https://inference-api.nvidia.com/v1") + monkeypatch.setattr(rt_mod.config, "MODEL_NAME", "nvidia/nemotron-3-super-120b-a12b") + + def fail_openai_client(**_kw: Any) -> None: + raise AssertionError("microphone mode should not open Realtime for a non-Realtime model") + + monkeypatch.setattr(rt_mod, "AsyncOpenAI", fail_openai_client) + + deps = ToolDependencies(reachy_mini=MagicMock(), movement_manager=MagicMock()) + handler = rt_mod.OpenaiRealtimeHandler(deps) + + await handler.receive((24000, np.array([0, 0], dtype=np.int16))) + + output = await asyncio.wait_for(handler.output_queue.get(), timeout=1) + assert isinstance(output, rt_mod.AdditionalOutputs) + assert "Microphone mode requires an OpenAI-compatible Realtime model" in output.args[0]["content"] + assert handler.connection is None + + @pytest.mark.asyncio async def test_send_text_message_reports_missing_dotenv_key(monkeypatch: Any) -> None: """Text mode reports the actual missing-key problem instead of a generic connection error.""" From fcf4fb9344b06cf341d6c47c6836794787ec476e Mon Sep 17 00:00:00 2001 From: Johnny Greco Date: Thu, 25 Jun 2026 19:14:52 +0000 Subject: [PATCH 12/22] Add one-step Reachy app launcher --- projects/reachy-mini-openshell/README.md | 38 +++-- .../scripts/start-local.sh | 153 ++++++++++++++++++ 2 files changed, 175 insertions(+), 16 deletions(-) create mode 100755 projects/reachy-mini-openshell/scripts/start-local.sh diff --git a/projects/reachy-mini-openshell/README.md b/projects/reachy-mini-openshell/README.md index 5df8a444..c771d959 100644 --- a/projects/reachy-mini-openshell/README.md +++ b/projects/reachy-mini-openshell/README.md @@ -155,40 +155,46 @@ Realtime path; other model IDs use Chat Completions for text input. ## Run Locally -Start the Reachy Mini daemon first. For the local simulator baseline: +Use the local launcher for the simulator baseline: ```bash -reachy-mini-daemon --sim --scene minimal --headless --no-media --fastapi-host 127.0.0.1 --fastapi-port 8000 --dataset-update-interval 0 +projects/reachy-mini-openshell/scripts/start-local.sh ``` -You can verify the daemon separately at: +The script creates `.venv` when needed, runs `uv sync`, creates `.env` from +`.env.example` if missing, starts `reachy-mini-daemon --sim`, launches the +Gradio app, and prints the browser URL: ```text -http://127.0.0.1:8000/api/daemon/status +http://127.0.0.1:7860/ ``` -Then run the conversation app: +If port `7860` is busy, the launcher chooses the next free port through `7899` +and prints that URL instead. Pass app flags after the script name: ```bash -python -m reachy_mini_conversation_app --gradio --no-camera +projects/reachy-mini-openshell/scripts/start-local.sh --debug +projects/reachy-mini-openshell/scripts/start-local.sh --head-tracker yolo ``` -The installed console script is equivalent: +From inside `projects/reachy-mini-openshell`, the shorter form is: ```bash -reachy-mini-conversation-app --gradio --no-camera +./scripts/start-local.sh --debug ``` -In simulator mode, the app auto-enables Gradio. The examples still pass -`--gradio` so the expected browser interface is explicit. Gradio usually opens -at: +Useful launcher environment variables: -```text -http://127.0.0.1:7860/ -``` +- `APP_PORT=7861`: request a specific Gradio port. +- `DAEMON_PORT=8001`: use a different Reachy daemon port. +- `REACHY_SKIP_SYNC=1`: skip `uv sync` after dependencies are already installed. -If port `7860` is busy, Gradio may choose another available local port and print -that URL in the terminal. +The manual equivalent, useful for debugging, is: + +```bash +reachy-mini-daemon --sim --scene minimal --headless --no-media --fastapi-host 127.0.0.1 --fastapi-port 8000 --dataset-update-interval 0 +python -m reachy_mini_conversation_app --gradio --no-camera +``` The Gradio UI includes an `Input` selector. Use `Microphone` for the WebRTC audio stream with a Realtime-capable model, or switch to `Text` for typed diff --git a/projects/reachy-mini-openshell/scripts/start-local.sh b/projects/reachy-mini-openshell/scripts/start-local.sh new file mode 100755 index 00000000..88f43b48 --- /dev/null +++ b/projects/reachy-mini-openshell/scripts/start-local.sh @@ -0,0 +1,153 @@ +#!/usr/bin/env bash +set -euo pipefail + +SCRIPT_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)" +PROJECT_DIR="$(cd -- "${SCRIPT_DIR}/.." && pwd)" +LAUNCHER_PATH="${BASH_SOURCE[0]}" + +cd "${PROJECT_DIR}" + +APP_HOST="${APP_HOST:-127.0.0.1}" +APP_PORT="${APP_PORT:-}" +APP_PORT_START="${APP_PORT_START:-7860}" +APP_PORT_END="${APP_PORT_END:-7899}" +DAEMON_HOST="${DAEMON_HOST:-127.0.0.1}" +DAEMON_PORT="${DAEMON_PORT:-8000}" +PYTHON_VERSION="${PYTHON_VERSION:-3.12}" +REACHY_SKIP_SYNC="${REACHY_SKIP_SYNC:-0}" +REACHY_DAEMON_TIMEOUT="${REACHY_DAEMON_TIMEOUT:-45}" + +DAEMON_PID="" + +log() { + printf '[reachy-start] %s\n' "$*" +} + +finish() { + if [[ -n "${DAEMON_PID}" ]]; then + log "Stopping simulator daemon pid=${DAEMON_PID}" + kill "${DAEMON_PID}" >/dev/null 2>&1 || true + wait "${DAEMON_PID}" >/dev/null 2>&1 || true + fi +} +trap finish EXIT INT TERM + +require_command() { + if ! command -v "$1" >/dev/null 2>&1; then + printf 'Missing required command: %s\n' "$1" >&2 + exit 1 + fi +} + +daemon_status_ok() { + "${PROJECT_DIR}/.venv/bin/python" - "$DAEMON_HOST" "$DAEMON_PORT" <<'PY' >/dev/null 2>&1 +import sys +import urllib.request + +host, port = sys.argv[1], sys.argv[2] +try: + with urllib.request.urlopen(f"http://{host}:{port}/api/daemon/status", timeout=1.5) as response: + raise SystemExit(0 if 200 <= response.status < 500 else 1) +except Exception: + raise SystemExit(1) +PY +} + +pick_app_port() { + if [[ -n "${APP_PORT}" ]]; then + "${PROJECT_DIR}/.venv/bin/python" - "$APP_HOST" "$APP_PORT" <<'PY' +import socket +import sys + +host = sys.argv[1] +port = int(sys.argv[2]) + +with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as sock: + sock.settimeout(0.2) + if sock.connect_ex((host, port)) == 0: + raise SystemExit(f"Requested APP_PORT={port} is already in use") +PY + printf '%s\n' "${APP_PORT}" + return + fi + + "${PROJECT_DIR}/.venv/bin/python" - "$APP_HOST" "$APP_PORT_START" "$APP_PORT_END" <<'PY' +import socket +import sys + +host = sys.argv[1] +start = int(sys.argv[2]) +end = int(sys.argv[3]) + +for port in range(start, end + 1): + with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as sock: + sock.settimeout(0.2) + if sock.connect_ex((host, port)) != 0: + print(port) + raise SystemExit(0) + +raise SystemExit(f"No free app port found in {start}-{end}") +PY +} + +require_command uv + +if [[ ! -x "${PROJECT_DIR}/.venv/bin/python" ]]; then + log "Creating virtual environment with Python ${PYTHON_VERSION}" + uv venv --python "${PYTHON_VERSION}" +fi + +if [[ "${REACHY_SKIP_SYNC}" != "1" ]]; then + log "Installing project dependencies with uv sync" + if ! uv sync; then + cat >&2 <<'EOF' + +uv sync failed. This project currently has a platform-specific uv.lock. +After installing dependencies another way, rerun with: + + REACHY_SKIP_SYNC=1 ${LAUNCHER_PATH} + +EOF + exit 1 + fi +fi + +if [[ ! -f ".env" ]]; then + cp .env.example .env + log "Created .env from .env.example. Edit it if you need different provider credentials." +fi + +export PATH="${PROJECT_DIR}/.venv/bin:${PATH}" + +if daemon_status_ok; then + log "Using existing Reachy daemon at http://${DAEMON_HOST}:${DAEMON_PORT}" +else + log "Starting Reachy simulator daemon at http://${DAEMON_HOST}:${DAEMON_PORT}" + reachy-mini-daemon \ + --sim \ + --scene minimal \ + --headless \ + --no-media \ + --fastapi-host "${DAEMON_HOST}" \ + --fastapi-port "${DAEMON_PORT}" \ + --dataset-update-interval 0 & + DAEMON_PID="$!" + + log "Waiting for simulator daemon" + deadline=$((SECONDS + REACHY_DAEMON_TIMEOUT)) + until daemon_status_ok; do + if (( SECONDS >= deadline )); then + printf 'Reachy simulator daemon did not become ready within %s seconds.\n' "${REACHY_DAEMON_TIMEOUT}" >&2 + exit 1 + fi + sleep 1 + done +fi + +SELECTED_APP_PORT="$(pick_app_port)" +export GRADIO_SERVER_NAME="${APP_HOST}" +export GRADIO_SERVER_PORT="${SELECTED_APP_PORT}" + +log "Starting Reachy conversation app" +log "Open: http://${APP_HOST}:${SELECTED_APP_PORT}/" +"${PROJECT_DIR}/.venv/bin/python" -m reachy_mini_conversation_app --gradio --no-camera "$@" From 253b5e23eba6af32178b8fd8d0fa2546b436aef9 Mon Sep 17 00:00:00 2001 From: Johnny Greco Date: Thu, 25 Jun 2026 22:41:57 +0000 Subject: [PATCH 13/22] Add Riva STT microphone mode --- projects/reachy-mini-openshell/.env.example | 15 + projects/reachy-mini-openshell/README.md | 49 +- projects/reachy-mini-openshell/pyproject.toml | 11 + .../reachy_mini_conversation_app/config.py | 1 + .../src/reachy_mini_conversation_app/main.py | 20 +- .../openai_realtime.py | 125 ++- .../reachy_mini_conversation_app/riva_asr.py | 202 ++++ .../tests/test_openai_realtime.py | 72 +- projects/reachy-mini-openshell/uv.lock | 919 ++++++++++-------- 9 files changed, 951 insertions(+), 463 deletions(-) create mode 100644 projects/reachy-mini-openshell/src/reachy_mini_conversation_app/riva_asr.py diff --git a/projects/reachy-mini-openshell/.env.example b/projects/reachy-mini-openshell/.env.example index 42515c10..2a82e724 100644 --- a/projects/reachy-mini-openshell/.env.example +++ b/projects/reachy-mini-openshell/.env.example @@ -2,6 +2,21 @@ OPENAI_API_KEY=${NVIDIA_API_KEY} OPENAI_BASE_URL=https://inference-api.nvidia.com/v1 MODEL_NAME=azure/anthropic/claude-opus-4-8 +# Audio input modes: +# - openai_realtime: microphone audio goes to an OpenAI-compatible Realtime endpoint. +# - riva_stt: microphone audio goes to Riva ASR; final transcripts go to the text LLM path. +AUDIO_INPUT_MODE=openai_realtime + +# Used only when AUDIO_INPUT_MODE=riva_stt. +RIVA_SERVER_URI=localhost:50051 +RIVA_USE_SSL=false +RIVA_LANGUAGE_CODE=en-US +RIVA_ASR_MODEL= +RIVA_AUTHORIZATION= +RIVA_METADATA= +RIVA_INTERIM_RESULTS=true +RIVA_AUTOMATIC_PUNCTUATION=true + # Used only with --local-vision. LOCAL_VISION_MODEL=HuggingFaceTB/SmolVLM2-2.2B-Instruct diff --git a/projects/reachy-mini-openshell/README.md b/projects/reachy-mini-openshell/README.md index c771d959..9470fe58 100644 --- a/projects/reachy-mini-openshell/README.md +++ b/projects/reachy-mini-openshell/README.md @@ -39,6 +39,7 @@ This project contains: - a forked Reachy Mini voice conversation app - OpenAI Realtime audio conversation support +- Riva streaming ASR support for microphone-to-text input - text conversation support through OpenAI-compatible Chat Completions - Reachy Mini movement, dance, emotion, and look-around tools - a locked OpenShell profile for instructions and tool selection @@ -54,9 +55,9 @@ this project. The SDK is pinned to the version compatible with the forked conversation-app dependency stack. - a running Reachy Mini daemon, either connected to hardware or started in simulator mode -- an API key for conversation. Microphone mode requires an OpenAI-compatible -Realtime model; text mode can also use OpenAI-compatible Chat Completions -providers such as NVIDIA NIM. +- an API key for conversation. OpenAI Realtime microphone mode requires an +OpenAI-compatible Realtime model; Riva STT and text mode can use +OpenAI-compatible Chat Completions providers such as NVIDIA NIM. ## Install @@ -112,9 +113,10 @@ and regenerate `uv.lock` for that platform. ## Optional Dependencies -The active optional dependency groups are vision-related only: +The active optional dependency groups cover Riva ASR and vision: ```bash +uv sync --extra riva uv sync --extra local_vision uv sync --extra yolo_vision uv sync --extra mediapipe_vision @@ -124,12 +126,17 @@ uv sync --extra all_vision With `pip`, use the equivalent editable installs: ```bash +python -m pip install -e '.[riva]' python -m pip install -e '.[local_vision]' python -m pip install -e '.[yolo_vision]' python -m pip install -e '.[mediapipe_vision]' python -m pip install -e '.[all_vision]' ``` +The `riva` extra is intentionally marked incompatible with `mediapipe_vision` +and `all_vision` because the current Riva and MediaPipe client stacks require +different protobuf ranges. + There are no project-level `backend` or `sim` extras anymore. The previous backend extra belonged to the deleted scaffold. The default dependency set includes Reachy Mini's MuJoCo simulator backend because the local development @@ -149,6 +156,19 @@ reference another exported environment variable, such as - `OPENAI_BASE_URL`: OpenAI-compatible API base URL. - `MODEL_NAME`: provider model ID. Model names containing `realtime` use the Realtime path; other model IDs use Chat Completions for text input. +- `AUDIO_INPUT_MODE`: microphone routing mode. Use `openai_realtime` for the +template default, where audio goes to an OpenAI-compatible Realtime endpoint. +Use `riva_stt` to stream microphone audio to Riva ASR and pass final +transcripts into the text LLM path. +- `RIVA_SERVER_URI`: Riva ASR server URI, for example `localhost:50051`. +- `RIVA_USE_SSL`: set to `true` for TLS-enabled Riva endpoints. +- `RIVA_LANGUAGE_CODE`: BCP-47 language code for Riva ASR, such as `en-US`. +- `RIVA_ASR_MODEL`: optional Riva ASR model name. Leave empty to let Riva +select a model from the language/configuration. +- `RIVA_AUTHORIZATION`: optional authorization metadata value, such as a bearer +token, for hosted Riva endpoints. +- `RIVA_METADATA`: optional comma-separated `key=value` metadata pairs passed +to the Riva client. - `LOCAL_VISION_MODEL`: Hugging Face model used with `--local-vision`. - `HF_HOME`: Hugging Face cache directory. Defaults to `./cache`. - `HF_TOKEN`: optional Hugging Face token for gated models. @@ -196,16 +216,19 @@ reachy-mini-daemon --sim --scene minimal --headless --no-media --fastapi-host 12 python -m reachy_mini_conversation_app --gradio --no-camera ``` -The Gradio UI includes an `Input` selector. Use `Microphone` for the WebRTC -audio stream with a Realtime-capable model, or switch to `Text` for typed -messages. Text mode uses Chat Completions when `MODEL_NAME` is a non-Realtime -model ID. Tool calls are supported in text mode; the app keeps the tool schema -attached on the post-tool follow-up request for providers that require it. +The Gradio UI includes an `Input` selector: + +- `OpenAI Realtime`: template-default microphone behavior. Audio streams to an +OpenAI-compatible Realtime endpoint, which handles transcription and response +generation in one session. +- `Riva STT`: microphone audio streams to Riva ASR. Final transcripts are sent +to the same text LLM path used by typed messages, so OpenAI-compatible Chat +Completions providers such as NVIDIA NIM can answer. +- `Text`: typed messages only. -If the microphone appears to connect but no transcript or model response -arrives, check the visible chat error and your `.env` values. Microphone mode -requires an OpenAI-compatible Realtime model and endpoint; Chat Completions -providers are supported through the `Text` input mode only. +Tool calls are supported in text mode and in the Riva STT path; the app keeps +the tool schema attached on the post-tool follow-up request for providers that +require it. ## Runtime Flags diff --git a/projects/reachy-mini-openshell/pyproject.toml b/projects/reachy-mini-openshell/pyproject.toml index be842755..a9a7a66e 100644 --- a/projects/reachy-mini-openshell/pyproject.toml +++ b/projects/reachy-mini-openshell/pyproject.toml @@ -28,8 +28,19 @@ dev = [ environments = [ "sys_platform == 'darwin'", ] +conflicts = [ + [ + { extra = "riva" }, + { extra = "mediapipe_vision" }, + ], + [ + { extra = "riva" }, + { extra = "all_vision" }, + ], +] [project.optional-dependencies] +riva = [ "nvidia-riva-client>=2.19,<3",] local_vision = [ "torch>=2.1", "transformers==5.0.0rc2", "num2words",] yolo_vision = [ "ultralytics", "supervision",] mediapipe_vision = [ "mediapipe==0.10.14",] diff --git a/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/config.py b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/config.py index 6cf01c4f..bb04df19 100644 --- a/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/config.py +++ b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/config.py @@ -72,6 +72,7 @@ class Config: OPENAI_API_KEY = _dotenv_value("OPENAI_API_KEY") OPENAI_BASE_URL = _dotenv_value("OPENAI_BASE_URL", "https://api.openai.com/v1") MODEL_NAME = os.getenv("MODEL_NAME", "gpt-realtime") + AUDIO_INPUT_MODE = os.getenv("AUDIO_INPUT_MODE", "openai_realtime") HF_HOME = os.getenv("HF_HOME", "./cache") LOCAL_VISION_MODEL = os.getenv("LOCAL_VISION_MODEL", "HuggingFaceTB/SmolVLM2-2.2B-Instruct") HF_TOKEN = os.getenv("HF_TOKEN") diff --git a/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/main.py b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/main.py index f618aef4..3382e089 100644 --- a/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/main.py +++ b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/main.py @@ -49,8 +49,13 @@ def run( # Putting these dependencies here makes the dashboard faster to load when the conversation app is installed from reachy_mini_conversation_app.moves import MovementManager + from reachy_mini_conversation_app.config import config from reachy_mini_conversation_app.console import LocalStream - from reachy_mini_conversation_app.openai_realtime import OpenaiRealtimeHandler + from reachy_mini_conversation_app.openai_realtime import ( + AUDIO_MODE_RIVA_STT, + AUDIO_MODE_OPENAI_REALTIME, + OpenaiRealtimeHandler, + ) from reachy_mini_conversation_app.tools.core_tools import ToolDependencies from reachy_mini_conversation_app.audio.head_wobbler import HeadWobbler @@ -157,9 +162,16 @@ def run( stream_manager = stream.ui with stream_manager: + input_mode_choices = { + "OpenAI Realtime": AUDIO_MODE_OPENAI_REALTIME, + "Riva STT": AUDIO_MODE_RIVA_STT, + "Text": "text", + } + initial_input_mode = "Riva STT" if handler.audio_input_mode == AUDIO_MODE_RIVA_STT else "OpenAI Realtime" + input_mode = gr.Radio( - choices=["Microphone", "Text"], - value="Microphone", + choices=list(input_mode_choices), + value=initial_input_mode, label="Input", ) with gr.Row(): @@ -173,6 +185,8 @@ def run( def switch_input_mode(mode: str) -> tuple[dict[str, Any], dict[str, Any], dict[str, Any]]: text_mode = mode == "Text" + if not text_mode: + handler.set_audio_input_mode(input_mode_choices.get(mode, config.AUDIO_INPUT_MODE)) return ( gr.update(visible=not text_mode), gr.update(visible=text_mode), diff --git a/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/openai_realtime.py b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/openai_realtime.py index 9d7db348..ad173807 100644 --- a/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/openai_realtime.py +++ b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/openai_realtime.py @@ -18,6 +18,7 @@ from reachy_mini_conversation_app.config import LOCKED_PROFILE, config from reachy_mini_conversation_app.prompts import get_session_voice, get_session_instructions +from reachy_mini_conversation_app.riva_asr import RivaAsrConfig, RivaStreamingTranscriber from reachy_mini_conversation_app.tools.core_tools import ( ToolDependencies, get_tool_specs, @@ -34,6 +35,9 @@ OPEN_AI_INPUT_SAMPLE_RATE: Final[Literal[24000]] = 24000 OPEN_AI_OUTPUT_SAMPLE_RATE: Final[Literal[24000]] = 24000 +AUDIO_MODE_OPENAI_REALTIME: Final = "openai_realtime" +AUDIO_MODE_RIVA_STT: Final = "riva_stt" +AUDIO_INPUT_MODES: Final = {AUDIO_MODE_OPENAI_REALTIME, AUDIO_MODE_RIVA_STT} # Cost tracking from usage data (pricing as of Feb 2026 https://openai.com/api/pricing/) AUDIO_INPUT_COST_PER_1M = 32.0 @@ -45,6 +49,19 @@ _RESPONSE_DONE_TIMEOUT: Final[float] = 30.0 +def _normalize_audio_input_mode(audio_input_mode: str) -> str: + """Normalize configured audio input mode.""" + normalized = audio_input_mode.strip().lower().replace("-", "_") + if normalized in {"openai", "realtime", "microphone"}: + return AUDIO_MODE_OPENAI_REALTIME + if normalized in {"riva", "riva_asr", "riva_stt"}: + return AUDIO_MODE_RIVA_STT + if normalized not in AUDIO_INPUT_MODES: + logger.warning("Unknown AUDIO_INPUT_MODE=%r; using %s", audio_input_mode, AUDIO_MODE_OPENAI_REALTIME) + return AUDIO_MODE_OPENAI_REALTIME + return normalized + + def _compute_response_cost(usage: Any) -> float: """Compute dollar cost from a response usage object.""" inp = getattr(usage, "input_token_details", None) @@ -63,7 +80,14 @@ def _compute_response_cost(usage: Any) -> float: class OpenaiRealtimeHandler(AsyncStreamHandler): """An OpenAI realtime handler for fastrtc Stream.""" - def __init__(self, deps: ToolDependencies, gradio_mode: bool = False, instance_path: Optional[str] = None): + def __init__( + self, + deps: ToolDependencies, + gradio_mode: bool = False, + instance_path: Optional[str] = None, + audio_input_mode: str | None = None, + audio_input_mode_state: dict[str, str] | None = None, + ): """Initialize the handler.""" super().__init__( expected_layout="mono", @@ -76,6 +100,9 @@ def __init__(self, deps: ToolDependencies, gradio_mode: bool = False, instance_p self.input_sample_rate: Literal[24000] = self.input_sample_rate self.deps = deps + self._audio_input_mode_state = audio_input_mode_state or { + "mode": _normalize_audio_input_mode(audio_input_mode or config.AUDIO_INPUT_MODE) + } # Override type annotations for OpenAI strict typing (only for values used in API) self.output_sample_rate = OPEN_AI_OUTPUT_SAMPLE_RATE @@ -89,6 +116,7 @@ def __init__(self, deps: ToolDependencies, gradio_mode: bool = False, instance_p self.is_idle_tool_call = False self.gradio_mode = gradio_mode self.instance_path = instance_path + self._riva_transcriber: RivaStreamingTranscriber | None = None # Debouncing for partial transcripts self.partial_transcript_task: asyncio.Task[None] | None = None @@ -118,7 +146,21 @@ def __init__(self, deps: ToolDependencies, gradio_mode: bool = False, instance_p def copy(self) -> "OpenaiRealtimeHandler": """Create a copy of the handler.""" - return OpenaiRealtimeHandler(self.deps, self.gradio_mode, self.instance_path) + return OpenaiRealtimeHandler( + self.deps, + self.gradio_mode, + self.instance_path, + audio_input_mode_state=self._audio_input_mode_state, + ) + + @property + def audio_input_mode(self) -> str: + """Return the current shared microphone audio mode.""" + return self._audio_input_mode_state["mode"] + + def set_audio_input_mode(self, audio_input_mode: str) -> None: + """Select how microphone audio should be processed.""" + self._audio_input_mode_state["mode"] = _normalize_audio_input_mode(audio_input_mode) def _record_startup_error(self, message: str) -> None: """Store a startup failure so the UI can show a useful error.""" @@ -947,22 +989,21 @@ async def _run_realtime_session(self) -> None: # Microphone receive async def receive(self, frame: Tuple[int, NDArray[np.int16]]) -> None: - """Receive audio frame from the microphone and send it to the OpenAI server. - - Handles both mono and stereo audio formats, converting to the expected - mono format for OpenAI's API. Resamples if the input sample rate differs - from the expected rate. + """Receive audio frame from the microphone and route it through the selected audio mode.""" + if self.audio_input_mode == AUDIO_MODE_RIVA_STT: + await self._receive_riva_stt(frame) + return - Args: - frame: A tuple containing (sample_rate, audio_data). + await self._receive_openai_realtime_audio(frame) - """ + async def _receive_openai_realtime_audio(self, frame: Tuple[int, NDArray[np.int16]]) -> None: + """Send a microphone frame to the OpenAI Realtime audio session.""" if not self.connection: if not self._text_model_uses_realtime(): self._record_startup_error( - "Microphone mode requires an OpenAI-compatible Realtime model. " + "OpenAI Realtime microphone mode requires an OpenAI-compatible Realtime model. " f"Current MODEL_NAME={config.MODEL_NAME!r} uses the text path only; " - "switch Input to Text or configure a Realtime model for microphone input." + "switch Input to Riva STT/Text or configure a Realtime model for OpenAI Realtime mode." ) await self._report_microphone_error_once(self._not_connected_message()) return @@ -974,8 +1015,39 @@ async def receive(self, frame: Tuple[int, NDArray[np.int16]]) -> None: self._microphone_error_reported = False input_sample_rate, audio_frame = frame + audio_frame = self._prepare_audio_frame(input_sample_rate, audio_frame, target_sample_rate=self.input_sample_rate) - # Reshape if needed + # Send to OpenAI (guard against races during reconnect) + try: + audio_message = base64.b64encode(audio_frame.tobytes()).decode("utf-8") + await self.connection.input_audio_buffer.append(audio=audio_message) + except Exception as e: + logger.debug("Dropping audio frame: connection not ready (%s)", e) + return + + async def _receive_riva_stt(self, frame: Tuple[int, NDArray[np.int16]]) -> None: + """Send a microphone frame to Riva ASR, then route transcripts into the text LLM path.""" + input_sample_rate, audio_frame = frame + audio_frame = self._prepare_audio_frame(input_sample_rate, audio_frame) + + if self._riva_transcriber is None: + self._riva_transcriber = RivaStreamingTranscriber( + config=RivaAsrConfig.from_env(), + on_final_transcript=self._handle_riva_final_transcript, + on_partial_transcript=self._handle_riva_partial_transcript, + ) + await self._riva_transcriber.start(input_sample_rate) + + await self._riva_transcriber.send_audio(audio_frame.tobytes()) + + def _prepare_audio_frame( + self, + input_sample_rate: int, + audio_frame: NDArray[np.int16], + *, + target_sample_rate: int | None = None, + ) -> NDArray[np.int16]: + """Convert incoming audio to mono PCM16, optionally resampling first.""" if audio_frame.ndim == 2: # Scipy channels last convention if audio_frame.shape[1] > audio_frame.shape[0]: @@ -984,21 +1056,22 @@ async def receive(self, frame: Tuple[int, NDArray[np.int16]]) -> None: if audio_frame.shape[1] > 1: audio_frame = audio_frame[:, 0] - # Resample if needed - if self.input_sample_rate != input_sample_rate: - audio_frame = resample(audio_frame, int(len(audio_frame) * self.input_sample_rate / input_sample_rate)) + if target_sample_rate is not None and target_sample_rate != input_sample_rate: + audio_frame = resample(audio_frame, int(len(audio_frame) * target_sample_rate / input_sample_rate)) - # Cast if needed - audio_frame = audio_to_int16(audio_frame) + return audio_to_int16(audio_frame) - # Send to OpenAI (guard against races during reconnect) - try: - audio_message = base64.b64encode(audio_frame.tobytes()).decode("utf-8") - await self.connection.input_audio_buffer.append(audio=audio_message) - except Exception as e: - logger.debug("Dropping audio frame: connection not ready (%s)", e) + async def _handle_riva_partial_transcript(self, transcript: str) -> None: + await self.output_queue.put(AdditionalOutputs({"role": "user_partial", "content": transcript})) + + async def _handle_riva_final_transcript(self, transcript: str) -> None: + if transcript.startswith("[error]"): + await self.output_queue.put(AdditionalOutputs({"role": "assistant", "content": transcript})) return + for message in await self.send_text_message(transcript): + await self.output_queue.put(AdditionalOutputs(message)) + async def emit(self) -> Tuple[int, NDArray[np.int16]] | AdditionalOutputs | None: """Emit audio frame to be played by the speaker.""" # sends to the stream the stuff put in the output queue by the openai event handler @@ -1027,6 +1100,10 @@ async def shutdown(self) -> None: # Stop background tool manager tasks (listener + cleanup) await self.tool_manager.shutdown() + if self._riva_transcriber is not None: + await self._riva_transcriber.stop() + self._riva_transcriber = None + # Cancel any pending debounce task if self.partial_transcript_task and not self.partial_transcript_task.done(): self.partial_transcript_task.cancel() diff --git a/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/riva_asr.py b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/riva_asr.py new file mode 100644 index 00000000..efc7b814 --- /dev/null +++ b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/riva_asr.py @@ -0,0 +1,202 @@ +"""Riva streaming ASR bridge used by microphone-to-text mode.""" + +from __future__ import annotations +import os +import queue +import asyncio +import logging +import threading +from dataclasses import dataclass +from collections.abc import Callable, Awaitable + + +logger = logging.getLogger(__name__) + + +@dataclass(frozen=True) +class RivaAsrConfig: + """Configuration for Riva streaming ASR.""" + + server_uri: str + language_code: str + model: str + use_ssl: bool + ssl_cert: str | None + authorization: str | None + metadata: tuple[tuple[str, str], ...] + interim_results: bool + automatic_punctuation: bool + + @classmethod + def from_env(cls) -> "RivaAsrConfig": + """Build Riva ASR configuration from environment variables.""" + return cls( + server_uri=os.getenv("RIVA_SERVER_URI", "localhost:50051"), + language_code=os.getenv("RIVA_LANGUAGE_CODE", "en-US"), + model=os.getenv("RIVA_ASR_MODEL", ""), + use_ssl=_env_flag("RIVA_USE_SSL", default=False), + ssl_cert=os.getenv("RIVA_SSL_CERT") or None, + authorization=os.getenv("RIVA_AUTHORIZATION") or None, + metadata=_parse_metadata(os.getenv("RIVA_METADATA", "")), + interim_results=_env_flag("RIVA_INTERIM_RESULTS", default=True), + automatic_punctuation=_env_flag("RIVA_AUTOMATIC_PUNCTUATION", default=True), + ) + + +class RivaStreamingTranscriber: + """Threaded wrapper around the blocking Riva streaming ASR client.""" + + def __init__( + self, + *, + config: RivaAsrConfig, + on_final_transcript: Callable[[str], Awaitable[None]], + on_partial_transcript: Callable[[str], Awaitable[None]] | None = None, + ) -> None: + """Initialize the streaming transcriber callbacks and audio queue.""" + self._config = config + self._on_final_transcript = on_final_transcript + self._on_partial_transcript = on_partial_transcript + self._audio_queue: queue.Queue[bytes | None] = queue.Queue(maxsize=128) + self._thread: threading.Thread | None = None + self._loop: asyncio.AbstractEventLoop | None = None + self._sample_rate_hertz: int | None = None + self._last_partial = "" + self._last_final = "" + + async def start(self, sample_rate_hertz: int) -> None: + """Start the background Riva stream.""" + if self._thread is not None and self._thread.is_alive(): + return + + self._loop = asyncio.get_running_loop() + self._sample_rate_hertz = sample_rate_hertz + self._thread = threading.Thread(target=self._run, name="riva-asr-stream", daemon=True) + self._thread.start() + + async def send_audio(self, audio_bytes: bytes) -> None: + """Send one PCM16 audio chunk to the Riva stream.""" + if self._thread is None or not self._thread.is_alive(): + raise RuntimeError("Riva ASR stream is not running") + + try: + self._audio_queue.put_nowait(audio_bytes) + except queue.Full: + try: + self._audio_queue.get_nowait() + except queue.Empty: + pass + self._audio_queue.put_nowait(audio_bytes) + + async def stop(self) -> None: + """Close the stream and wait briefly for the worker to exit.""" + if self._thread is None: + return + self._audio_queue.put(None) + thread = self._thread + await asyncio.to_thread(thread.join, 2.0) + + def _audio_chunks(self) -> object: + while True: + chunk = self._audio_queue.get() + if chunk is None: + return + yield chunk + + def _run(self) -> None: + try: + import riva.client + except ImportError: + self._schedule_final( + "[error] Riva STT mode requires the optional dependency " + "`nvidia-riva-client`. Install it with `uv sync --extra riva`." + ) + return + + if self._loop is None or self._sample_rate_hertz is None: + logger.error("Riva ASR stream started without an event loop or sample rate") + return + + try: + metadata_args = list(self._config.metadata) + if self._config.authorization: + metadata_args.append(("authorization", self._config.authorization)) + + auth = riva.client.Auth( + uri=self._config.server_uri, + use_ssl=self._config.use_ssl, + ssl_cert=self._config.ssl_cert, + metadata_args=metadata_args, + ) + asr_service = riva.client.ASRService(auth) + recognition_config = riva.client.RecognitionConfig( + encoding=riva.client.AudioEncoding.LINEAR_PCM, + sample_rate_hertz=self._sample_rate_hertz, + language_code=self._config.language_code, + max_alternatives=1, + enable_automatic_punctuation=self._config.automatic_punctuation, + audio_channel_count=1, + model=self._config.model, + ) + streaming_config = riva.client.StreamingRecognitionConfig( + config=recognition_config, + interim_results=self._config.interim_results, + ) + + responses = asr_service.streaming_response_generator(self._audio_chunks(), streaming_config) + for response in responses: + for result in getattr(response, "results", []): + transcript = self._result_transcript(result) + if not transcript: + continue + if getattr(result, "is_final", False): + self._schedule_final(transcript) + else: + self._schedule_partial(transcript) + except Exception as exc: + logger.exception("Riva streaming ASR failed") + self._schedule_final(f"[error] Riva streaming ASR failed: {type(exc).__name__}: {exc}") + + def _result_transcript(self, result: object) -> str: + alternatives = getattr(result, "alternatives", []) + if not alternatives: + return "" + transcript = getattr(alternatives[0], "transcript", "") + return transcript.strip() if isinstance(transcript, str) else "" + + def _schedule_partial(self, transcript: str) -> None: + if transcript == self._last_partial: + return + self._last_partial = transcript + if self._loop is None or self._on_partial_transcript is None: + return + asyncio.run_coroutine_threadsafe(self._on_partial_transcript(transcript), self._loop) + + def _schedule_final(self, transcript: str) -> None: + if transcript == self._last_final: + return + self._last_final = transcript + if self._loop is None: + return + asyncio.run_coroutine_threadsafe(self._on_final_transcript(transcript), self._loop) + + +def _env_flag(name: str, default: bool = False) -> bool: + raw = os.getenv(name) + if raw is None: + return default + return raw.strip().lower() in {"1", "true", "yes", "on"} + + +def _parse_metadata(raw: str) -> tuple[tuple[str, str], ...]: + pairs: list[tuple[str, str]] = [] + for item in raw.split(","): + item = item.strip() + if not item: + continue + key, separator, value = item.partition("=") + if not separator or not key.strip(): + logger.warning("Ignoring invalid RIVA_METADATA item %r; expected key=value", item) + continue + pairs.append((key.strip(), value.strip())) + return tuple(pairs) diff --git a/projects/reachy-mini-openshell/tests/test_openai_realtime.py b/projects/reachy-mini-openshell/tests/test_openai_realtime.py index 93182722..06a5e5e3 100644 --- a/projects/reachy-mini-openshell/tests/test_openai_realtime.py +++ b/projects/reachy-mini-openshell/tests/test_openai_realtime.py @@ -338,10 +338,80 @@ def fail_openai_client(**_kw: Any) -> None: output = await asyncio.wait_for(handler.output_queue.get(), timeout=1) assert isinstance(output, rt_mod.AdditionalOutputs) - assert "Microphone mode requires an OpenAI-compatible Realtime model" in output.args[0]["content"] + assert "OpenAI Realtime microphone mode requires an OpenAI-compatible Realtime model" in output.args[0]["content"] assert handler.connection is None +@pytest.mark.asyncio +async def test_receive_riva_mode_routes_final_transcript_to_text_llm(monkeypatch: Any) -> None: + """Riva STT mode should send final ASR transcripts through the text LLM path.""" + sent_text_messages: list[str] = [] + + class FakeRivaTranscriber: + instances: list["FakeRivaTranscriber"] = [] + + def __init__(self, **kwargs: Any) -> None: + self.on_final_transcript = kwargs["on_final_transcript"] + self.on_partial_transcript = kwargs["on_partial_transcript"] + self.started_sample_rate: int | None = None + self.audio_chunks: list[bytes] = [] + self.stopped = False + self.instances.append(self) + + async def start(self, sample_rate_hertz: int) -> None: + self.started_sample_rate = sample_rate_hertz + + async def send_audio(self, audio_bytes: bytes) -> None: + self.audio_chunks.append(audio_bytes) + await self.on_partial_transcript("hello") + await self.on_final_transcript("hello reachy") + + async def stop(self) -> None: + self.stopped = True + + monkeypatch.setattr(rt_mod, "RivaStreamingTranscriber", FakeRivaTranscriber) + + deps = ToolDependencies(reachy_mini=MagicMock(), movement_manager=MagicMock()) + handler = rt_mod.OpenaiRealtimeHandler(deps, audio_input_mode=rt_mod.AUDIO_MODE_RIVA_STT) + + async def fake_send_text_message(message: str) -> list[dict[str, Any]]: + sent_text_messages.append(message) + return [ + {"role": "user", "content": message}, + {"role": "assistant", "content": "Hi from the text model."}, + ] + + handler.send_text_message = fake_send_text_message # type: ignore[method-assign] + audio_frame = np.array([0, 1000, -1000, 0], dtype=np.int16) + + await handler.receive((16000, audio_frame)) + + partial = await asyncio.wait_for(handler.output_queue.get(), timeout=1) + user = await asyncio.wait_for(handler.output_queue.get(), timeout=1) + assistant = await asyncio.wait_for(handler.output_queue.get(), timeout=1) + await handler.shutdown() + + transcriber = FakeRivaTranscriber.instances[0] + assert transcriber.started_sample_rate == 16000 + assert transcriber.audio_chunks == [audio_frame.tobytes()] + assert transcriber.stopped + assert sent_text_messages == ["hello reachy"] + assert partial.args[0] == {"role": "user_partial", "content": "hello"} + assert user.args[0] == {"role": "user", "content": "hello reachy"} + assert assistant.args[0] == {"role": "assistant", "content": "Hi from the text model."} + + +def test_handler_copies_share_audio_input_mode() -> None: + """FastRTC handler copies should see the latest UI-selected audio mode.""" + deps = ToolDependencies(reachy_mini=MagicMock(), movement_manager=MagicMock()) + handler = rt_mod.OpenaiRealtimeHandler(deps, audio_input_mode=rt_mod.AUDIO_MODE_OPENAI_REALTIME) + copied_handler = handler.copy() + + handler.set_audio_input_mode(rt_mod.AUDIO_MODE_RIVA_STT) + + assert copied_handler.audio_input_mode == rt_mod.AUDIO_MODE_RIVA_STT + + @pytest.mark.asyncio async def test_send_text_message_reports_missing_dotenv_key(monkeypatch: Any) -> None: """Text mode reports the actual missing-key problem instead of a generic connection error.""" diff --git a/projects/reachy-mini-openshell/uv.lock b/projects/reachy-mini-openshell/uv.lock index a3dcec23..b4ec368f 100644 --- a/projects/reachy-mini-openshell/uv.lock +++ b/projects/reachy-mini-openshell/uv.lock @@ -9,6 +9,13 @@ resolution-markers = [ supported-markers = [ "sys_platform == 'darwin'", ] +conflicts = [[ + { package = "reachy-mini-conversation-app", extra = "mediapipe-vision" }, + { package = "reachy-mini-conversation-app", extra = "riva" }, +], [ + { package = "reachy-mini-conversation-app", extra = "all-vision" }, + { package = "reachy-mini-conversation-app", extra = "riva" }, +]] [[package]] name = "absl-py" @@ -42,15 +49,15 @@ name = "aiohttp" version = "3.14.1" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "aiohappyeyeballs", marker = "sys_platform == 'darwin'" }, - { name = "aiosignal", marker = "sys_platform == 'darwin'" }, - { name = "async-timeout", marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, - { name = "attrs", marker = "sys_platform == 'darwin'" }, - { name = "frozenlist", marker = "sys_platform == 'darwin'" }, - { name = "multidict", marker = "sys_platform == 'darwin'" }, - { name = "propcache", marker = "sys_platform == 'darwin'" }, - { name = "typing-extensions", marker = "sys_platform == 'darwin'" }, - { name = "yarl", marker = "sys_platform == 'darwin'" }, + { name = "aiohappyeyeballs", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "aiosignal", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "async-timeout", marker = "(python_full_version < '3.11' and sys_platform == 'darwin') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "attrs", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "frozenlist", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "multidict", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "propcache", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "typing-extensions", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "yarl", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, ] sdist = { url = "https://files.pythonhosted.org/packages/82/78/8ea7308cac6934de8c74a14f3d5f65d1c89287426688be79538d0e5c013d/aiohttp-3.14.1.tar.gz", hash = "sha256:307f2cff90a764d329e77040603fa032db89c5c24fdad50c4c15334cba744035", size = 7955794, upload-time = "2026-06-07T21:09:35.529Z" } wheels = [ @@ -70,8 +77,8 @@ name = "aioice" version = "0.10.2" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "dnspython", marker = "sys_platform == 'darwin'" }, - { name = "ifaddr", marker = "sys_platform == 'darwin'" }, + { name = "dnspython", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "ifaddr", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, ] sdist = { url = "https://files.pythonhosted.org/packages/67/04/df7286233f468e19e9bedff023b6b246182f0b2ccb04ceeb69b2994021c6/aioice-0.10.2.tar.gz", hash = "sha256:bf236c6829ee33c8e540535d31cd5a066b531cb56de2be94c46be76d68b1a806", size = 44307, upload-time = "2025-11-28T15:56:48.836Z" } wheels = [ @@ -83,13 +90,13 @@ name = "aiortc" version = "1.14.0" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "aioice", marker = "sys_platform == 'darwin'" }, - { name = "av", marker = "sys_platform == 'darwin'" }, - { name = "cryptography", marker = "sys_platform == 'darwin'" }, - { name = "google-crc32c", marker = "sys_platform == 'darwin'" }, - { name = "pyee", marker = "sys_platform == 'darwin'" }, - { name = "pylibsrtp", marker = "sys_platform == 'darwin'" }, - { name = "pyopenssl", marker = "sys_platform == 'darwin'" }, + { name = "aioice", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "av", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "cryptography", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "google-crc32c", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "pyee", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "pylibsrtp", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "pyopenssl", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, ] sdist = { url = "https://files.pythonhosted.org/packages/51/9c/4e027bfe0195de0442da301e2389329496745d40ae44d2d7c4571c4290ce/aiortc-1.14.0.tar.gz", hash = "sha256:adc8a67ace10a085721e588e06a00358ed8eaf5f6b62f0a95358ff45628dd762", size = 1180864, upload-time = "2025-10-13T21:40:37.905Z" } wheels = [ @@ -101,8 +108,8 @@ name = "aiosignal" version = "1.4.0" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "frozenlist", marker = "sys_platform == 'darwin'" }, - { name = "typing-extensions", marker = "sys_platform == 'darwin'" }, + { name = "frozenlist", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "typing-extensions", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, ] sdist = { url = "https://files.pythonhosted.org/packages/61/62/06741b579156360248d1ec624842ad0edf697050bbaf7c3e46394e106ad1/aiosignal-1.4.0.tar.gz", hash = "sha256:f47eecd9468083c2029cc99945502cb7708b082c232f9aca65da147157b251c7", size = 25007, upload-time = "2025-07-03T22:54:43.528Z" } wheels = [ @@ -132,9 +139,9 @@ name = "anyio" version = "4.14.1" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "exceptiongroup", marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, - { name = "idna", marker = "sys_platform == 'darwin'" }, - { name = "typing-extensions", marker = "sys_platform == 'darwin'" }, + { name = "exceptiongroup", marker = "(python_full_version < '3.11' and sys_platform == 'darwin') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "idna", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "typing-extensions", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, ] sdist = { url = "https://files.pythonhosted.org/packages/3b/72/5562aabb8dd7181e8e860622a38bea08d17842b99ecd4c91f84ac95251b0/anyio-4.14.1.tar.gz", hash = "sha256:8d648a3544c1a700e3ff78615cd679e4c5c3f149904287e73687b2596963629e", size = 254831, upload-time = "2026-06-24T20:56:06.017Z" } wheels = [ @@ -146,7 +153,7 @@ name = "asgiref" version = "3.11.1" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "typing-extensions", marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, + { name = "typing-extensions", marker = "(python_full_version < '3.11' and sys_platform == 'darwin') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, ] sdist = { url = "https://files.pythonhosted.org/packages/63/40/f03da1264ae8f7cfdbf9146542e5e7e8100a4c66ab48e791df9a03d3f6c0/asgiref-3.11.1.tar.gz", hash = "sha256:5f184dc43b7e763efe848065441eac62229c9f7b0475f41f80e207a114eda4ce", size = 38550, upload-time = "2026-02-03T13:30:14.33Z" } wheels = [ @@ -231,7 +238,7 @@ name = "cffi" version = "2.0.0" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "pycparser", marker = "implementation_name != 'PyPy' and sys_platform == 'darwin'" }, + { name = "pycparser", marker = "(implementation_name != 'PyPy' and sys_platform == 'darwin') or (implementation_name == 'PyPy' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (implementation_name == 'PyPy' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, ] sdist = { url = "https://files.pythonhosted.org/packages/eb/56/b1ba7935a17738ae8453301356628e8147c79dbb825bcbc73dc7401f9846/cffi-2.0.0.tar.gz", hash = "sha256:44d1b5909021139fe36001ae048dbdde8214afa20200eda0f64c068cac5d5529", size = 523588, upload-time = "2025-09-08T23:24:04.541Z" } wheels = [ @@ -278,7 +285,7 @@ name = "click-option-group" version = "0.5.9" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "click", marker = "sys_platform == 'darwin'" }, + { name = "click", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, ] sdist = { url = "https://files.pythonhosted.org/packages/ef/ff/d291d66595b30b83d1cb9e314b2c9be7cfc7327d4a0d40a15da2416ea97b/click_option_group-0.5.9.tar.gz", hash = "sha256:f94ed2bc4cf69052e0f29592bd1e771a1789bd7bfc482dd0bc482134aff95823", size = 22222, upload-time = "2025-10-09T09:38:01.474Z" } wheels = [ @@ -293,7 +300,7 @@ resolution-markers = [ "python_full_version < '3.11' and sys_platform == 'darwin'", ] dependencies = [ - { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.11' and sys_platform == 'darwin') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, ] sdist = { url = "https://files.pythonhosted.org/packages/66/54/eb9bfc647b19f2009dd5c7f5ec51c4e6ca831725f1aea7a993034f483147/contourpy-1.3.2.tar.gz", hash = "sha256:b6945942715a034c671b7fc54f9588126b0b8bf23db2696e3ca8328f3ff0ab54", size = 13466130, upload-time = "2025-04-15T17:47:53.79Z" } wheels = [ @@ -316,7 +323,7 @@ resolution-markers = [ "python_full_version == '3.11.*' and sys_platform == 'darwin'", ] dependencies = [ - { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' and sys_platform == 'darwin'" }, + { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.11' and sys_platform == 'darwin') or (python_full_version < '3.11' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version < '3.11' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, ] sdist = { url = "https://files.pythonhosted.org/packages/58/01/1253e6698a07380cd31a736d248a3f2a50a7c88779a1813da27503cadc2a/contourpy-1.3.3.tar.gz", hash = "sha256:083e12155b210502d0bca491432bb04d56dc3432f95a979b429f2848c3dbe880", size = 13466174, upload-time = "2025-07-26T12:03:12.549Z" } wheels = [ @@ -333,8 +340,8 @@ name = "cryptography" version = "49.0.0" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "cffi", marker = "platform_python_implementation != 'PyPy' and sys_platform == 'darwin'" }, - { name = "typing-extensions", marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, + { name = "cffi", marker = "(platform_python_implementation != 'PyPy' and sys_platform == 'darwin') or (platform_python_implementation == 'PyPy' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (platform_python_implementation == 'PyPy' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "typing-extensions", marker = "(python_full_version < '3.11' and sys_platform == 'darwin') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, ] sdist = { url = "https://files.pythonhosted.org/packages/1f/99/d1c90d6041656cc6ee229dc99cd67fd0cd5aec3c5f7d72fffc27cc750054/cryptography-49.0.0.tar.gz", hash = "sha256:f89660a348f4f78a92366240a61404e337586ef7f5909a2fef59ca88ef505493", size = 854345, upload-time = "2026-06-12T20:02:30.512Z" } wheels = [ @@ -375,7 +382,7 @@ name = "deprecated" version = "1.3.1" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "wrapt", marker = "sys_platform == 'darwin'" }, + { name = "wrapt", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, ] sdist = { url = "https://files.pythonhosted.org/packages/49/85/12f0a49a7c4ffb70572b6c2ef13c90c88fd190debda93b23f026b25f9634/deprecated-1.3.1.tar.gz", hash = "sha256:b1b50e0ff0c1fddaa5708a2c6b0a6588bb09b892825ab2b214ac9ea9d92a5223", size = 2932523, upload-time = "2025-10-30T08:19:02.757Z" } wheels = [ @@ -448,10 +455,10 @@ wheels = [ [package.optional-dependencies] epath = [ - { name = "fsspec", marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, - { name = "importlib-resources", marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, - { name = "typing-extensions", marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, - { name = "zipp", marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, + { name = "fsspec", marker = "(python_full_version < '3.11' and sys_platform == 'darwin') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "importlib-resources", marker = "(python_full_version < '3.11' and sys_platform == 'darwin') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "typing-extensions", marker = "(python_full_version < '3.11' and sys_platform == 'darwin') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "zipp", marker = "(python_full_version < '3.11' and sys_platform == 'darwin') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, ] [[package]] @@ -469,9 +476,9 @@ wheels = [ [package.optional-dependencies] epath = [ - { name = "fsspec", marker = "python_full_version >= '3.11' and sys_platform == 'darwin'" }, - { name = "typing-extensions", marker = "python_full_version >= '3.11' and sys_platform == 'darwin'" }, - { name = "zipp", marker = "python_full_version >= '3.11' and sys_platform == 'darwin'" }, + { name = "fsspec", marker = "(python_full_version >= '3.11' and sys_platform == 'darwin') or (python_full_version < '3.11' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version < '3.11' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "typing-extensions", marker = "(python_full_version >= '3.11' and sys_platform == 'darwin') or (python_full_version < '3.11' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version < '3.11' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "zipp", marker = "(python_full_version >= '3.11' and sys_platform == 'darwin') or (python_full_version < '3.11' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version < '3.11' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, ] [[package]] @@ -479,7 +486,7 @@ name = "exceptiongroup" version = "1.3.1" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "typing-extensions", marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, + { name = "typing-extensions", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, ] sdist = { url = "https://files.pythonhosted.org/packages/50/79/66800aadf48771f6b62f7eb014e352e5d06856655206165d775e675a02c9/exceptiongroup-1.3.1.tar.gz", hash = "sha256:8b412432c6055b0b7d14c310000ae93352ed6754f70fa8f7c34141f91c4e3219", size = 30371, upload-time = "2025-11-21T23:01:54.787Z" } wheels = [ @@ -491,11 +498,11 @@ name = "fastapi" version = "0.138.0" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "annotated-doc", marker = "sys_platform == 'darwin'" }, - { name = "pydantic", marker = "sys_platform == 'darwin'" }, - { name = "starlette", marker = "sys_platform == 'darwin'" }, - { name = "typing-extensions", marker = "sys_platform == 'darwin'" }, - { name = "typing-inspection", marker = "sys_platform == 'darwin'" }, + { name = "annotated-doc", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "pydantic", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "starlette", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "typing-extensions", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "typing-inspection", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, ] sdist = { url = "https://files.pythonhosted.org/packages/5b/58/ff455d9fe47c60abadb34b9e05a304b1f05f5ab8000ac01565156b6f5e43/fastapi-0.138.0.tar.gz", hash = "sha256:d445a4877636ad191e7053e08c9bf98cb921a6756776848400bb773d1740c061", size = 419240, upload-time = "2026-06-20T01:18:05.259Z" } wheels = [ @@ -507,13 +514,13 @@ name = "fastrtc" version = "0.0.34" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "aioice", marker = "sys_platform == 'darwin'" }, - { name = "aiortc", marker = "sys_platform == 'darwin'" }, - { name = "gradio", marker = "sys_platform == 'darwin'" }, - { name = "librosa", marker = "sys_platform == 'darwin'" }, - { name = "numba", marker = "sys_platform == 'darwin'" }, - { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, - { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' and sys_platform == 'darwin'" }, + { name = "aioice", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "aiortc", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "gradio", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "librosa", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "numba", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.11' and sys_platform == 'darwin') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.11' and sys_platform == 'darwin') or (python_full_version < '3.11' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version < '3.11' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, ] wheels = [ { url = "https://files.pythonhosted.org/packages/af/e1/ea3968b064a183d9ac595dcbde0e6c67033afe01852d5854a0001f7c9faa/fastrtc-0.0.34-py3-none-any.whl", hash = "sha256:6da3831da9c2257810b6c5e5fd7cdd4f1636d716f47ab49d8bb3f2d5d9e499ac", size = 2806078, upload-time = "2025-11-24T17:14:12.68Z" }, @@ -592,7 +599,7 @@ name = "gitdb" version = "4.0.12" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "smmap", marker = "sys_platform == 'darwin'" }, + { name = "smmap", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, ] sdist = { url = "https://files.pythonhosted.org/packages/72/94/63b0fc47eb32792c7ba1fe1b694daec9a63620db1e313033d18140c2320a/gitdb-4.0.12.tar.gz", hash = "sha256:5ef71f855d191a3326fcfbc0d5da835f26b13fbcba60c32c21091c349ffdb571", size = 394684, upload-time = "2025-01-02T07:20:46.413Z" } wheels = [ @@ -604,7 +611,7 @@ name = "gitpython" version = "3.1.50" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "gitdb", marker = "sys_platform == 'darwin'" }, + { name = "gitdb", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, ] sdist = { url = "https://files.pythonhosted.org/packages/33/f6/354ae6491228b5eb40e10d89c4d13c651fe1cf7556e35ebdded50cff57ce/gitpython-3.1.50.tar.gz", hash = "sha256:80da2d12504d52e1f998772dc5baf6e553f8d2fcfe1fcc226c9d9a2ee3372dcc", size = 219798, upload-time = "2026-05-06T04:01:26.571Z" } wheels = [ @@ -644,35 +651,35 @@ name = "gradio" version = "5.50.1.dev1" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "aiofiles", marker = "sys_platform == 'darwin'" }, - { name = "anyio", marker = "sys_platform == 'darwin'" }, - { name = "brotli", marker = "sys_platform == 'darwin'" }, - { name = "fastapi", marker = "sys_platform == 'darwin'" }, - { name = "ffmpy", marker = "sys_platform == 'darwin'" }, - { name = "gradio-client", marker = "sys_platform == 'darwin'" }, - { name = "groovy", marker = "sys_platform == 'darwin'" }, - { name = "httpx", marker = "sys_platform == 'darwin'" }, - { name = "huggingface-hub", marker = "sys_platform == 'darwin'" }, - { name = "jinja2", marker = "sys_platform == 'darwin'" }, - { name = "markupsafe", marker = "sys_platform == 'darwin'" }, - { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, - { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' and sys_platform == 'darwin'" }, - { name = "orjson", marker = "sys_platform == 'darwin'" }, - { name = "packaging", marker = "sys_platform == 'darwin'" }, - { name = "pandas", marker = "sys_platform == 'darwin'" }, - { name = "pillow", marker = "sys_platform == 'darwin'" }, - { name = "pydantic", marker = "sys_platform == 'darwin'" }, - { name = "pydub", marker = "sys_platform == 'darwin'" }, - { name = "python-multipart", marker = "sys_platform == 'darwin'" }, - { name = "pyyaml", marker = "sys_platform == 'darwin'" }, - { name = "ruff", marker = "sys_platform == 'darwin'" }, - { name = "safehttpx", marker = "sys_platform == 'darwin'" }, - { name = "semantic-version", marker = "sys_platform == 'darwin'" }, - { name = "starlette", marker = "sys_platform == 'darwin'" }, - { name = "tomlkit", marker = "sys_platform == 'darwin'" }, - { name = "typer", marker = "sys_platform == 'darwin'" }, - { name = "typing-extensions", marker = "sys_platform == 'darwin'" }, - { name = "uvicorn", marker = "sys_platform == 'darwin'" }, + { name = "aiofiles", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "anyio", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "brotli", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "fastapi", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "ffmpy", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "gradio-client", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "groovy", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "httpx", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "huggingface-hub", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "jinja2", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "markupsafe", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.11' and sys_platform == 'darwin') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.11' and sys_platform == 'darwin') or (python_full_version < '3.11' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version < '3.11' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "orjson", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "packaging", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "pandas", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "pillow", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "pydantic", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "pydub", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "python-multipart", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "pyyaml", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "ruff", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "safehttpx", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "semantic-version", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "starlette", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "tomlkit", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "typer", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "typing-extensions", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "uvicorn", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, ] sdist = { url = "https://files.pythonhosted.org/packages/73/23/c6d28a7963e81e5b6cf658a745b448ae085111af62310f6ae68107d261c6/gradio-5.50.1.dev1.tar.gz", hash = "sha256:25255c2e86a2419b15e87d17263de30d87f967c0801d3a02a48008eb158334a3", size = 71671888, upload-time = "2025-12-03T15:20:12.836Z" } wheels = [ @@ -684,12 +691,12 @@ name = "gradio-client" version = "1.14.0" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "fsspec", marker = "sys_platform == 'darwin'" }, - { name = "httpx", marker = "sys_platform == 'darwin'" }, - { name = "huggingface-hub", marker = "sys_platform == 'darwin'" }, - { name = "packaging", marker = "sys_platform == 'darwin'" }, - { name = "typing-extensions", marker = "sys_platform == 'darwin'" }, - { name = "websockets", marker = "sys_platform == 'darwin'" }, + { name = "fsspec", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "httpx", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "huggingface-hub", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "packaging", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "typing-extensions", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "websockets", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, ] wheels = [ { url = "https://files.pythonhosted.org/packages/be/8a/f2a47134c5b5a7f3bad27eae749589a80d81efaaad8f59af47c136712bf6/gradio_client-1.14.0-py3-none-any.whl", hash = "sha256:9a2f5151978411e0f8b55a2d38cddd0a94491851149d14db4af96f5a09774825", size = 325555, upload-time = "2025-11-21T18:04:21.834Z" }, @@ -704,19 +711,49 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/28/27/3d6dcadc8a3214d8522c1e7f6a19554e33659be44546d44a2f7572ac7d2a/groovy-0.1.2-py3-none-any.whl", hash = "sha256:7f7975bab18c729a257a8b1ae9dcd70b7cafb1720481beae47719af57c35fa64", size = 14090, upload-time = "2025-02-28T20:24:55.152Z" }, ] +[[package]] +name = "grpcio" +version = "1.81.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions", marker = "sys_platform == 'darwin'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b0/b5/1ff353970a87eda4c98251e34d2dfd214abd4982dc89119c9252a2a482d2/grpcio-1.81.1.tar.gz", hash = "sha256:6fa10a767143a5e82e8eaab53918af0cd8909a57a27f8cb2288b80a613ac671b", size = 13026582, upload-time = "2026-06-11T12:46:51.673Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/80/41/9c95232b94b219ed8b14029d9cd000e0381cafba869c451dda60af84f4ba/grpcio-1.81.1-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:69ef28e54fc85397f91b8c19592b8ef3d81952080366914823bd8572a2958120", size = 12062291, upload-time = "2026-06-11T12:44:27.142Z" }, + { url = "https://files.pythonhosted.org/packages/2b/18/acf45fa8bd1bc5d7b0c2fd3dc4c209379fbd5bb396b440b68a83342226b7/grpcio-1.81.1-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:b137f4bf3ada9dc44d411478decc6ff09a79ed30b306cd2abaa98408c3588137", size = 12074277, upload-time = "2026-06-11T12:44:55.354Z" }, + { url = "https://files.pythonhosted.org/packages/75/95/539706ca0d3bd40dbad583dc56fd883da941f37556b629132da5762781b9/grpcio-1.81.1-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:12b7524c88d4026d3dcb7b0ebe16b6714f3b4af402ddd0f0639ab064a00c87c3", size = 12052560, upload-time = "2026-06-11T12:45:23.652Z" }, +] + +[[package]] +name = "grpcio-tools" +version = "1.81.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "grpcio", marker = "sys_platform == 'darwin'" }, + { name = "protobuf", version = "6.33.5", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, + { name = "setuptools", marker = "sys_platform == 'darwin'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/83/b3/1c5951352d6777fd7f99a0ccee04617fdfd8a5dbf2918a1f58c8b2b280b8/grpcio_tools-1.81.1.tar.gz", hash = "sha256:a22a3870180927fdd84e2b27d079ef5b7f5f8c6110181b6736afc17a463481f1", size = 6236155, upload-time = "2026-06-11T12:51:21.235Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a2/d7/1815110b2d40ec99dbb0a7e6d7eafd591cd1f1e9bf9d3858cd9cf3ffacbd/grpcio_tools-1.81.1-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:ac47a9ea1224df8b653072614e6f0207e9fbfe63fdabaa5918a60ca5fc931b88", size = 5817509, upload-time = "2026-06-11T12:49:25.958Z" }, + { url = "https://files.pythonhosted.org/packages/87/a8/d5aa99de9d8b2dd2a8192c1779796eda8b0d0f1dd915422e0a8a61b80391/grpcio_tools-1.81.1-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:53ef76cc3b0493ff734a5e8c39d5b519e1822236fcccdfe7677c5e1efd767761", size = 5818063, upload-time = "2026-06-11T12:49:45.975Z" }, + { url = "https://files.pythonhosted.org/packages/2f/35/e5f9f671378b1b89a896150d3e4fa2c6ec61a5e1e9e5107ce4c140ccc931/grpcio_tools-1.81.1-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:768f584c2423cbeb6cb6867817a39365b987ff16b8259a3adbc6546b9e303a4e", size = 5815665, upload-time = "2026-06-11T12:50:08.178Z" }, +] + [[package]] name = "gstreamer-bundle" version = "1.28.3" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "gstreamer-cli", marker = "sys_platform == 'darwin'" }, - { name = "gstreamer-gtk", marker = "sys_platform == 'darwin'" }, - { name = "gstreamer-libs", marker = "sys_platform == 'darwin'" }, - { name = "gstreamer-plugins", marker = "sys_platform == 'darwin'" }, - { name = "gstreamer-plugins-gpl", marker = "sys_platform == 'darwin'" }, - { name = "gstreamer-plugins-gpl-restricted", marker = "sys_platform == 'darwin'" }, - { name = "gstreamer-plugins-restricted", marker = "sys_platform == 'darwin'" }, - { name = "gstreamer-python", marker = "sys_platform == 'darwin'" }, + { name = "gstreamer-cli", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "gstreamer-gtk", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "gstreamer-libs", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "gstreamer-plugins", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "gstreamer-plugins-gpl", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "gstreamer-plugins-gpl-restricted", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "gstreamer-plugins-restricted", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "gstreamer-python", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, ] wheels = [ { url = "https://files.pythonhosted.org/packages/07/0f/0dedd5e30e6a7f553cddf850ee39dadbd729a40e9509976f85437a9aaf26/gstreamer_bundle-1.28.3-py3-none-any.whl", hash = "sha256:1270a2f84b4bdb72ecc76c20802d7fafc58a8af0c8540a8e25dbcff91e190b71", size = 2572, upload-time = "2026-05-16T00:03:25.433Z" }, @@ -727,7 +764,7 @@ name = "gstreamer-cli" version = "1.28.4" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "gstreamer-libs", marker = "sys_platform == 'darwin'" }, + { name = "gstreamer-libs", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, ] wheels = [ { url = "https://files.pythonhosted.org/packages/4c/2f/4479a3d4bf3493ed00467ddb2ed6d28a6c7116d5ae5671a3bca8420866ce/gstreamer_cli-1.28.4-cp39-abi3-macosx_10_13_universal2.whl", hash = "sha256:2db1cab8e7ab5b543fa7d8d75cd7fbc0783b3b8853313d2ad7e52051f43d81db", size = 15777538, upload-time = "2026-06-15T08:04:04.075Z" }, @@ -754,8 +791,8 @@ name = "gstreamer-libs" version = "1.28.4" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "gstreamer-ext-runtime", marker = "sys_platform == 'darwin'" }, - { name = "setuptools", marker = "sys_platform == 'darwin'" }, + { name = "gstreamer-ext-runtime", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "setuptools", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, ] wheels = [ { url = "https://files.pythonhosted.org/packages/d7/dc/dd954a6f6ccc5d081b03fc11c70f22e4cb6caba4255c114dc6c820514e83/gstreamer_libs-1.28.4-cp39-abi3-macosx_10_13_universal2.whl", hash = "sha256:050679ec56676f5c549aa834b233d81367942214d3d3149761f498eb48ef5642", size = 96281413, upload-time = "2026-06-15T08:10:48.293Z" }, @@ -766,7 +803,7 @@ name = "gstreamer-plugins" version = "1.28.4" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "gstreamer-plugins-libs", marker = "sys_platform == 'darwin'" }, + { name = "gstreamer-plugins-libs", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, ] wheels = [ { url = "https://files.pythonhosted.org/packages/28/88/f57f3a1cf57e794cda7af6fbe46993afed37af7fc858ae115dfc705243e4/gstreamer_plugins-1.28.4-cp39-abi3-macosx_10_13_universal2.whl", hash = "sha256:96401e0eca66e03e675b2c9ba6f29a29bcbb1e9ced11679abe8993e1e4301761", size = 101492264, upload-time = "2026-06-15T08:12:05.281Z" }, @@ -777,7 +814,7 @@ name = "gstreamer-plugins-gpl" version = "1.28.4" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "gstreamer-plugins-libs", marker = "sys_platform == 'darwin'" }, + { name = "gstreamer-plugins-libs", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, ] wheels = [ { url = "https://files.pythonhosted.org/packages/75/a5/b8ba6f06f49dd20e9dd52abb1a5f32eb59d0d239228c19e4598319e438f0/gstreamer_plugins_gpl-1.28.4-cp39-abi3-macosx_10_13_universal2.whl", hash = "sha256:16e6f442124007690ef467093b5aa22d27e3d89b101f11c76d57089002206ba5", size = 1049786, upload-time = "2026-06-15T08:12:12.451Z" }, @@ -788,7 +825,7 @@ name = "gstreamer-plugins-gpl-restricted" version = "1.28.4" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "gstreamer-plugins-libs", marker = "sys_platform == 'darwin'" }, + { name = "gstreamer-plugins-libs", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, ] wheels = [ { url = "https://files.pythonhosted.org/packages/aa/e6/814df679c32822109c26ae26a5673abbc33d639afe3ebc0a93b23ee0ec00/gstreamer_plugins_gpl_restricted-1.28.4-cp39-abi3-macosx_10_13_universal2.whl", hash = "sha256:e81ee50d88059d0b8fc42f8dbadbb136e1cc16c73254a5907981403183d01e91", size = 13453376, upload-time = "2026-06-15T08:12:22.956Z" }, @@ -799,7 +836,7 @@ name = "gstreamer-plugins-libs" version = "1.28.4" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "gstreamer-libs", marker = "sys_platform == 'darwin'" }, + { name = "gstreamer-libs", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, ] wheels = [ { url = "https://files.pythonhosted.org/packages/06/03/2f71e1c322eed79b8ddaf831351cf8f6215c433d9babc182a3b0f0a9e637/gstreamer_plugins_libs-1.28.4-cp39-abi3-macosx_10_13_universal2.whl", hash = "sha256:1bd17be5cf37b6ca8378a181e074928d94a4934fb7f874dcf271e858d29684e8", size = 83518063, upload-time = "2026-06-15T08:12:49.084Z" }, @@ -810,7 +847,7 @@ name = "gstreamer-plugins-restricted" version = "1.28.4" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "gstreamer-plugins-libs", marker = "sys_platform == 'darwin'" }, + { name = "gstreamer-plugins-libs", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, ] wheels = [ { url = "https://files.pythonhosted.org/packages/29/a2/1bed33c875782e1c041b160479136cac8a612bfd794b7989ea18af3ddd56/gstreamer_plugins_restricted-1.28.4-cp39-abi3-macosx_10_13_universal2.whl", hash = "sha256:751d12daf9652d4c45c5a8548dbec9b5c46ab48bdababf37a8bc9831a382ac3d", size = 6103261, upload-time = "2026-06-15T08:12:54.29Z" }, @@ -850,8 +887,8 @@ name = "httpcore" version = "1.0.9" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "certifi", marker = "sys_platform == 'darwin'" }, - { name = "h11", marker = "sys_platform == 'darwin'" }, + { name = "certifi", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "h11", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, ] sdist = { url = "https://files.pythonhosted.org/packages/06/94/82699a10bca87a5556c9c59b5963f2d039dbd239f25bc2a63907a05a14cb/httpcore-1.0.9.tar.gz", hash = "sha256:6e34463af53fd2ab5d807f399a9b45ea31c3dfa2276f15a2c3f00afff6e176e8", size = 85484, upload-time = "2025-04-24T22:06:22.219Z" } wheels = [ @@ -877,10 +914,10 @@ name = "httpx" version = "0.28.1" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "anyio", marker = "sys_platform == 'darwin'" }, - { name = "certifi", marker = "sys_platform == 'darwin'" }, - { name = "httpcore", marker = "sys_platform == 'darwin'" }, - { name = "idna", marker = "sys_platform == 'darwin'" }, + { name = "anyio", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "certifi", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "httpcore", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "idna", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, ] sdist = { url = "https://files.pythonhosted.org/packages/b1/df/48c586a5fe32a0f01324ee087459e112ebb7224f646c0b5023f5e79e9956/httpx-0.28.1.tar.gz", hash = "sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc", size = 141406, upload-time = "2024-12-06T15:37:23.222Z" } wheels = [ @@ -892,16 +929,16 @@ name = "huggingface-hub" version = "1.3.0" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "filelock", marker = "sys_platform == 'darwin'" }, - { name = "fsspec", marker = "sys_platform == 'darwin'" }, - { name = "hf-xet", marker = "(platform_machine == 'AMD64' and sys_platform == 'darwin') or (platform_machine == 'aarch64' and sys_platform == 'darwin') or (platform_machine == 'amd64' and sys_platform == 'darwin') or (platform_machine == 'arm64' and sys_platform == 'darwin') or (platform_machine == 'x86_64' and sys_platform == 'darwin')" }, - { name = "httpx", marker = "sys_platform == 'darwin'" }, - { name = "packaging", marker = "sys_platform == 'darwin'" }, - { name = "pyyaml", marker = "sys_platform == 'darwin'" }, - { name = "shellingham", marker = "sys_platform == 'darwin'" }, - { name = "tqdm", marker = "sys_platform == 'darwin'" }, - { name = "typer-slim", marker = "sys_platform == 'darwin'" }, - { name = "typing-extensions", marker = "sys_platform == 'darwin'" }, + { name = "filelock", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "fsspec", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "hf-xet", marker = "(platform_machine != 'AMD64' and platform_machine != 'aarch64' and platform_machine != 'amd64' and platform_machine != 'arm64' and platform_machine != 'x86_64' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (platform_machine != 'AMD64' and platform_machine != 'aarch64' and platform_machine != 'amd64' and platform_machine != 'arm64' and platform_machine != 'x86_64' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (platform_machine == 'AMD64' and sys_platform == 'darwin') or (platform_machine == 'aarch64' and sys_platform == 'darwin') or (platform_machine == 'amd64' and sys_platform == 'darwin') or (platform_machine == 'arm64' and sys_platform == 'darwin') or (platform_machine == 'x86_64' and sys_platform == 'darwin') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "httpx", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "packaging", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "pyyaml", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "shellingham", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "tqdm", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "typer-slim", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "typing-extensions", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, ] sdist = { url = "https://files.pythonhosted.org/packages/c1/c9/d42b5cfa0a50b77cf9165e13edfaf2e3bd4e0def9cb67b6b8a07224a52ab/huggingface_hub-1.3.0.tar.gz", hash = "sha256:289e2a3586fdf01e35882944eaa06fbd57436de24b6e653d1fab248584acd66b", size = 622092, upload-time = "2026-01-09T09:54:44.663Z" } wheels = [ @@ -985,8 +1022,8 @@ dependencies = [ { name = "ml-dtypes", marker = "python_full_version >= '3.11' and sys_platform == 'darwin'" }, { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' and sys_platform == 'darwin'" }, { name = "opt-einsum", marker = "python_full_version >= '3.11' and sys_platform == 'darwin'" }, - { name = "scipy", version = "1.17.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.11.*' and sys_platform == 'darwin'" }, - { name = "scipy", version = "1.18.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.12' and sys_platform == 'darwin'" }, + { name = "scipy", version = "1.17.1", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version == '3.11.*' and sys_platform == 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision') or (python_full_version == '3.11.*' and sys_platform == 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision') or (python_full_version == '3.11.*' and sys_platform == 'darwin' and extra != 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version != '3.11.*' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version != '3.11.*' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "scipy", version = "1.18.0", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.12' and sys_platform == 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision') or (python_full_version >= '3.12' and sys_platform == 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision') or (python_full_version >= '3.12' and sys_platform == 'darwin' and extra != 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version < '3.12' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version < '3.12' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, ] sdist = { url = "https://files.pythonhosted.org/packages/d2/73/eb91d98fcadfa2cbcfdd4e417ab116e47eb20882acc5ee678e47c35d6b57/jax-0.10.2.tar.gz", hash = "sha256:bf77428a8c2e6904c4f46d5ab12aa5cfc6cad2179f07f7e4c0fc75ac86ef0639", size = 2775110, upload-time = "2026-06-17T23:44:57.818Z" } wheels = [ @@ -1022,8 +1059,8 @@ resolution-markers = [ dependencies = [ { name = "ml-dtypes", marker = "python_full_version >= '3.11' and sys_platform == 'darwin'" }, { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' and sys_platform == 'darwin'" }, - { name = "scipy", version = "1.17.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.11.*' and sys_platform == 'darwin'" }, - { name = "scipy", version = "1.18.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.12' and sys_platform == 'darwin'" }, + { name = "scipy", version = "1.17.1", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version == '3.11.*' and sys_platform == 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision') or (python_full_version == '3.11.*' and sys_platform == 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision') or (python_full_version == '3.11.*' and sys_platform == 'darwin' and extra != 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version != '3.11.*' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version != '3.11.*' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "scipy", version = "1.18.0", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.12' and sys_platform == 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision') or (python_full_version >= '3.12' and sys_platform == 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision') or (python_full_version >= '3.12' and sys_platform == 'darwin' and extra != 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version < '3.12' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version < '3.12' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, ] wheels = [ { url = "https://files.pythonhosted.org/packages/b2/2c/7038fc73154307389631b5b2dbe5ac529e1918eecc19a27e6644ad114bbf/jaxlib-0.10.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5a98873fc867623b81f2bee15d554b8edd6588a183d01fa50d21b1e3db96ff2b", size = 61429039, upload-time = "2026-06-17T23:43:44.858Z" }, @@ -1035,7 +1072,7 @@ name = "jinja2" version = "3.1.6" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "markupsafe", marker = "sys_platform == 'darwin'" }, + { name = "markupsafe", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, ] 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 = [ @@ -1097,7 +1134,7 @@ name = "lazy-loader" version = "0.5" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "packaging", marker = "sys_platform == 'darwin'" }, + { name = "packaging", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, ] sdist = { url = "https://files.pythonhosted.org/packages/49/ac/21a1f8aa3777f5658576777ea76bfb124b702c520bbe90edf4ae9915eafa/lazy_loader-0.5.tar.gz", hash = "sha256:717f9179a0dbed357012ddad50a5ad3d5e4d9a0b8712680d4e687f5e6e6ed9b3", size = 15294, upload-time = "2026-03-06T15:45:09.054Z" } wheels = [ @@ -1109,23 +1146,23 @@ name = "librosa" version = "0.11.0" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "audioread", marker = "sys_platform == 'darwin'" }, - { name = "decorator", marker = "sys_platform == 'darwin'" }, - { name = "joblib", marker = "sys_platform == 'darwin'" }, - { name = "lazy-loader", marker = "sys_platform == 'darwin'" }, - { name = "msgpack", marker = "sys_platform == 'darwin'" }, - { name = "numba", marker = "sys_platform == 'darwin'" }, - { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, - { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' and sys_platform == 'darwin'" }, - { name = "pooch", marker = "sys_platform == 'darwin'" }, - { name = "scikit-learn", version = "1.7.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, - { name = "scikit-learn", version = "1.9.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' and sys_platform == 'darwin'" }, - { name = "scipy", version = "1.15.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, - { name = "scipy", version = "1.17.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.11.*' and sys_platform == 'darwin'" }, - { name = "scipy", version = "1.18.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.12' and sys_platform == 'darwin'" }, - { name = "soundfile", marker = "sys_platform == 'darwin'" }, - { name = "soxr", marker = "sys_platform == 'darwin'" }, - { name = "typing-extensions", marker = "sys_platform == 'darwin'" }, + { name = "audioread", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "decorator", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "joblib", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "lazy-loader", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "msgpack", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "numba", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.11' and sys_platform == 'darwin') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.11' and sys_platform == 'darwin') or (python_full_version < '3.11' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version < '3.11' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "pooch", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "scikit-learn", version = "1.7.2", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.11' and sys_platform == 'darwin') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "scikit-learn", version = "1.9.0", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.11' and sys_platform == 'darwin') or (python_full_version < '3.11' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version < '3.11' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "scipy", version = "1.15.3", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.11' and sys_platform == 'darwin') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "scipy", version = "1.17.1", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version == '3.11.*' and sys_platform == 'darwin') or (python_full_version != '3.11.*' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version != '3.11.*' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "scipy", version = "1.18.0", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.12' and sys_platform == 'darwin') or (python_full_version < '3.12' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version < '3.12' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "soundfile", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "soxr", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "typing-extensions", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, ] sdist = { url = "https://files.pythonhosted.org/packages/64/36/360b5aafa0238e29758729e9486c6ed92a6f37fa403b7875e06c115cdf4a/librosa-0.11.0.tar.gz", hash = "sha256:f5ed951ca189b375bbe2e33b2abd7e040ceeee302b9bbaeeffdfddb8d0ace908", size = 327001, upload-time = "2025-03-11T15:09:54.884Z" } wheels = [ @@ -1137,7 +1174,7 @@ name = "libusb-package" version = "1.0.26.4" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "importlib-resources", marker = "sys_platform == 'darwin'" }, + { name = "importlib-resources", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, ] wheels = [ { url = "https://files.pythonhosted.org/packages/01/34/fd042950325366cb8f01e1873cd87f8aa99e773586377a8e670d6127dc8e/libusb_package-1.0.26.4-py3-none-macosx_10_9_x86_64.whl", hash = "sha256:ce3711a82a2b4b9936a6268c9cbad794c34ae3b1b2c5cc9aeced8340db678668", size = 63859, upload-time = "2026-06-19T11:04:23.822Z" }, @@ -1169,7 +1206,7 @@ name = "markdown-it-py" version = "4.2.0" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "mdurl", marker = "sys_platform == 'darwin'" }, + { name = "mdurl", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, ] sdist = { url = "https://files.pythonhosted.org/packages/06/ff/7841249c247aa650a76b9ee4bbaeae59370dc8bfd2f6c01f3630c35eb134/markdown_it_py-4.2.0.tar.gz", hash = "sha256:04a21681d6fbb623de53f6f364d352309d4094dd4194040a10fd51833e418d49", size = 82454, upload-time = "2026-05-07T12:08:28.36Z" } wheels = [ @@ -1198,15 +1235,15 @@ resolution-markers = [ "python_full_version < '3.11' and sys_platform == 'darwin'", ] dependencies = [ - { name = "contourpy", version = "1.3.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, - { name = "cycler", marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, - { name = "fonttools", marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, - { name = "kiwisolver", marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, - { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, - { name = "packaging", marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, - { name = "pillow", marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, - { name = "pyparsing", marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, - { name = "python-dateutil", marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, + { name = "contourpy", version = "1.3.2", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.11' and sys_platform == 'darwin') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "cycler", marker = "(python_full_version < '3.11' and sys_platform == 'darwin') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "fonttools", marker = "(python_full_version < '3.11' and sys_platform == 'darwin') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "kiwisolver", marker = "(python_full_version < '3.11' and sys_platform == 'darwin') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.11' and sys_platform == 'darwin') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "packaging", marker = "(python_full_version < '3.11' and sys_platform == 'darwin') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "pillow", marker = "(python_full_version < '3.11' and sys_platform == 'darwin') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "pyparsing", marker = "(python_full_version < '3.11' and sys_platform == 'darwin') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "python-dateutil", marker = "(python_full_version < '3.11' and sys_platform == 'darwin') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, ] sdist = { url = "https://files.pythonhosted.org/packages/63/1b/4be5be87d43d327a0cf4de1a56e86f7f84c89312452406cf122efe2839e6/matplotlib-3.10.9.tar.gz", hash = "sha256:fd66508e8c6877d98e586654b608a0456db8d7e8a546eb1e2600efd957302358", size = 34811233, upload-time = "2026-04-24T00:14:13.539Z" } wheels = [ @@ -1231,15 +1268,15 @@ resolution-markers = [ "python_full_version == '3.11.*' and sys_platform == 'darwin'", ] dependencies = [ - { name = "contourpy", version = "1.3.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' and sys_platform == 'darwin'" }, - { name = "cycler", marker = "python_full_version >= '3.11' and sys_platform == 'darwin'" }, - { name = "fonttools", marker = "python_full_version >= '3.11' and sys_platform == 'darwin'" }, - { name = "kiwisolver", marker = "python_full_version >= '3.11' and sys_platform == 'darwin'" }, - { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' and sys_platform == 'darwin'" }, - { name = "packaging", marker = "python_full_version >= '3.11' and sys_platform == 'darwin'" }, - { name = "pillow", marker = "python_full_version >= '3.11' and sys_platform == 'darwin'" }, - { name = "pyparsing", marker = "python_full_version >= '3.11' and sys_platform == 'darwin'" }, - { name = "python-dateutil", marker = "python_full_version >= '3.11' and sys_platform == 'darwin'" }, + { name = "contourpy", version = "1.3.3", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.11' and sys_platform == 'darwin') or (python_full_version < '3.11' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version < '3.11' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "cycler", marker = "(python_full_version >= '3.11' and sys_platform == 'darwin') or (python_full_version < '3.11' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version < '3.11' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "fonttools", marker = "(python_full_version >= '3.11' and sys_platform == 'darwin') or (python_full_version < '3.11' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version < '3.11' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "kiwisolver", marker = "(python_full_version >= '3.11' and sys_platform == 'darwin') or (python_full_version < '3.11' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version < '3.11' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.11' and sys_platform == 'darwin') or (python_full_version < '3.11' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version < '3.11' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "packaging", marker = "(python_full_version >= '3.11' and sys_platform == 'darwin') or (python_full_version < '3.11' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version < '3.11' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "pillow", marker = "(python_full_version >= '3.11' and sys_platform == 'darwin') or (python_full_version < '3.11' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version < '3.11' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "pyparsing", marker = "(python_full_version >= '3.11' and sys_platform == 'darwin') or (python_full_version < '3.11' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version < '3.11' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "python-dateutil", marker = "(python_full_version >= '3.11' and sys_platform == 'darwin') or (python_full_version < '3.11' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version < '3.11' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, ] sdist = { url = "https://files.pythonhosted.org/packages/1f/24/080c99d223d158d3a8902769269ab6da5b50f7a0e6e072513907e02b7a6c/matplotlib-3.11.0.tar.gz", hash = "sha256:68c0c7be01b30dcca3638934f7f591df73401235cbdbf0d1ab1c71e7db7f8b57", size = 33251176, upload-time = "2026-06-12T02:29:15.508Z" } wheels = [ @@ -1268,16 +1305,16 @@ dependencies = [ { name = "absl-py", marker = "sys_platform == 'darwin'" }, { name = "attrs", marker = "sys_platform == 'darwin'" }, { name = "flatbuffers", marker = "sys_platform == 'darwin'" }, - { name = "jax", version = "0.6.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, - { name = "jax", version = "0.10.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' and sys_platform == 'darwin'" }, - { name = "jaxlib", version = "0.6.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, - { name = "jaxlib", version = "0.10.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' and sys_platform == 'darwin'" }, - { name = "matplotlib", version = "3.10.9", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, - { name = "matplotlib", version = "3.11.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' and sys_platform == 'darwin'" }, - { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, - { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' and sys_platform == 'darwin'" }, + { name = "jax", version = "0.6.2", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.11' and sys_platform == 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision') or (python_full_version < '3.11' and sys_platform == 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision') or (python_full_version < '3.11' and sys_platform == 'darwin' and extra != 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "jax", version = "0.10.2", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.11' and sys_platform == 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision') or (python_full_version >= '3.11' and sys_platform == 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision') or (python_full_version >= '3.11' and sys_platform == 'darwin' and extra != 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version < '3.11' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version < '3.11' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "jaxlib", version = "0.6.2", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.11' and sys_platform == 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision') or (python_full_version < '3.11' and sys_platform == 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision') or (python_full_version < '3.11' and sys_platform == 'darwin' and extra != 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "jaxlib", version = "0.10.2", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.11' and sys_platform == 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision') or (python_full_version >= '3.11' and sys_platform == 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision') or (python_full_version >= '3.11' and sys_platform == 'darwin' and extra != 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version < '3.11' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version < '3.11' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "matplotlib", version = "3.10.9", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.11' and sys_platform == 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision') or (python_full_version < '3.11' and sys_platform == 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision') or (python_full_version < '3.11' and sys_platform == 'darwin' and extra != 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "matplotlib", version = "3.11.0", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.11' and sys_platform == 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision') or (python_full_version >= '3.11' and sys_platform == 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision') or (python_full_version >= '3.11' and sys_platform == 'darwin' and extra != 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version < '3.11' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version < '3.11' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.11' and sys_platform == 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision') or (python_full_version < '3.11' and sys_platform == 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision') or (python_full_version < '3.11' and sys_platform == 'darwin' and extra != 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.11' and sys_platform == 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision') or (python_full_version >= '3.11' and sys_platform == 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision') or (python_full_version >= '3.11' and sys_platform == 'darwin' and extra != 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version < '3.11' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version < '3.11' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, { name = "opencv-contrib-python", marker = "sys_platform == 'darwin'" }, - { name = "protobuf", marker = "sys_platform == 'darwin'" }, + { name = "protobuf", version = "4.25.9", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, { name = "sounddevice", marker = "sys_platform == 'darwin'" }, ] wheels = [ @@ -1294,8 +1331,8 @@ name = "ml-dtypes" version = "0.5.4" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, - { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' and sys_platform == 'darwin'" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.11' and sys_platform == 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision') or (python_full_version < '3.11' and sys_platform == 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision') or (python_full_version < '3.11' and sys_platform == 'darwin' and extra != 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.11' and sys_platform == 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision') or (python_full_version >= '3.11' and sys_platform == 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision') or (python_full_version >= '3.11' and sys_platform == 'darwin' and extra != 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version < '3.11' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version < '3.11' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, ] sdist = { url = "https://files.pythonhosted.org/packages/0e/4a/c27b42ed9b1c7d13d9ba8b6905dece787d6259152f2309338aed29b2447b/ml_dtypes-0.5.4.tar.gz", hash = "sha256:8ab06a50fb9bf9666dd0fe5dfb4676fa2b0ac0f31ecff72a6c3af8e22c063453", size = 692314, upload-time = "2025-11-17T22:32:31.031Z" } wheels = [ @@ -1332,13 +1369,13 @@ name = "mujoco" version = "3.3.0" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "absl-py", marker = "sys_platform == 'darwin'" }, - { name = "etils", version = "1.13.0", source = { registry = "https://pypi.org/simple" }, extra = ["epath"], marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, - { name = "etils", version = "1.14.0", source = { registry = "https://pypi.org/simple" }, extra = ["epath"], marker = "python_full_version >= '3.11' and sys_platform == 'darwin'" }, - { name = "glfw", marker = "sys_platform == 'darwin'" }, - { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, - { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' and sys_platform == 'darwin'" }, - { name = "pyopengl", marker = "sys_platform == 'darwin'" }, + { name = "absl-py", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "etils", version = "1.13.0", source = { registry = "https://pypi.org/simple" }, extra = ["epath"], marker = "(python_full_version < '3.11' and sys_platform == 'darwin') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "etils", version = "1.14.0", source = { registry = "https://pypi.org/simple" }, extra = ["epath"], marker = "(python_full_version >= '3.11' and sys_platform == 'darwin') or (python_full_version < '3.11' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version < '3.11' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "glfw", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.11' and sys_platform == 'darwin') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.11' and sys_platform == 'darwin') or (python_full_version < '3.11' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version < '3.11' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "pyopengl", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, ] sdist = { url = "https://files.pythonhosted.org/packages/8a/c6/76716fd205ccd0afbaef8b355555ace70347bd02c921d14e05e68eab3dbb/mujoco-3.3.0.tar.gz", hash = "sha256:0fb12ab715bc2b6d2394a6330b8c3a1dd95b0f3ba812bfe4f6c91e0a1ca3ad0f", size = 801447, upload-time = "2025-02-27T19:16:18.748Z" } wheels = [ @@ -1355,7 +1392,7 @@ name = "multidict" version = "6.7.1" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "typing-extensions", marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, + { name = "typing-extensions", marker = "(python_full_version < '3.11' and sys_platform == 'darwin') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, ] sdist = { url = "https://files.pythonhosted.org/packages/1a/c2/c2d94cbe6ac1753f3fc980da97b3d930efe1da3af3c9f5125354436c073d/multidict-6.7.1.tar.gz", hash = "sha256:ec6652a1bee61c53a3e5776b6049172c53b6aaba34f18c9ad04f82712bac623d", size = 102010, upload-time = "2026-01-26T02:46:45.979Z" } wheels = [ @@ -1419,7 +1456,7 @@ name = "num2words" version = "0.5.14" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "docopt", marker = "sys_platform == 'darwin'" }, + { name = "docopt", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, ] sdist = { url = "https://files.pythonhosted.org/packages/f6/58/ad645bd38b4b648eb2fc2ba1b909398e54eb0cbb6a7dbd2b4953e38c9621/num2words-0.5.14.tar.gz", hash = "sha256:b066ec18e56b6616a3b38086b5747daafbaa8868b226a36127e0451c0cf379c6", size = 218213, upload-time = "2024-12-17T20:17:10.191Z" } wheels = [ @@ -1431,9 +1468,9 @@ name = "numba" version = "0.65.1" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "llvmlite", marker = "sys_platform == 'darwin'" }, - { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, - { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' and sys_platform == 'darwin'" }, + { name = "llvmlite", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.11' and sys_platform == 'darwin') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.11' and sys_platform == 'darwin') or (python_full_version < '3.11' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version < '3.11' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, ] sdist = { url = "https://files.pythonhosted.org/packages/f6/c5/db2ac3685833d626c0dcae6bd2330cd68433e1fd248d15f70998160d3ad7/numba-0.65.1.tar.gz", hash = "sha256:19357146c32fe9ed25059ab915e8465fb13951cf6b0aace3826b76886373ab23", size = 2765600, upload-time = "2026-04-24T02:02:56.551Z" } wheels = [ @@ -1500,19 +1537,33 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/23/45/caa600acfab94560807a20a64b5830d2cd3c3202b7f1328644d70b7d6bd8/nvidia_ml_py-13.610.43-py3-none-any.whl", hash = "sha256:f13c72698edef492f985cc225f14faafe68ae065a2e407f45bdf6f4b9b43fde8", size = 53163, upload-time = "2026-06-01T18:54:07.704Z" }, ] +[[package]] +name = "nvidia-riva-client" +version = "2.26.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "grpcio", marker = "sys_platform == 'darwin'" }, + { name = "grpcio-tools", marker = "sys_platform == 'darwin'" }, + { name = "protobuf", version = "6.33.5", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, + { name = "websockets", marker = "sys_platform == 'darwin'" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/21/53/0988b79ee818cb2b8792abeda5a75156946b64da7a2ef2719b9d2068a34f/nvidia_riva_client-2.26.0-py3-none-any.whl", hash = "sha256:16ffc98266fa7be7261e0675de6b7028e7f973c2ac3dfd679668148ff497cc0c", size = 57539, upload-time = "2026-05-28T06:11:43.205Z" }, +] + [[package]] name = "openai" version = "2.44.0" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "anyio", marker = "sys_platform == 'darwin'" }, - { name = "distro", marker = "sys_platform == 'darwin'" }, - { name = "httpx", marker = "sys_platform == 'darwin'" }, - { name = "jiter", marker = "sys_platform == 'darwin'" }, - { name = "pydantic", marker = "sys_platform == 'darwin'" }, - { name = "sniffio", marker = "sys_platform == 'darwin'" }, - { name = "tqdm", marker = "sys_platform == 'darwin'" }, - { name = "typing-extensions", marker = "sys_platform == 'darwin'" }, + { name = "anyio", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "distro", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "httpx", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "jiter", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "pydantic", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "sniffio", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "tqdm", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "typing-extensions", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, ] sdist = { url = "https://files.pythonhosted.org/packages/49/f5/7c7cb955305cb41f7f3c5fd7e0e38bf6bbf2658468863d4b7b868a5cb8df/openai-2.44.0.tar.gz", hash = "sha256:68a5a5ffad82b8ff7d451c437529fb64f7c3b8123aaf0c021966a882d9e3947d", size = 988753, upload-time = "2026-06-24T20:56:02.293Z" } wheels = [ @@ -1524,8 +1575,8 @@ name = "opencv-contrib-python" version = "4.13.0.92" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, - { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' and sys_platform == 'darwin'" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.11' and sys_platform == 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision') or (python_full_version < '3.11' and sys_platform == 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision') or (python_full_version < '3.11' and sys_platform == 'darwin' and extra != 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.11' and sys_platform == 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision') or (python_full_version >= '3.11' and sys_platform == 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision') or (python_full_version >= '3.11' and sys_platform == 'darwin' and extra != 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version < '3.11' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version < '3.11' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, ] wheels = [ { url = "https://files.pythonhosted.org/packages/7e/4c/a45c96b9fe90b2c48ee604f5176eb7deb46ce7c2e87c8d819d2945dbcab6/opencv_contrib_python-4.13.0.92-cp37-abi3-macosx_13_0_arm64.whl", hash = "sha256:53c8ab81376210dda5836307eb6bda7266f39a3820a9a070c7131510ba815fe1", size = 52041546, upload-time = "2026-02-05T07:01:29.918Z" }, @@ -1537,8 +1588,8 @@ name = "opencv-python" version = "4.13.0.92" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, - { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' and sys_platform == 'darwin'" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.11' and sys_platform == 'darwin') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.11' and sys_platform == 'darwin') or (python_full_version < '3.11' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version < '3.11' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, ] wheels = [ { url = "https://files.pythonhosted.org/packages/fc/6f/5a28fef4c4a382be06afe3938c64cc168223016fa520c5abaf37e8862aa5/opencv_python-4.13.0.92-cp37-abi3-macosx_13_0_arm64.whl", hash = "sha256:caf60c071ec391ba51ed00a4a920f996d0b64e3e46068aac1f646b5de0326a19", size = 46247052, upload-time = "2026-02-05T07:01:25.046Z" }, @@ -1581,11 +1632,11 @@ name = "pandas" version = "2.3.3" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, - { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' and sys_platform == 'darwin'" }, - { name = "python-dateutil", marker = "sys_platform == 'darwin'" }, - { name = "pytz", marker = "sys_platform == 'darwin'" }, - { name = "tzdata", marker = "sys_platform == 'darwin'" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.11' and sys_platform == 'darwin') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.11' and sys_platform == 'darwin') or (python_full_version < '3.11' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version < '3.11' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "python-dateutil", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "pytz", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "tzdata", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, ] sdist = { url = "https://files.pythonhosted.org/packages/33/01/d40b85317f86cf08d853a4f495195c73815fdf205eef3993821720274518/pandas-2.3.3.tar.gz", hash = "sha256:e05e1af93b977f7eafa636d043f9f94c7ee3ac81af99c13508215942e64c993b", size = 4495223, upload-time = "2025-09-29T23:34:51.853Z" } wheels = [ @@ -1647,7 +1698,7 @@ name = "polars" version = "1.42.0" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "polars-runtime-32", marker = "sys_platform == 'darwin'" }, + { name = "polars-runtime-32", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, ] sdist = { url = "https://files.pythonhosted.org/packages/cb/91/a1d7809a6d399f0aa78d4d3a4f4daf411cb97ccfe7f236c08a01be5fc8a5/polars-1.42.0.tar.gz", hash = "sha256:283ddc923e47857924fbef36580d2e98d984a47c962bae4cbce9c0ebcc98989c", size = 740984, upload-time = "2026-06-24T05:20:13.727Z" } wheels = [ @@ -1669,9 +1720,9 @@ name = "pooch" version = "1.9.0" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "packaging", marker = "sys_platform == 'darwin'" }, - { name = "platformdirs", marker = "sys_platform == 'darwin'" }, - { name = "requests", marker = "sys_platform == 'darwin'" }, + { name = "packaging", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "platformdirs", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "requests", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, ] sdist = { url = "https://files.pythonhosted.org/packages/83/43/85ef45e8b36c6a48546af7b266592dc32d7f67837a6514d111bced6d7d75/pooch-1.9.0.tar.gz", hash = "sha256:de46729579b9857ffd3e741987a2f6d5e0e03219892c167c6578c0091fb511ed", size = 61788, upload-time = "2026-01-30T19:15:09.649Z" } wheels = [ @@ -1683,11 +1734,11 @@ name = "pre-commit" version = "4.6.0" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "cfgv", marker = "sys_platform == 'darwin'" }, - { name = "identify", marker = "sys_platform == 'darwin'" }, - { name = "nodeenv", marker = "sys_platform == 'darwin'" }, - { name = "pyyaml", marker = "sys_platform == 'darwin'" }, - { name = "virtualenv", marker = "sys_platform == 'darwin'" }, + { name = "cfgv", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "identify", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "nodeenv", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "pyyaml", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "virtualenv", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, ] sdist = { url = "https://files.pythonhosted.org/packages/8e/22/2de9408ac81acbb8a7d05d4cc064a152ccf33b3d480ebe0cd292153db239/pre_commit-4.6.0.tar.gz", hash = "sha256:718d2208cef53fdc38206e40524a6d4d9576d103eb16f0fec11c875e7716e9d9", size = 198525, upload-time = "2026-04-21T20:31:41.613Z" } wheels = [ @@ -1699,7 +1750,7 @@ name = "prompt-toolkit" version = "3.0.52" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "wcwidth", marker = "sys_platform == 'darwin'" }, + { name = "wcwidth", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, ] sdist = { url = "https://files.pythonhosted.org/packages/a1/96/06e01a7b38dce6fe1db213e061a4602dd6032a8a97ef6c1a862537732421/prompt_toolkit-3.0.52.tar.gz", hash = "sha256:28cde192929c8e7321de85de1ddbe736f1375148b02f2e17edd840042b1be855", size = 434198, upload-time = "2025-08-27T15:24:02.057Z" } wheels = [ @@ -1728,12 +1779,32 @@ wheels = [ name = "protobuf" version = "4.25.9" source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.12' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and sys_platform == 'darwin'", + "python_full_version < '3.11' and sys_platform == 'darwin'", +] sdist = { url = "https://files.pythonhosted.org/packages/d9/8e/d08c41a8c004e1d437ef467e7c4f9c3295cd784eba48ed5d1d01f94b1dad/protobuf-4.25.9.tar.gz", hash = "sha256:b0dc7e7c68de8b1ce831dacb12fb407e838edbb8b6cc0dc3a2a6b4cbf6de9cff", size = 381040, upload-time = "2026-03-25T23:09:36.423Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/56/5b/0074a0a9eb01f3d1c4648ca5e81b22090c811b210b61df9018ac6d6c5cda/protobuf-4.25.9-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:9560813560e6ee72c11ca8873878bdb7ee003c96a57ebb013245fe84e2540904", size = 394826, upload-time = "2026-03-25T23:09:25.194Z" }, { url = "https://files.pythonhosted.org/packages/16/28/d5065b212685875d3924bcdb3201cbf467cb4d58a18aa19a8dfd99ea80a9/protobuf-4.25.9-py3-none-any.whl", hash = "sha256:d49b615e7c935194ac161f0965699ac84df6112c378e05ec53da65d2e4cbb6d4", size = 156822, upload-time = "2026-03-25T23:09:34.957Z" }, ] +[[package]] +name = "protobuf" +version = "6.33.5" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.12' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and sys_platform == 'darwin'", + "python_full_version < '3.11' and sys_platform == 'darwin'", +] +sdist = { url = "https://files.pythonhosted.org/packages/ba/25/7c72c307aafc96fa87062aa6291d9f7c94836e43214d43722e86037aac02/protobuf-6.33.5.tar.gz", hash = "sha256:6ddcac2a081f8b7b9642c09406bc6a4290128fce5f471cddd165960bb9119e5c", size = 444465, upload-time = "2026-01-29T21:51:33.494Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a2/6b/e48dfc1191bc5b52950246275bf4089773e91cb5ba3592621723cdddca62/protobuf-6.33.5-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:a5cb85982d95d906df1e2210e58f8e4f1e3cdc088e52c921a041f9c9a0386de5", size = 427766, upload-time = "2026-01-29T21:51:25.413Z" }, + { url = "https://files.pythonhosted.org/packages/57/bf/2086963c69bdac3d7cff1cc7ff79b8ce5ea0bec6797a017e1be338a46248/protobuf-6.33.5-py3-none-any.whl", hash = "sha256:69915a973dd0f60f31a08b8318b73eab2bd6a392c79184b3612226b0a3f8ec02", size = 170687, upload-time = "2026-01-29T21:51:32.557Z" }, +] + [[package]] name = "psutil" version = "7.2.2" @@ -1758,10 +1829,10 @@ name = "pydantic" version = "2.12.3" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "annotated-types", marker = "sys_platform == 'darwin'" }, - { name = "pydantic-core", marker = "sys_platform == 'darwin'" }, - { name = "typing-extensions", marker = "sys_platform == 'darwin'" }, - { name = "typing-inspection", marker = "sys_platform == 'darwin'" }, + { name = "annotated-types", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "pydantic-core", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "typing-extensions", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "typing-inspection", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, ] sdist = { url = "https://files.pythonhosted.org/packages/f3/1e/4f0a3233767010308f2fd6bd0814597e3f63f1dc98304a9112b8759df4ff/pydantic-2.12.3.tar.gz", hash = "sha256:1da1c82b0fc140bb0103bc1441ffe062154c8d38491189751ee00fd8ca65ce74", size = 819383, upload-time = "2025-10-17T15:04:21.222Z" } wheels = [ @@ -1773,7 +1844,7 @@ name = "pydantic-core" version = "2.41.4" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "typing-extensions", marker = "sys_platform == 'darwin'" }, + { name = "typing-extensions", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, ] sdist = { url = "https://files.pythonhosted.org/packages/df/18/d0944e8eaaa3efd0a91b0f1fc537d3be55ad35091b6a87638211ba691964/pydantic_core-2.41.4.tar.gz", hash = "sha256:70e47929a9d4a1905a67e4b687d5946026390568a8e952b92824118063cee4d5", size = 457557, upload-time = "2025-10-14T10:23:47.909Z" } wheels = [ @@ -1816,7 +1887,7 @@ name = "pyee" version = "13.0.1" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "typing-extensions", marker = "sys_platform == 'darwin'" }, + { name = "typing-extensions", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, ] sdist = { url = "https://files.pythonhosted.org/packages/8b/04/e7c1fe4dc78a6fdbfd6c337b1c3732ff543b8a397683ab38378447baa331/pyee-13.0.1.tar.gz", hash = "sha256:0b931f7c14535667ed4c7e0d531716368715e860b988770fc7eb8578d1f67fc8", size = 31655, upload-time = "2026-02-14T21:12:28.044Z" } wheels = [ @@ -1837,7 +1908,7 @@ name = "pylibsrtp" version = "1.0.0" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "cffi", marker = "sys_platform == 'darwin'" }, + { name = "cffi", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, ] sdist = { url = "https://files.pythonhosted.org/packages/0d/a6/6e532bec974aaecbf9fe4e12538489fb1c28456e65088a50f305aeab9f89/pylibsrtp-1.0.0.tar.gz", hash = "sha256:b39dff075b263a8ded5377f2490c60d2af452c9f06c4d061c7a2b640612b34d4", size = 10858, upload-time = "2025-10-13T16:12:31.552Z" } wheels = [ @@ -1859,8 +1930,8 @@ name = "pyopenssl" version = "26.3.0" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "cryptography", marker = "sys_platform == 'darwin'" }, - { name = "typing-extensions", marker = "sys_platform == 'darwin'" }, + { name = "cryptography", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "typing-extensions", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, ] sdist = { url = "https://files.pythonhosted.org/packages/74/b7/da07bae88f5a9506b4def6f2f4903cf4c3b8831e560dba8fa18ca08f758f/pyopenssl-26.3.0.tar.gz", hash = "sha256:589de7fae1c9ea670d18422ed00fc04da787bbde8e1454aea872aa57b49ad341", size = 182024, upload-time = "2026-06-12T20:28:07.458Z" } wheels = [ @@ -1890,12 +1961,12 @@ name = "pytest" version = "9.1.1" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "exceptiongroup", marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, - { name = "iniconfig", marker = "sys_platform == 'darwin'" }, - { name = "packaging", marker = "sys_platform == 'darwin'" }, - { name = "pluggy", marker = "sys_platform == 'darwin'" }, - { name = "pygments", marker = "sys_platform == 'darwin'" }, - { name = "tomli", marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, + { name = "exceptiongroup", marker = "(python_full_version < '3.11' and sys_platform == 'darwin') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "iniconfig", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "packaging", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "pluggy", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "pygments", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "tomli", marker = "(python_full_version < '3.11' and sys_platform == 'darwin') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, ] sdist = { url = "https://files.pythonhosted.org/packages/e4/47/b9efed96c114afcfa3c9d3fe98a76a1d14c74a9e266d397cf6eb64be5e01/pytest-9.1.1.tar.gz", hash = "sha256:1088fbde8f2b49d95a549a195707afa7a76a3ce9bcadc26b6d71f0ffda5fe313", size = 1636369, upload-time = "2026-06-19T10:58:32.857Z" } wheels = [ @@ -1907,9 +1978,9 @@ name = "pytest-asyncio" version = "1.4.0" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "backports-asyncio-runner", marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, - { name = "pytest", marker = "sys_platform == 'darwin'" }, - { name = "typing-extensions", marker = "sys_platform == 'darwin'" }, + { name = "backports-asyncio-runner", marker = "(python_full_version < '3.11' and sys_platform == 'darwin') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "pytest", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "typing-extensions", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, ] sdist = { url = "https://files.pythonhosted.org/packages/43/7c/d36d04db312ecf4298932ef77e6e4a9e8ad017906e24e34f0b0c361a2473/pytest_asyncio-1.4.0.tar.gz", hash = "sha256:c6c0d2259945122819f171a32ecea2c349ead889ee28176caaf492143424be42", size = 58514, upload-time = "2026-05-26T09:56:04.083Z" } wheels = [ @@ -1921,7 +1992,7 @@ name = "python-dateutil" version = "2.9.0.post0" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "six", marker = "sys_platform == 'darwin'" }, + { name = "six", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, ] sdist = { url = "https://files.pythonhosted.org/packages/66/c0/0c8b6ad9f17a802ee498c46e004a0eb49bc148f2fd230864601a86dcf6db/python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3", size = 342432, upload-time = "2024-03-01T18:36:20.211Z" } wheels = [ @@ -1933,8 +2004,8 @@ name = "python-discovery" version = "1.4.2" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "filelock", marker = "sys_platform == 'darwin'" }, - { name = "platformdirs", marker = "sys_platform == 'darwin'" }, + { name = "filelock", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "platformdirs", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, ] sdist = { url = "https://files.pythonhosted.org/packages/0b/1a/cbbaf13b730abb0a16b964d984e19f2fe520c21a4dc664051359a3f5a9e7/python_discovery-1.4.2.tar.gz", hash = "sha256:8f3746c4b4968d22afbb97d36e1a0e5b66e6c0f297290f2e95f05b9b8bf18690", size = 70277, upload-time = "2026-06-11T16:10:42.383Z" } wheels = [ @@ -1955,8 +2026,8 @@ name = "python-gitlab" version = "6.5.0" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "requests", marker = "sys_platform == 'darwin'" }, - { name = "requests-toolbelt", marker = "sys_platform == 'darwin'" }, + { name = "requests", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "requests-toolbelt", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, ] sdist = { url = "https://files.pythonhosted.org/packages/9a/bd/b30f1d3b303cb5d3c72e2d57a847d699e8573cbdfd67ece5f1795e49da1c/python_gitlab-6.5.0.tar.gz", hash = "sha256:97553652d94b02de343e9ca92782239aa2b5f6594c5482331a9490d9d5e8737d", size = 400591, upload-time = "2025-10-17T21:40:02.89Z" } wheels = [ @@ -1977,19 +2048,19 @@ name = "python-semantic-release" version = "10.5.3" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "click", marker = "sys_platform == 'darwin'" }, - { name = "click-option-group", marker = "sys_platform == 'darwin'" }, - { name = "deprecated", marker = "sys_platform == 'darwin'" }, - { name = "dotty-dict", marker = "sys_platform == 'darwin'" }, - { name = "gitpython", marker = "sys_platform == 'darwin'" }, - { name = "importlib-resources", marker = "sys_platform == 'darwin'" }, - { name = "jinja2", marker = "sys_platform == 'darwin'" }, - { name = "pydantic", marker = "sys_platform == 'darwin'" }, - { name = "python-gitlab", marker = "sys_platform == 'darwin'" }, - { name = "requests", marker = "sys_platform == 'darwin'" }, - { name = "rich", marker = "sys_platform == 'darwin'" }, - { name = "shellingham", marker = "sys_platform == 'darwin'" }, - { name = "tomlkit", marker = "sys_platform == 'darwin'" }, + { name = "click", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "click-option-group", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "deprecated", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "dotty-dict", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "gitpython", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "importlib-resources", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "jinja2", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "pydantic", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "python-gitlab", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "requests", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "rich", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "shellingham", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "tomlkit", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, ] sdist = { url = "https://files.pythonhosted.org/packages/19/3a/7332b822825ed0e902c6e950e0d1e90e8f666fd12eb27855d1c8b6677eff/python_semantic_release-10.5.3.tar.gz", hash = "sha256:de4da78635fa666e5774caaca2be32063cae72431eb75e2ac23b9f2dfd190785", size = 618034, upload-time = "2025-12-14T22:37:29.782Z" } wheels = [ @@ -2033,7 +2104,7 @@ name = "questionary" version = "2.1.1" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "prompt-toolkit", marker = "sys_platform == 'darwin'" }, + { name = "prompt-toolkit", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, ] sdist = { url = "https://files.pythonhosted.org/packages/f6/45/eafb0bba0f9988f6a2520f9ca2df2c82ddfa8d67c95d6625452e97b204a5/questionary-2.1.1.tar.gz", hash = "sha256:3d7e980292bb0107abaa79c68dd3eee3c561b83a0f89ae482860b181c8bd412d", size = 25845, upload-time = "2025-08-28T19:00:20.851Z" } wheels = [ @@ -2045,37 +2116,37 @@ name = "reachy-mini" version = "1.8.0" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "aiohttp", marker = "sys_platform == 'darwin'" }, - { name = "asgiref", marker = "sys_platform == 'darwin'" }, - { name = "fastapi", marker = "sys_platform == 'darwin'" }, - { name = "gstreamer-bundle", marker = "sys_platform == 'darwin'" }, - { name = "huggingface-hub", marker = "sys_platform == 'darwin'" }, - { name = "jinja2", marker = "sys_platform == 'darwin'" }, - { name = "libusb-package", marker = "sys_platform == 'darwin'" }, - { name = "log-throttling", marker = "sys_platform == 'darwin'" }, - { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, - { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' and sys_platform == 'darwin'" }, - { name = "pip", marker = "sys_platform == 'darwin'" }, - { name = "psutil", marker = "sys_platform == 'darwin'" }, - { name = "pyserial", marker = "sys_platform == 'darwin'" }, - { name = "python-multipart", marker = "sys_platform == 'darwin'" }, - { name = "pyusb", marker = "sys_platform == 'darwin'" }, - { name = "pyyaml", marker = "sys_platform == 'darwin'" }, - { name = "questionary", marker = "sys_platform == 'darwin'" }, - { name = "reachy-mini-motor-controller", marker = "sys_platform == 'darwin'" }, - { name = "reachy-mini-rust-kinematics", marker = "sys_platform == 'darwin'" }, - { name = "requests", marker = "sys_platform == 'darwin'" }, - { name = "rich", marker = "sys_platform == 'darwin'" }, - { name = "rustypot", marker = "sys_platform == 'darwin'" }, - { name = "scipy", version = "1.15.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, - { name = "scipy", version = "1.17.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.11.*' and sys_platform == 'darwin'" }, - { name = "scipy", version = "1.18.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.12' and sys_platform == 'darwin'" }, - { name = "starlette", marker = "sys_platform == 'darwin'" }, - { name = "toml", marker = "sys_platform == 'darwin'" }, - { name = "tornado", marker = "sys_platform == 'darwin'" }, - { name = "uvicorn", extra = ["standard"], marker = "sys_platform == 'darwin'" }, - { name = "websockets", marker = "sys_platform == 'darwin'" }, - { name = "zeroconf", marker = "sys_platform == 'darwin'" }, + { name = "aiohttp", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "asgiref", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "fastapi", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "gstreamer-bundle", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "huggingface-hub", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "jinja2", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "libusb-package", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "log-throttling", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.11' and sys_platform == 'darwin') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.11' and sys_platform == 'darwin') or (python_full_version < '3.11' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version < '3.11' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "pip", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "psutil", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "pyserial", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "python-multipart", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "pyusb", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "pyyaml", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "questionary", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "reachy-mini-motor-controller", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "reachy-mini-rust-kinematics", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "requests", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "rich", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "rustypot", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "scipy", version = "1.15.3", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.11' and sys_platform == 'darwin') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "scipy", version = "1.17.1", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version == '3.11.*' and sys_platform == 'darwin') or (python_full_version != '3.11.*' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version != '3.11.*' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "scipy", version = "1.18.0", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.12' and sys_platform == 'darwin') or (python_full_version < '3.12' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version < '3.12' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "starlette", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "toml", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "tornado", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "uvicorn", extra = ["standard"], marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "websockets", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "zeroconf", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, ] sdist = { url = "https://files.pythonhosted.org/packages/f9/20/a82cc900cef998cd8e9eff8bf6bf5a642e841b7daee12d74e184842a0d7d/reachy_mini-1.8.0.tar.gz", hash = "sha256:9c587f2386f1e11fe2f1fbfbcbffd191ee8dcf5cb1cd5fcd7621c2ab416a0dce", size = 24763681, upload-time = "2026-06-01T08:54:13.244Z" } wheels = [ @@ -2084,7 +2155,7 @@ wheels = [ [package.optional-dependencies] mujoco = [ - { name = "mujoco", marker = "sys_platform == 'darwin'" }, + { name = "mujoco", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, ] [[package]] @@ -2092,18 +2163,18 @@ name = "reachy-mini-conversation-app" version = "0.3.0" source = { editable = "." } dependencies = [ - { name = "aiortc", marker = "sys_platform == 'darwin'" }, - { name = "eclipse-zenoh", marker = "sys_platform == 'darwin'" }, - { name = "fastrtc", marker = "sys_platform == 'darwin'" }, - { name = "gradio", marker = "sys_platform == 'darwin'" }, - { name = "gradio-client", marker = "sys_platform == 'darwin'" }, - { name = "huggingface-hub", marker = "sys_platform == 'darwin'" }, - { name = "openai", marker = "sys_platform == 'darwin'" }, - { name = "opencv-python", marker = "sys_platform == 'darwin'" }, - { name = "python-dotenv", marker = "sys_platform == 'darwin'" }, - { name = "reachy-mini", extra = ["mujoco"], marker = "sys_platform == 'darwin'" }, - { name = "reachy-mini-dances-library", marker = "sys_platform == 'darwin'" }, - { name = "reachy-mini-toolbox", marker = "sys_platform == 'darwin'" }, + { name = "aiortc", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "eclipse-zenoh", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "fastrtc", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "gradio", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "gradio-client", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "huggingface-hub", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "openai", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "opencv-python", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "python-dotenv", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "reachy-mini", extra = ["mujoco"], marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "reachy-mini-dances-library", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "reachy-mini-toolbox", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, ] [package.optional-dependencies] @@ -2116,27 +2187,30 @@ all-vision = [ { name = "ultralytics", marker = "sys_platform == 'darwin'" }, ] local-vision = [ - { name = "num2words", marker = "sys_platform == 'darwin'" }, - { name = "torch", marker = "sys_platform == 'darwin'" }, - { name = "transformers", marker = "sys_platform == 'darwin'" }, + { name = "num2words", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "torch", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "transformers", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, ] mediapipe-vision = [ { name = "mediapipe", marker = "sys_platform == 'darwin'" }, ] +riva = [ + { name = "nvidia-riva-client", marker = "sys_platform == 'darwin'" }, +] yolo-vision = [ - { name = "supervision", marker = "sys_platform == 'darwin'" }, - { name = "ultralytics", marker = "sys_platform == 'darwin'" }, + { name = "supervision", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "ultralytics", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, ] [package.dev-dependencies] dev = [ - { name = "pre-commit", marker = "sys_platform == 'darwin'" }, - { name = "pytest", marker = "sys_platform == 'darwin'" }, - { name = "pytest-asyncio", marker = "sys_platform == 'darwin'" }, - { name = "python-semantic-release", marker = "sys_platform == 'darwin'" }, - { name = "ruff", marker = "sys_platform == 'darwin'" }, - { name = "ty", marker = "sys_platform == 'darwin'" }, - { name = "types-requests", marker = "sys_platform == 'darwin'" }, + { name = "pre-commit", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "pytest", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "pytest-asyncio", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "python-semantic-release", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "ruff", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "ty", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "types-requests", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, ] [package.metadata] @@ -2151,6 +2225,7 @@ requires-dist = [ { name = "mediapipe", marker = "extra == 'mediapipe-vision'", specifier = "==0.10.14" }, { name = "num2words", marker = "extra == 'all-vision'" }, { name = "num2words", marker = "extra == 'local-vision'" }, + { name = "nvidia-riva-client", marker = "extra == 'riva'", specifier = ">=2.19,<3" }, { name = "openai", specifier = ">=2.1" }, { name = "opencv-python", specifier = ">=4.12.0.88" }, { name = "python-dotenv" }, @@ -2166,7 +2241,7 @@ requires-dist = [ { name = "ultralytics", marker = "extra == 'all-vision'" }, { name = "ultralytics", marker = "extra == 'yolo-vision'" }, ] -provides-extras = ["local-vision", "yolo-vision", "mediapipe-vision", "all-vision"] +provides-extras = ["riva", "local-vision", "yolo-vision", "mediapipe-vision", "all-vision"] [package.metadata.requires-dev] dev = [ @@ -2184,7 +2259,7 @@ name = "reachy-mini-dances-library" version = "0.2.1" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "reachy-mini", marker = "sys_platform == 'darwin'" }, + { name = "reachy-mini", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, ] sdist = { url = "https://files.pythonhosted.org/packages/5f/0e/7b26c96caf905e8e0cedff57251da4f953b1c2b97a611c86aee76318f5d1/reachy_mini_dances_library-0.2.1.tar.gz", hash = "sha256:f63fbb0e27f97c547f4e4487e8491495365b24c6f0d063780ef1da9fa5b1daf1", size = 14022, upload-time = "2025-10-15T16:09:00.965Z" } wheels = [ @@ -2250,10 +2325,10 @@ name = "requests" version = "2.34.2" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "certifi", marker = "sys_platform == 'darwin'" }, - { name = "charset-normalizer", marker = "sys_platform == 'darwin'" }, - { name = "idna", marker = "sys_platform == 'darwin'" }, - { name = "urllib3", marker = "sys_platform == 'darwin'" }, + { name = "certifi", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "charset-normalizer", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "idna", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "urllib3", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, ] sdist = { url = "https://files.pythonhosted.org/packages/ac/c3/e2a2b89f2d3e2179abd6d00ebd70bff6273f37fb3e0cc209f48b39d00cbf/requests-2.34.2.tar.gz", hash = "sha256:f288924cae4e29463698d6d60bc6a4da69c89185ad1e0bcc4104f584e960b9ed", size = 142856, upload-time = "2026-05-14T19:25:27.735Z" } wheels = [ @@ -2265,7 +2340,7 @@ name = "requests-toolbelt" version = "1.0.0" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "requests", marker = "sys_platform == 'darwin'" }, + { name = "requests", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, ] sdist = { url = "https://files.pythonhosted.org/packages/f3/61/d7545dafb7ac2230c70d38d31cbfe4cc64f7144dc41f6e4e4b78ecd9f5bb/requests-toolbelt-1.0.0.tar.gz", hash = "sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6", size = 206888, upload-time = "2023-05-01T04:11:33.229Z" } wheels = [ @@ -2277,8 +2352,8 @@ name = "rich" version = "14.3.4" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "markdown-it-py", marker = "sys_platform == 'darwin'" }, - { name = "pygments", marker = "sys_platform == 'darwin'" }, + { name = "markdown-it-py", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "pygments", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, ] sdist = { url = "https://files.pythonhosted.org/packages/e9/67/cae617f1351490c25a4b8ac3b8b63a4dda609295d8222bad12242dfdc629/rich-14.3.4.tar.gz", hash = "sha256:817e02727f2b25b40ef56f5aa2217f400c8489f79ca8f46ea2b70dd5e14558a9", size = 230524, upload-time = "2026-04-11T02:57:45.419Z" } wheels = [ @@ -2314,7 +2389,7 @@ name = "safehttpx" version = "0.1.7" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "httpx", marker = "sys_platform == 'darwin'" }, + { name = "httpx", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, ] sdist = { url = "https://files.pythonhosted.org/packages/89/d1/4282284d9cf1ee873607a46442da977fc3c985059315ab23610be31d5885/safehttpx-0.1.7.tar.gz", hash = "sha256:db201c0978c41eddb8bb480f3eee59dd67304fdd91646035e9d9a720049a9d23", size = 10385, upload-time = "2025-10-24T18:30:09.783Z" } wheels = [ @@ -2339,10 +2414,10 @@ resolution-markers = [ "python_full_version < '3.11' and sys_platform == 'darwin'", ] dependencies = [ - { name = "joblib", marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, - { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, - { name = "scipy", version = "1.15.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, - { name = "threadpoolctl", marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, + { name = "joblib", marker = "(python_full_version < '3.11' and sys_platform == 'darwin') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.11' and sys_platform == 'darwin') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "scipy", version = "1.15.3", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.11' and sys_platform == 'darwin') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "threadpoolctl", marker = "(python_full_version < '3.11' and sys_platform == 'darwin') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, ] sdist = { url = "https://files.pythonhosted.org/packages/98/c2/a7855e41c9d285dfe86dc50b250978105dce513d6e459ea66a6aeb0e1e0c/scikit_learn-1.7.2.tar.gz", hash = "sha256:20e9e49ecd130598f1ca38a1d85090e1a600147b9c02fa6f15d69cb53d968fda", size = 7193136, upload-time = "2025-09-09T08:21:29.075Z" } wheels = [ @@ -2363,12 +2438,12 @@ resolution-markers = [ "python_full_version == '3.11.*' and sys_platform == 'darwin'", ] dependencies = [ - { name = "joblib", marker = "python_full_version >= '3.11' and sys_platform == 'darwin'" }, - { name = "narwhals", marker = "python_full_version >= '3.11' and sys_platform == 'darwin'" }, - { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' and sys_platform == 'darwin'" }, - { name = "scipy", version = "1.17.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.11.*' and sys_platform == 'darwin'" }, - { name = "scipy", version = "1.18.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.12' and sys_platform == 'darwin'" }, - { name = "threadpoolctl", marker = "python_full_version >= '3.11' and sys_platform == 'darwin'" }, + { name = "joblib", marker = "(python_full_version >= '3.11' and sys_platform == 'darwin') or (python_full_version < '3.11' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version < '3.11' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "narwhals", marker = "(python_full_version >= '3.11' and sys_platform == 'darwin') or (python_full_version < '3.11' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version < '3.11' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.11' and sys_platform == 'darwin') or (python_full_version < '3.11' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version < '3.11' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "scipy", version = "1.17.1", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version == '3.11.*' and sys_platform == 'darwin') or (python_full_version != '3.11.*' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version != '3.11.*' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "scipy", version = "1.18.0", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.12' and sys_platform == 'darwin') or (python_full_version < '3.12' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version < '3.12' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "threadpoolctl", marker = "(python_full_version >= '3.11' and sys_platform == 'darwin') or (python_full_version < '3.11' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version < '3.11' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, ] sdist = { url = "https://files.pythonhosted.org/packages/fa/6f/37092bdb25f712817231799fc5674d8e704066a8a70c1d2d40517e18b4ab/scikit_learn-1.9.0.tar.gz", hash = "sha256:8833266989d3a5110178a9fae30783675460724d0e1efb13b14901d2c660c557", size = 7750767, upload-time = "2026-06-02T11:54:32.706Z" } wheels = [ @@ -2386,7 +2461,7 @@ resolution-markers = [ "python_full_version < '3.11' and sys_platform == 'darwin'", ] dependencies = [ - { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.11' and sys_platform == 'darwin') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, ] sdist = { url = "https://files.pythonhosted.org/packages/0f/37/6964b830433e654ec7485e45a00fc9a27cf868d622838f6b6d9c5ec0d532/scipy-1.15.3.tar.gz", hash = "sha256:eae3cf522bc7df64b42cad3925c876e1b0b6c35c1337c93e12c0f366f55b0eaf", size = 59419214, upload-time = "2025-05-08T16:13:05.955Z" } wheels = [ @@ -2412,7 +2487,7 @@ resolution-markers = [ "python_full_version == '3.11.*' and sys_platform == 'darwin'", ] dependencies = [ - { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.11.*' and sys_platform == 'darwin'" }, + { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version == '3.11.*' and sys_platform == 'darwin') or (python_full_version != '3.11.*' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version != '3.11.*' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, ] sdist = { url = "https://files.pythonhosted.org/packages/7a/97/5a3609c4f8d58b039179648e62dd220f89864f56f7357f5d4f45c29eb2cc/scipy-1.17.1.tar.gz", hash = "sha256:95d8e012d8cb8816c226aef832200b1d45109ed4464303e997c5b13122b297c0", size = 30573822, upload-time = "2026-02-23T00:26:24.851Z" } wheels = [ @@ -2434,7 +2509,7 @@ resolution-markers = [ "python_full_version >= '3.12' and sys_platform == 'darwin'", ] dependencies = [ - { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.12' and sys_platform == 'darwin'" }, + { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.12' and sys_platform == 'darwin') or (python_full_version < '3.12' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version < '3.12' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, ] sdist = { url = "https://files.pythonhosted.org/packages/a7/25/c2700dfaf6442b4effaa91af24ebce5dc9d31bb4a69706313aae70d72cd0/scipy-1.18.0.tar.gz", hash = "sha256:67b2ad2ad54c72ca6d04975a9b2df8c3638c34ddd5b28738e94fc2b57929d378", size = 30774447, upload-time = "2026-06-19T15:01:43.456Z" } wheels = [ @@ -2516,10 +2591,10 @@ name = "soundfile" version = "0.14.0" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "cffi", marker = "sys_platform == 'darwin'" }, - { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, - { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' and sys_platform == 'darwin'" }, - { name = "typing-extensions", marker = "sys_platform == 'darwin'" }, + { name = "cffi", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.11' and sys_platform == 'darwin') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.11' and sys_platform == 'darwin') or (python_full_version < '3.11' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version < '3.11' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "typing-extensions", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, ] sdist = { url = "https://files.pythonhosted.org/packages/d2/db/949331952a6fb1c5b12e9de80fd08747966c2039d1a61db4764fbd3981c2/soundfile-0.14.0.tar.gz", hash = "sha256:ba1c1a2d618bca5c406647c83b89f07cc8810fa506a50622a6993ba130c1de11", size = 47842, upload-time = "2026-06-06T08:58:47.869Z" } wheels = [ @@ -2533,8 +2608,8 @@ name = "soxr" version = "1.1.0" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, - { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' and sys_platform == 'darwin'" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.11' and sys_platform == 'darwin') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.11' and sys_platform == 'darwin') or (python_full_version < '3.11' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version < '3.11' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, ] sdist = { url = "https://files.pythonhosted.org/packages/ed/11/27cebce4a108f77afea7c80545115536b45e3f11ebfb914f638fdd9ba847/soxr-1.1.0.tar.gz", hash = "sha256:9f228ae21c78fa9359ca98d8a5e8e91f30639e438e574133dace62c5b5309e44", size = 173067, upload-time = "2026-05-03T00:15:18.214Z" } wheels = [ @@ -2551,8 +2626,8 @@ name = "starlette" version = "0.52.1" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "anyio", marker = "sys_platform == 'darwin'" }, - { name = "typing-extensions", marker = "sys_platform == 'darwin'" }, + { name = "anyio", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "typing-extensions", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, ] sdist = { url = "https://files.pythonhosted.org/packages/c4/68/79977123bb7be889ad680d79a40f339082c1978b5cfcf62c2d8d196873ac/starlette-0.52.1.tar.gz", hash = "sha256:834edd1b0a23167694292e94f597773bc3f89f362be6effee198165a35d62933", size = 2653702, upload-time = "2026-01-18T13:34:11.062Z" } wheels = [ @@ -2564,20 +2639,20 @@ name = "supervision" version = "0.29.1" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "defusedxml", marker = "sys_platform == 'darwin'" }, - { name = "matplotlib", version = "3.10.9", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, - { name = "matplotlib", version = "3.11.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' and sys_platform == 'darwin'" }, - { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, - { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' and sys_platform == 'darwin'" }, - { name = "opencv-python", marker = "sys_platform == 'darwin'" }, - { name = "pillow", marker = "sys_platform == 'darwin'" }, - { name = "pydeprecate", marker = "sys_platform == 'darwin'" }, - { name = "pyyaml", marker = "sys_platform == 'darwin'" }, - { name = "requests", marker = "sys_platform == 'darwin'" }, - { name = "scipy", version = "1.15.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, - { name = "scipy", version = "1.17.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.11.*' and sys_platform == 'darwin'" }, - { name = "scipy", version = "1.18.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.12' and sys_platform == 'darwin'" }, - { name = "tqdm", marker = "sys_platform == 'darwin'" }, + { name = "defusedxml", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "matplotlib", version = "3.10.9", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.11' and sys_platform == 'darwin') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "matplotlib", version = "3.11.0", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.11' and sys_platform == 'darwin') or (python_full_version < '3.11' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version < '3.11' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.11' and sys_platform == 'darwin') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.11' and sys_platform == 'darwin') or (python_full_version < '3.11' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version < '3.11' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "opencv-python", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "pillow", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "pydeprecate", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "pyyaml", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "requests", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "scipy", version = "1.15.3", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.11' and sys_platform == 'darwin') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "scipy", version = "1.17.1", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version == '3.11.*' and sys_platform == 'darwin') or (python_full_version != '3.11.*' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version != '3.11.*' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "scipy", version = "1.18.0", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.12' and sys_platform == 'darwin') or (python_full_version < '3.12' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version < '3.12' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "tqdm", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, ] sdist = { url = "https://files.pythonhosted.org/packages/dc/ec/293e5693ef5f32b54533b680b909a96976925adbb5c3bbfbf53b199182e0/supervision-0.29.1.tar.gz", hash = "sha256:2db9f968a3253e6778573c39bbb8a8e3fa586ece6c98fbdc41d8fd8508eda5af", size = 246950, upload-time = "2026-06-23T19:55:37.717Z" } wheels = [ @@ -2589,7 +2664,7 @@ name = "sympy" version = "1.14.0" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "mpmath", marker = "sys_platform == 'darwin'" }, + { name = "mpmath", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, ] 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 = [ @@ -2610,7 +2685,7 @@ name = "tokenizers" version = "0.22.2" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "huggingface-hub", marker = "sys_platform == 'darwin'" }, + { name = "huggingface-hub", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, ] sdist = { url = "https://files.pythonhosted.org/packages/73/6f/f80cfef4a312e1fb34baf7d85c72d4411afde10978d4657f8cdd811d3ccc/tokenizers-0.22.2.tar.gz", hash = "sha256:473b83b915e547aa366d1eee11806deaf419e17be16310ac0a14077f1e28f917", size = 372115, upload-time = "2026-01-05T10:45:15.988Z" } wheels = [ @@ -2654,14 +2729,14 @@ name = "torch" version = "2.12.1" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "filelock", marker = "sys_platform == 'darwin'" }, - { name = "fsspec", marker = "sys_platform == 'darwin'" }, - { name = "jinja2", marker = "sys_platform == 'darwin'" }, - { name = "networkx", version = "3.4.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, - { name = "networkx", version = "3.6.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' and sys_platform == 'darwin'" }, - { name = "setuptools", marker = "sys_platform == 'darwin'" }, - { name = "sympy", marker = "sys_platform == 'darwin'" }, - { name = "typing-extensions", marker = "sys_platform == 'darwin'" }, + { name = "filelock", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "fsspec", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "jinja2", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "networkx", version = "3.4.2", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.11' and sys_platform == 'darwin') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "networkx", version = "3.6.1", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.11' and sys_platform == 'darwin') or (python_full_version < '3.11' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version < '3.11' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "setuptools", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "sympy", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "typing-extensions", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, ] wheels = [ { url = "https://files.pythonhosted.org/packages/db/ed/ff0c4f8cef63977a646dc80e40c05cae873f4097b12dc87e1cd7e1cecf42/torch-2.12.1-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:ec56e82be6a8b0c036771a77f7d32ad3c299770571af9815b3dafe61434389d5", size = 87967927, upload-time = "2026-06-17T21:08:43.16Z" }, @@ -2674,10 +2749,10 @@ name = "torchvision" version = "0.27.1" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, - { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' and sys_platform == 'darwin'" }, - { name = "pillow", marker = "sys_platform == 'darwin'" }, - { name = "torch", marker = "sys_platform == 'darwin'" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.11' and sys_platform == 'darwin') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.11' and sys_platform == 'darwin') or (python_full_version < '3.11' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version < '3.11' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "pillow", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "torch", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, ] wheels = [ { url = "https://files.pythonhosted.org/packages/c9/10/8e3e5a70dded1f86368bc987d93fa0436e73a79060aead75a8783b040ebd/torchvision-0.27.1-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:68ba63b48af92f06db995adb23d8411993dba1dee705a4e92411b83a00930b7f", size = 1852109, upload-time = "2026-06-17T21:09:34.966Z" }, @@ -2709,18 +2784,18 @@ name = "transformers" version = "5.0.0rc2" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "filelock", marker = "sys_platform == 'darwin'" }, - { name = "huggingface-hub", marker = "sys_platform == 'darwin'" }, - { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, - { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' and sys_platform == 'darwin'" }, - { name = "packaging", marker = "sys_platform == 'darwin'" }, - { name = "pyyaml", marker = "sys_platform == 'darwin'" }, - { name = "regex", marker = "sys_platform == 'darwin'" }, - { name = "requests", marker = "sys_platform == 'darwin'" }, - { name = "safetensors", marker = "sys_platform == 'darwin'" }, - { name = "tokenizers", marker = "sys_platform == 'darwin'" }, - { name = "tqdm", marker = "sys_platform == 'darwin'" }, - { name = "typer-slim", marker = "sys_platform == 'darwin'" }, + { name = "filelock", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "huggingface-hub", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.11' and sys_platform == 'darwin') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.11' and sys_platform == 'darwin') or (python_full_version < '3.11' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version < '3.11' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "packaging", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "pyyaml", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "regex", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "requests", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "safetensors", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "tokenizers", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "tqdm", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "typer-slim", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, ] sdist = { url = "https://files.pythonhosted.org/packages/94/e2/86b1bd5264272953370a5e50a91da38d7a53a87c5faf3fd3ff62d7353879/transformers-5.0.0rc2.tar.gz", hash = "sha256:9f2fa5e132433dd7eb910dc224b32de0baf758f3b6ffc918dbb632e0af85c07a", size = 8362532, upload-time = "2026-01-07T16:58:02.603Z" } wheels = [ @@ -2742,9 +2817,9 @@ name = "typer" version = "0.26.7" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "annotated-doc", marker = "sys_platform == 'darwin'" }, - { name = "rich", marker = "sys_platform == 'darwin'" }, - { name = "shellingham", marker = "sys_platform == 'darwin'" }, + { name = "annotated-doc", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "rich", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "shellingham", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, ] sdist = { url = "https://files.pythonhosted.org/packages/5e/ed/ef06584ccdd5c410df0837951ecd7e15d9a6144ea1bd4c73cecab1a89891/typer-0.26.7.tar.gz", hash = "sha256:e314a34c617e419c091b2830dda3ea1f257134ff593061a8f5b9717ab8dddb3a", size = 201709, upload-time = "2026-06-03T07:18:06.843Z" } wheels = [ @@ -2756,7 +2831,7 @@ name = "typer-slim" version = "0.24.0" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "typer", marker = "sys_platform == 'darwin'" }, + { name = "typer", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, ] sdist = { url = "https://files.pythonhosted.org/packages/a7/a7/e6aecc4b4eb59598829a3b5076a93aff291b4fdaa2ded25efc4e1f4d219c/typer_slim-0.24.0.tar.gz", hash = "sha256:f0ed36127183f52ae6ced2ecb2521789995992c521a46083bfcdbb652d22ad34", size = 4776, upload-time = "2026-02-16T22:08:51.2Z" } wheels = [ @@ -2768,7 +2843,7 @@ name = "types-requests" version = "2.33.0.20260518" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "urllib3", marker = "sys_platform == 'darwin'" }, + { name = "urllib3", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, ] sdist = { url = "https://files.pythonhosted.org/packages/e0/01/c5a19253fe1ac159159ddf9a3a07cec8bb5e486ec4d9002ad2821da0e5d2/types_requests-2.33.0.20260518.tar.gz", hash = "sha256:df7bd3bfe0ca8402dfb841e7d9be714bb5578203283d66d7dc4ef69343449a5e", size = 24752, upload-time = "2026-05-18T06:07:37.966Z" } wheels = [ @@ -2789,7 +2864,7 @@ name = "typing-inspection" version = "0.4.2" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "typing-extensions", marker = "sys_platform == 'darwin'" }, + { name = "typing-extensions", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, ] sdist = { url = "https://files.pythonhosted.org/packages/55/e3/70399cb7dd41c10ac53367ae42139cf4b1ca5f36bb3dc6c9d33acdb43655/typing_inspection-0.4.2.tar.gz", hash = "sha256:ba561c48a67c5958007083d386c3295464928b01faa735ab8547c5692e87f464", size = 75949, upload-time = "2025-10-01T02:14:41.687Z" } wheels = [ @@ -2810,23 +2885,23 @@ name = "ultralytics" version = "8.4.76" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "matplotlib", version = "3.10.9", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, - { name = "matplotlib", version = "3.11.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' and sys_platform == 'darwin'" }, - { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, - { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' and sys_platform == 'darwin'" }, - { name = "nvidia-ml-py", marker = "sys_platform == 'darwin'" }, - { name = "opencv-python", marker = "sys_platform == 'darwin'" }, - { name = "pillow", marker = "sys_platform == 'darwin'" }, - { name = "polars", marker = "sys_platform == 'darwin'" }, - { name = "psutil", marker = "sys_platform == 'darwin'" }, - { name = "pyyaml", marker = "sys_platform == 'darwin'" }, - { name = "requests", marker = "sys_platform == 'darwin'" }, - { name = "scipy", version = "1.15.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, - { name = "scipy", version = "1.17.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.11.*' and sys_platform == 'darwin'" }, - { name = "scipy", version = "1.18.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.12' and sys_platform == 'darwin'" }, - { name = "torch", marker = "sys_platform == 'darwin'" }, - { name = "torchvision", marker = "sys_platform == 'darwin'" }, - { name = "ultralytics-thop", marker = "sys_platform == 'darwin'" }, + { name = "matplotlib", version = "3.10.9", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.11' and sys_platform == 'darwin') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "matplotlib", version = "3.11.0", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.11' and sys_platform == 'darwin') or (python_full_version < '3.11' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version < '3.11' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.11' and sys_platform == 'darwin') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.11' and sys_platform == 'darwin') or (python_full_version < '3.11' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version < '3.11' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "nvidia-ml-py", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "opencv-python", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "pillow", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "polars", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "psutil", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "pyyaml", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "requests", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "scipy", version = "1.15.3", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.11' and sys_platform == 'darwin') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "scipy", version = "1.17.1", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version == '3.11.*' and sys_platform == 'darwin') or (python_full_version != '3.11.*' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version != '3.11.*' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "scipy", version = "1.18.0", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.12' and sys_platform == 'darwin') or (python_full_version < '3.12' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version < '3.12' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "torch", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "torchvision", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "ultralytics-thop", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, ] sdist = { url = "https://files.pythonhosted.org/packages/5d/0b/d6b82fe3115ddc9d44c3819555b66112c0940bbb8a5cd39dd2ab6b42acc6/ultralytics-8.4.76.tar.gz", hash = "sha256:332382999ed31cec039cae216ef877fb2af67babf1d3e8a3d3e267c5e51fca3a", size = 1109784, upload-time = "2026-06-24T14:13:30.449Z" } wheels = [ @@ -2838,9 +2913,9 @@ name = "ultralytics-thop" version = "2.0.20" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, - { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' and sys_platform == 'darwin'" }, - { name = "torch", marker = "sys_platform == 'darwin'" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.11' and sys_platform == 'darwin') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.11' and sys_platform == 'darwin') or (python_full_version < '3.11' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version < '3.11' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "torch", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, ] sdist = { url = "https://files.pythonhosted.org/packages/98/c6/d25cb53e141242f74950744179c21b8798bb09b9e7161465ecda4f577ddf/ultralytics_thop-2.0.20.tar.gz", hash = "sha256:f3595e0d8c6fd0b9f62fc2cd9be921755e2649a05c34f1fabaea0bff7295d641", size = 34682, upload-time = "2026-06-06T11:42:42.184Z" } wheels = [ @@ -2861,9 +2936,9 @@ name = "uvicorn" version = "0.49.0" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "click", marker = "sys_platform == 'darwin'" }, - { name = "h11", marker = "sys_platform == 'darwin'" }, - { name = "typing-extensions", marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, + { name = "click", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "h11", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "typing-extensions", marker = "(python_full_version < '3.11' and sys_platform == 'darwin') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, ] sdist = { url = "https://files.pythonhosted.org/packages/c4/1f/fa18009dea8469069cca78a4e877a008ab78f08b064bfc9ab891579077ff/uvicorn-0.49.0.tar.gz", hash = "sha256:ebf4271aa580d9de97f93192d4595176df6e91f9aae919ca73e4fc07df1e66a3", size = 91284, upload-time = "2026-06-03T22:01:30.448Z" } wheels = [ @@ -2872,12 +2947,12 @@ wheels = [ [package.optional-dependencies] standard = [ - { name = "httptools", marker = "sys_platform == 'darwin'" }, - { name = "python-dotenv", marker = "sys_platform == 'darwin'" }, - { name = "pyyaml", marker = "sys_platform == 'darwin'" }, - { name = "uvloop", marker = "platform_python_implementation != 'PyPy' and sys_platform == 'darwin'" }, - { name = "watchfiles", marker = "sys_platform == 'darwin'" }, - { name = "websockets", marker = "sys_platform == 'darwin'" }, + { name = "httptools", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "python-dotenv", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "pyyaml", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "uvloop", marker = "(platform_python_implementation != 'PyPy' and sys_platform == 'darwin') or (platform_python_implementation == 'PyPy' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (platform_python_implementation == 'PyPy' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "watchfiles", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "websockets", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, ] [[package]] @@ -2899,11 +2974,11 @@ name = "virtualenv" version = "21.5.1" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "distlib", marker = "sys_platform == 'darwin'" }, - { name = "filelock", marker = "sys_platform == 'darwin'" }, - { name = "platformdirs", marker = "sys_platform == 'darwin'" }, - { name = "python-discovery", marker = "sys_platform == 'darwin'" }, - { name = "typing-extensions", marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, + { name = "distlib", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "filelock", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "platformdirs", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "python-discovery", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "typing-extensions", marker = "(python_full_version < '3.11' and sys_platform == 'darwin') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, ] sdist = { url = "https://files.pythonhosted.org/packages/f1/a5/81f987504738e6defeed61ec1c47e2aefab3c35d8eeb87e1b3f38cf28254/virtualenv-21.5.1.tar.gz", hash = "sha256:dca3bf98275a59c652b69d68e73433e597d977c2da9198882479d1a7188009c8", size = 4578798, upload-time = "2026-06-16T16:23:58.603Z" } wheels = [ @@ -2915,7 +2990,7 @@ name = "watchfiles" version = "1.2.0" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "anyio", marker = "sys_platform == 'darwin'" }, + { name = "anyio", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, ] sdist = { url = "https://files.pythonhosted.org/packages/cd/41/5e1a4bb12aac5f1493fa1bdc11154eca3b258ca4eba65d39c473fe19d8e9/watchfiles-1.2.0.tar.gz", hash = "sha256:c995fba777f1ea992f090f9236e9284cf7a5d1a0130dd5a3d82c598cacd76838", size = 108252, upload-time = "2026-05-18T04:32:04.251Z" } wheels = [ @@ -2978,9 +3053,9 @@ name = "yarl" version = "1.24.2" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "idna", marker = "sys_platform == 'darwin'" }, - { name = "multidict", marker = "sys_platform == 'darwin'" }, - { name = "propcache", marker = "sys_platform == 'darwin'" }, + { name = "idna", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "multidict", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "propcache", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, ] sdist = { url = "https://files.pythonhosted.org/packages/79/12/1e8f37460ea0f7eb59c221fdaf0ed75e7ac43e97f8093b9c6f411df50a78/yarl-1.24.2.tar.gz", hash = "sha256:9ac374123c6fd7abf64d1fec93962b0bd4ee2c19751755a762a72dd96c0378f8", size = 210798, upload-time = "2026-05-19T21:31:05.599Z" } wheels = [ @@ -3001,7 +3076,7 @@ name = "zeroconf" version = "0.150.0" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "ifaddr", marker = "sys_platform == 'darwin'" }, + { name = "ifaddr", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, ] sdist = { url = "https://files.pythonhosted.org/packages/09/ea/34bb185645ecaa18d34e5883bffea71aa9bffbbb994634884e8b2f3ad0c4/zeroconf-0.150.0.tar.gz", hash = "sha256:a5fe7feab1de6ef5e541e0a3d07e534fd91629b813fc27281593584100f63164", size = 213634, upload-time = "2026-06-22T17:52:37.982Z" } wheels = [ From 4ebcbda67495b6fa10dd513e5a9f50a71eea2f79 Mon Sep 17 00:00:00 2001 From: Johnny Greco Date: Thu, 25 Jun 2026 22:52:53 +0000 Subject: [PATCH 14/22] Normalize Riva endpoint URLs --- projects/reachy-mini-openshell/.env.example | 1 + projects/reachy-mini-openshell/README.md | 7 ++-- .../reachy_mini_conversation_app/riva_asr.py | 22 ++++++++++-- .../tests/test_riva_asr.py | 34 +++++++++++++++++++ 4 files changed, 60 insertions(+), 4 deletions(-) create mode 100644 projects/reachy-mini-openshell/tests/test_riva_asr.py diff --git a/projects/reachy-mini-openshell/.env.example b/projects/reachy-mini-openshell/.env.example index 2a82e724..be0b39a3 100644 --- a/projects/reachy-mini-openshell/.env.example +++ b/projects/reachy-mini-openshell/.env.example @@ -8,6 +8,7 @@ MODEL_NAME=azure/anthropic/claude-opus-4-8 AUDIO_INPUT_MODE=openai_realtime # Used only when AUDIO_INPUT_MODE=riva_stt. +# Accepts either host:port or http(s)://host:port. RIVA_SERVER_URI=localhost:50051 RIVA_USE_SSL=false RIVA_LANGUAGE_CODE=en-US diff --git a/projects/reachy-mini-openshell/README.md b/projects/reachy-mini-openshell/README.md index 9470fe58..5102b8d3 100644 --- a/projects/reachy-mini-openshell/README.md +++ b/projects/reachy-mini-openshell/README.md @@ -160,8 +160,11 @@ Realtime path; other model IDs use Chat Completions for text input. template default, where audio goes to an OpenAI-compatible Realtime endpoint. Use `riva_stt` to stream microphone audio to Riva ASR and pass final transcripts into the text LLM path. -- `RIVA_SERVER_URI`: Riva ASR server URI, for example `localhost:50051`. -- `RIVA_USE_SSL`: set to `true` for TLS-enabled Riva endpoints. +- `RIVA_SERVER_URI`: Riva ASR server URI, for example `localhost:50051` or +`http://riva-host:9000`. URL schemes are normalized for the Riva client. +- `RIVA_USE_SSL`: set to `true` for TLS-enabled Riva endpoints. If +`RIVA_SERVER_URI` starts with `https://`, TLS is enabled unless this value is +explicitly set. - `RIVA_LANGUAGE_CODE`: BCP-47 language code for Riva ASR, such as `en-US`. - `RIVA_ASR_MODEL`: optional Riva ASR model name. Leave empty to let Riva select a model from the language/configuration. diff --git a/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/riva_asr.py b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/riva_asr.py index efc7b814..134ed179 100644 --- a/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/riva_asr.py +++ b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/riva_asr.py @@ -7,6 +7,7 @@ import logging import threading from dataclasses import dataclass +from urllib.parse import urlparse from collections.abc import Callable, Awaitable @@ -30,11 +31,12 @@ class RivaAsrConfig: @classmethod def from_env(cls) -> "RivaAsrConfig": """Build Riva ASR configuration from environment variables.""" + server_uri, inferred_use_ssl = _normalize_server_uri(os.getenv("RIVA_SERVER_URI", "localhost:50051")) return cls( - server_uri=os.getenv("RIVA_SERVER_URI", "localhost:50051"), + server_uri=server_uri, language_code=os.getenv("RIVA_LANGUAGE_CODE", "en-US"), model=os.getenv("RIVA_ASR_MODEL", ""), - use_ssl=_env_flag("RIVA_USE_SSL", default=False), + use_ssl=_env_flag("RIVA_USE_SSL", default=inferred_use_ssl), ssl_cert=os.getenv("RIVA_SSL_CERT") or None, authorization=os.getenv("RIVA_AUTHORIZATION") or None, metadata=_parse_metadata(os.getenv("RIVA_METADATA", "")), @@ -188,6 +190,22 @@ def _env_flag(name: str, default: bool = False) -> bool: return raw.strip().lower() in {"1", "true", "yes", "on"} +def _normalize_server_uri(raw: str) -> tuple[str, bool]: + value = raw.strip() + if "://" not in value: + return value, False + + parsed = urlparse(value) + if parsed.scheme not in {"http", "https"}: + logger.warning("RIVA_SERVER_URI=%r has an unexpected scheme; passing host/path through", raw) + + server_uri = parsed.netloc or parsed.path + if parsed.path not in {"", "/"} and parsed.netloc: + logger.warning("Ignoring path in RIVA_SERVER_URI=%r; Riva client expects host:port", raw) + + return server_uri, parsed.scheme == "https" + + def _parse_metadata(raw: str) -> tuple[tuple[str, str], ...]: pairs: list[tuple[str, str]] = [] for item in raw.split(","): diff --git a/projects/reachy-mini-openshell/tests/test_riva_asr.py b/projects/reachy-mini-openshell/tests/test_riva_asr.py new file mode 100644 index 00000000..9a28d01b --- /dev/null +++ b/projects/reachy-mini-openshell/tests/test_riva_asr.py @@ -0,0 +1,34 @@ +from reachy_mini_conversation_app.riva_asr import RivaAsrConfig + + +def test_riva_config_accepts_http_endpoint_url(monkeypatch): + """Riva endpoint URLs should be normalized to the host:port form expected by the client.""" + monkeypatch.setenv("RIVA_SERVER_URI", "http://192.168.1.57:9000") + monkeypatch.delenv("RIVA_USE_SSL", raising=False) + + config = RivaAsrConfig.from_env() + + assert config.server_uri == "192.168.1.57:9000" + assert config.use_ssl is False + + +def test_riva_config_infers_ssl_from_https_endpoint_url(monkeypatch): + """HTTPS Riva endpoint URLs should enable TLS unless explicitly overridden.""" + monkeypatch.setenv("RIVA_SERVER_URI", "https://riva.example.test:443") + monkeypatch.delenv("RIVA_USE_SSL", raising=False) + + config = RivaAsrConfig.from_env() + + assert config.server_uri == "riva.example.test:443" + assert config.use_ssl is True + + +def test_riva_use_ssl_env_overrides_endpoint_url_scheme(monkeypatch): + """RIVA_USE_SSL should keep explicit operator configuration authoritative.""" + monkeypatch.setenv("RIVA_SERVER_URI", "https://riva.example.test:443") + monkeypatch.setenv("RIVA_USE_SSL", "false") + + config = RivaAsrConfig.from_env() + + assert config.server_uri == "riva.example.test:443" + assert config.use_ssl is False From 54b398c88ce8336c473ba12a0836921246fa123b Mon Sep 17 00:00:00 2001 From: Johnny Greco Date: Thu, 25 Jun 2026 23:20:55 +0000 Subject: [PATCH 15/22] Address Reachy panel review findings --- .../reachy-mini-conversation-simulator.md | 27 +++-- projects/reachy-mini-openshell/.env.example | 6 +- projects/reachy-mini-openshell/README.md | 21 ++-- projects/reachy-mini-openshell/index.html | 4 +- projects/reachy-mini-openshell/pyproject.toml | 4 +- .../reachy_mini_conversation_app/config.py | 48 +++++++- .../reachy_mini_conversation_app/console.py | 27 ++--- .../src/reachy_mini_conversation_app/main.py | 22 +++- .../openai_realtime.py | 28 ++++- .../reachy_mini_conversation_app/riva_asr.py | 12 +- .../tools/background_tool_manager.py | 13 ++- .../tools/move_head.py | 4 +- .../vision/yolo_head_tracker.py | 14 ++- .../tests/test_openai_realtime.py | 109 +++++++++++++++++- .../tests/test_riva_asr.py | 87 +++++++++++++- .../tools/test_background_tool_manager.py | 31 +++++ projects/reachy-mini-openshell/uv.lock | 48 +++++++- 17 files changed, 432 insertions(+), 73 deletions(-) diff --git a/docs/research/reachy-mini-conversation-simulator.md b/docs/research/reachy-mini-conversation-simulator.md index 6a03c44f..51671e42 100644 --- a/docs/research/reachy-mini-conversation-simulator.md +++ b/docs/research/reachy-mini-conversation-simulator.md @@ -14,9 +14,9 @@ for the broader app family: [pollen-robotics/reachy_mini_conversation_app](https - macOS with Python 3.10, 3.11, or 3.12. Python 3.12 is the recommended local version. - `uv`. -- An API key for conversation. Microphone mode requires an OpenAI-compatible - Realtime model; text mode can also use OpenAI-compatible Chat Completions - providers such as NVIDIA NIM. +- An API key for conversation. `OpenAI Realtime` microphone mode requires an + OpenAI-compatible Realtime model. `Riva STT` and `Text` mode can use + OpenAI-compatible Chat Completions providers such as NVIDIA NIM. - This repository checked out locally. The local dependency set includes `reachy-mini[mujoco]==1.8.0`, so the MuJoCo @@ -40,6 +40,7 @@ Edit `.env`. For OpenAI Realtime microphone and text input, use: OPENAI_API_KEY=your_api_key_here OPENAI_BASE_URL=https://api.openai.com/v1 MODEL_NAME=gpt-realtime +AUDIO_INPUT_MODE=openai_realtime ``` For NVIDIA-hosted text input through an OpenAI-compatible Chat Completions @@ -49,6 +50,7 @@ endpoint, reference your existing NVIDIA API key environment variable: OPENAI_API_KEY=${NVIDIA_API_KEY} OPENAI_BASE_URL=https://inference-api.nvidia.com/v1 MODEL_NAME=azure/anthropic/claude-opus-4-8 +AUDIO_INPUT_MODE=text ``` Use the exact model ID exposed by your provider. For example, NVIDIA model IDs @@ -170,9 +172,9 @@ http://127.0.0.1:7860/ ``` You should see the `Talk with Reachy Mini` page with an empty chat transcript, -an audio stream panel, and an `Input` selector. - -![Gradio conversation UI for Talk with Reachy Mini](../assets/reachy-mini-openshell/screenshots/gradio-home.png) +an `Input` selector with `OpenAI Realtime`, `Riva STT`, and `Text` options. +`Text` mode shows the message box and send button. The two microphone modes show +the audio stream panel. If the app logs that `OPENAI_API_KEY` is missing, stop the app, update `.env`, and restart it. Credentials are intentionally not entered in the browser. If @@ -181,15 +183,20 @@ exported in the shell that starts the app. ## 6. Talk To Reachy -Use `Microphone` mode to speak when `MODEL_NAME` points to a Realtime-capable +Use `OpenAI Realtime` to speak when `MODEL_NAME` points to a Realtime-capable model. Click `Click to Access Microphone` in the `Stream` panel and allow microphone access in the browser. Once the stream starts, speak naturally. +Use `Riva STT` when you have a Riva ASR endpoint and want speech-to-text before +sending text to a Chat Completions provider. Set `AUDIO_INPUT_MODE=riva_stt`, +configure `RIVA_SERVER_URI`, and install the Riva optional dependencies with +`uv sync --extra riva`. + Use `Text` mode to type instead. Switch `Input` to `Text`, enter a message, and send it from the text composer. For non-Realtime model IDs such as NVIDIA NIM -models, text mode uses Chat Completions. Tool calls are supported in text mode, -including providers that require the tool schema to remain attached after a tool -result is returned. +models, text mode uses Chat Completions. Tool calls are supported in text mode +and in the Riva STT path, including providers that require the tool schema to +remain attached after a tool result is returned. Useful first prompts are: diff --git a/projects/reachy-mini-openshell/.env.example b/projects/reachy-mini-openshell/.env.example index be0b39a3..060850d0 100644 --- a/projects/reachy-mini-openshell/.env.example +++ b/projects/reachy-mini-openshell/.env.example @@ -5,12 +5,14 @@ MODEL_NAME=azure/anthropic/claude-opus-4-8 # Audio input modes: # - openai_realtime: microphone audio goes to an OpenAI-compatible Realtime endpoint. # - riva_stt: microphone audio goes to Riva ASR; final transcripts go to the text LLM path. -AUDIO_INPUT_MODE=openai_realtime +# - text: typed input goes to the text LLM path. +AUDIO_INPUT_MODE=text # Used only when AUDIO_INPUT_MODE=riva_stt. # Accepts either host:port or http(s)://host:port. RIVA_SERVER_URI=localhost:50051 -RIVA_USE_SSL=false +# Optional override. Leave unset to infer TLS from an https:// RIVA_SERVER_URI. +# RIVA_USE_SSL=false RIVA_LANGUAGE_CODE=en-US RIVA_ASR_MODEL= RIVA_AUTHORIZATION= diff --git a/projects/reachy-mini-openshell/README.md b/projects/reachy-mini-openshell/README.md index 5102b8d3..0e220dc5 100644 --- a/projects/reachy-mini-openshell/README.md +++ b/projects/reachy-mini-openshell/README.md @@ -77,6 +77,7 @@ Then edit `.env`. For OpenAI Realtime microphone and text input, use: OPENAI_API_KEY=your_api_key_here OPENAI_BASE_URL=https://api.openai.com/v1 MODEL_NAME=gpt-realtime +AUDIO_INPUT_MODE=openai_realtime ``` For NVIDIA-hosted text input through an OpenAI-compatible Chat Completions @@ -86,6 +87,7 @@ endpoint, reference your existing NVIDIA API key environment variable: OPENAI_API_KEY=${NVIDIA_API_KEY} OPENAI_BASE_URL=https://inference-api.nvidia.com/v1 MODEL_NAME=azure/anthropic/claude-opus-4-8 +AUDIO_INPUT_MODE=text ``` Use the exact model ID exposed by your provider. For example, NVIDIA model IDs @@ -156,15 +158,14 @@ reference another exported environment variable, such as - `OPENAI_BASE_URL`: OpenAI-compatible API base URL. - `MODEL_NAME`: provider model ID. Model names containing `realtime` use the Realtime path; other model IDs use Chat Completions for text input. -- `AUDIO_INPUT_MODE`: microphone routing mode. Use `openai_realtime` for the -template default, where audio goes to an OpenAI-compatible Realtime endpoint. -Use `riva_stt` to stream microphone audio to Riva ASR and pass final -transcripts into the text LLM path. +- `AUDIO_INPUT_MODE`: initial input mode. Use `text` for the default typed +message path, `openai_realtime` when microphone audio should go to an +OpenAI-compatible Realtime endpoint, or `riva_stt` to stream microphone audio +to Riva ASR and pass final transcripts into the text LLM path. - `RIVA_SERVER_URI`: Riva ASR server URI, for example `localhost:50051` or `http://riva-host:9000`. URL schemes are normalized for the Riva client. -- `RIVA_USE_SSL`: set to `true` for TLS-enabled Riva endpoints. If -`RIVA_SERVER_URI` starts with `https://`, TLS is enabled unless this value is -explicitly set. +- `RIVA_USE_SSL`: optional override for TLS-enabled Riva endpoints. If this is +unset and `RIVA_SERVER_URI` starts with `https://`, TLS is enabled. - `RIVA_LANGUAGE_CODE`: BCP-47 language code for Riva ASR, such as `en-US`. - `RIVA_ASR_MODEL`: optional Riva ASR model name. Leave empty to let Riva select a model from the language/configuration. @@ -193,11 +194,11 @@ http://127.0.0.1:7860/ ``` If port `7860` is busy, the launcher chooses the next free port through `7899` -and prints that URL instead. Pass app flags after the script name: +and prints that URL instead. Pass app flags that are compatible with the +no-camera simulator baseline after the script name: ```bash projects/reachy-mini-openshell/scripts/start-local.sh --debug -projects/reachy-mini-openshell/scripts/start-local.sh --head-tracker yolo ``` From inside `projects/reachy-mini-openshell`, the shorter form is: @@ -221,7 +222,7 @@ python -m reachy_mini_conversation_app --gradio --no-camera The Gradio UI includes an `Input` selector: -- `OpenAI Realtime`: template-default microphone behavior. Audio streams to an +- `OpenAI Realtime`: Realtime microphone behavior. Audio streams to an OpenAI-compatible Realtime endpoint, which handles transcription and response generation in one session. - `Riva STT`: microphone audio streams to Riva ASR. Final transcripts are sent diff --git a/projects/reachy-mini-openshell/index.html b/projects/reachy-mini-openshell/index.html index d241f1fc..752400d6 100644 --- a/projects/reachy-mini-openshell/index.html +++ b/projects/reachy-mini-openshell/index.html @@ -32,10 +32,10 @@

    Installation

    Configuration

    -

    OpenAI API Key

    +

    Provider Configuration

    -

    This app requires an OpenAI API key for voice conversations. Set it via the web interface or environment variable.

    +

    Configure provider credentials, model routing, and input mode in .env, then run ./scripts/start-local.sh.

    diff --git a/projects/reachy-mini-openshell/pyproject.toml b/projects/reachy-mini-openshell/pyproject.toml index a9a7a66e..6c955849 100644 --- a/projects/reachy-mini-openshell/pyproject.toml +++ b/projects/reachy-mini-openshell/pyproject.toml @@ -42,9 +42,9 @@ conflicts = [ [project.optional-dependencies] riva = [ "nvidia-riva-client>=2.19,<3",] local_vision = [ "torch>=2.1", "transformers==5.0.0rc2", "num2words",] -yolo_vision = [ "ultralytics", "supervision",] +yolo_vision = [ "ultralytics", "supervision", "onnxruntime",] mediapipe_vision = [ "mediapipe==0.10.14",] -all_vision = [ "torch>=2.1", "transformers==5.0.0rc2", "num2words", "ultralytics", "supervision", "mediapipe==0.10.14",] +all_vision = [ "torch>=2.1", "transformers==5.0.0rc2", "num2words", "ultralytics", "supervision", "onnxruntime", "mediapipe==0.10.14",] [project.scripts] reachy-mini-conversation-app = "reachy_mini_conversation_app.main:main" diff --git a/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/config.py b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/config.py index bb04df19..115fcdae 100644 --- a/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/config.py +++ b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/config.py @@ -2,6 +2,7 @@ import sys import logging from pathlib import Path +from collections.abc import Mapping from dotenv import find_dotenv, load_dotenv, dotenv_values @@ -57,15 +58,34 @@ def _env_flag(name: str, default: bool = False) -> bool: logger.warning("No .env file found") -def _dotenv_value(name: str, default: str | None = None) -> str | None: +def _dotenv_value( + name: str, + default: str | None = None, + *, + values: Mapping[str, str | None] | None = None, +) -> str | None: """Return a value from the loaded .env file only.""" - value = _dotenv_values.get(name) + source = _dotenv_values if values is None else values + value = source.get(name) if value is None: return default value = value.strip() return value if value else default +def _config_value( + name: str, + default: str | None = None, + *, + values: Mapping[str, str | None] | None = None, +) -> str | None: + """Return .env value first, then the process environment.""" + value = _dotenv_value(name, values=values) + if value is not None: + return value + return os.getenv(name, default) + + class Config: """Configuration class for the conversation app.""" @@ -91,5 +111,29 @@ def __init__(self) -> None: """Initialize the configuration.""" logger.info("Using locked profile '%s' from %s", LOCKED_PROFILE, DEFAULT_PROFILES_DIRECTORY) + def apply_dotenv_values(self, values: Mapping[str, str | None]) -> None: + """Refresh runtime configuration from an explicit dotenv mapping.""" + self.OPENAI_API_KEY = _dotenv_value("OPENAI_API_KEY", values=values) + self.OPENAI_BASE_URL = _dotenv_value("OPENAI_BASE_URL", "https://api.openai.com/v1", values=values) + self.MODEL_NAME = _config_value("MODEL_NAME", "gpt-realtime", values=values) or "gpt-realtime" + self.AUDIO_INPUT_MODE = _config_value("AUDIO_INPUT_MODE", "openai_realtime", values=values) or "openai_realtime" + self.HF_HOME = _config_value("HF_HOME", "./cache", values=values) or "./cache" + self.LOCAL_VISION_MODEL = ( + _config_value("LOCAL_VISION_MODEL", "HuggingFaceTB/SmolVLM2-2.2B-Instruct", values=values) + or "HuggingFaceTB/SmolVLM2-2.2B-Instruct" + ) + self.HF_TOKEN = _config_value("HF_TOKEN", values=values) + + def load_dotenv_file(self, env_path: Path) -> bool: + """Load a dotenv file and refresh all runtime config fields.""" + if not env_path.exists(): + return False + + values = dict(dotenv_values(env_path)) + load_dotenv(dotenv_path=env_path, override=True) + self.apply_dotenv_values(values) + logger.info("Configuration loaded from %s", env_path) + return True + config = Config() diff --git a/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/console.py b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/console.py index ff284fca..6f3ff17f 100644 --- a/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/console.py +++ b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/console.py @@ -55,17 +55,9 @@ def launch(self) -> None: # Try to load an existing instance .env first for Reachy Mini app-shell runs. if self._instance_path: try: - from dotenv import load_dotenv, dotenv_values - env_path = Path(self._instance_path) / ".env" - if env_path.exists(): - load_dotenv(dotenv_path=str(env_path), override=True) - values = dotenv_values(env_path) - config.OPENAI_API_KEY = (values.get("OPENAI_API_KEY") or "").strip() or None - config.OPENAI_BASE_URL = ( - (values.get("OPENAI_BASE_URL") or "").strip() - or "https://api.openai.com/v1" - ) + if config.load_dotenv_file(env_path): + self.handler.set_audio_input_mode(config.AUDIO_INPUT_MODE) except Exception: pass # Instance .env loading is optional; continue with defaults @@ -117,13 +109,16 @@ def close(self) -> None: except Exception as e: logger.debug(f"Error stopping playback (may already be stopped): {e}") - # Now signal async loops to stop - self._stop_event.set() + def stop_async_tasks() -> None: + self._stop_event.set() + for task in self._tasks: + if not task.done(): + task.cancel() - # Cancel all running tasks - for task in self._tasks: - if not task.done(): - task.cancel() + if self._asyncio_loop is not None and self._asyncio_loop.is_running(): + self._asyncio_loop.call_soon_threadsafe(stop_async_tasks) + else: + stop_async_tasks() def clear_audio_queue(self) -> None: """Flush the player's appsrc to drop any queued audio immediately.""" diff --git a/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/main.py b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/main.py index 3382e089..5aeddf94 100644 --- a/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/main.py +++ b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/main.py @@ -7,6 +7,7 @@ import argparse import threading from typing import Any, Dict, List, Optional +from pathlib import Path from reachy_mini import ReachyMini, ReachyMiniApp from reachy_mini_conversation_app.utils import ( @@ -52,6 +53,7 @@ def run( from reachy_mini_conversation_app.config import config from reachy_mini_conversation_app.console import LocalStream from reachy_mini_conversation_app.openai_realtime import ( + AUDIO_MODE_TEXT, AUDIO_MODE_RIVA_STT, AUDIO_MODE_OPENAI_REALTIME, OpenaiRealtimeHandler, @@ -62,6 +64,12 @@ def run( logger = setup_logger(args.debug) logger.info("Starting Reachy Mini Conversation App") + if instance_path: + try: + config.load_dotenv_file(Path(instance_path) / ".env") + except Exception as exc: + logger.debug("Instance .env loading skipped: %s", exc) + if args.no_camera and args.head_tracker is not None: logger.warning( "Head tracking disabled: --no-camera flag is set. " @@ -165,9 +173,12 @@ def run( input_mode_choices = { "OpenAI Realtime": AUDIO_MODE_OPENAI_REALTIME, "Riva STT": AUDIO_MODE_RIVA_STT, - "Text": "text", + "Text": AUDIO_MODE_TEXT, } - initial_input_mode = "Riva STT" if handler.audio_input_mode == AUDIO_MODE_RIVA_STT else "OpenAI Realtime" + mode_labels = {value: label for label, value in input_mode_choices.items()} + initial_input_mode = mode_labels.get(handler.audio_input_mode, "OpenAI Realtime") + initial_text_mode = initial_input_mode == "Text" + stream.webrtc_component.visible = not initial_text_mode input_mode = gr.Radio( choices=list(input_mode_choices), @@ -179,14 +190,13 @@ def run( label="Message", lines=2, max_lines=5, - visible=False, + visible=initial_text_mode, ) - send_button = gr.Button("Send", variant="primary", visible=False) + send_button = gr.Button("Send", variant="primary", visible=initial_text_mode) def switch_input_mode(mode: str) -> tuple[dict[str, Any], dict[str, Any], dict[str, Any]]: text_mode = mode == "Text" - if not text_mode: - handler.set_audio_input_mode(input_mode_choices.get(mode, config.AUDIO_INPUT_MODE)) + handler.set_audio_input_mode(input_mode_choices.get(mode, config.AUDIO_INPUT_MODE)) return ( gr.update(visible=not text_mode), gr.update(visible=text_mode), diff --git a/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/openai_realtime.py b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/openai_realtime.py index ad173807..b0ef9cfa 100644 --- a/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/openai_realtime.py +++ b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/openai_realtime.py @@ -37,7 +37,8 @@ OPEN_AI_OUTPUT_SAMPLE_RATE: Final[Literal[24000]] = 24000 AUDIO_MODE_OPENAI_REALTIME: Final = "openai_realtime" AUDIO_MODE_RIVA_STT: Final = "riva_stt" -AUDIO_INPUT_MODES: Final = {AUDIO_MODE_OPENAI_REALTIME, AUDIO_MODE_RIVA_STT} +AUDIO_MODE_TEXT: Final = "text" +AUDIO_INPUT_MODES: Final = {AUDIO_MODE_OPENAI_REALTIME, AUDIO_MODE_RIVA_STT, AUDIO_MODE_TEXT} # Cost tracking from usage data (pricing as of Feb 2026 https://openai.com/api/pricing/) AUDIO_INPUT_COST_PER_1M = 32.0 @@ -56,6 +57,8 @@ def _normalize_audio_input_mode(audio_input_mode: str) -> str: return AUDIO_MODE_OPENAI_REALTIME if normalized in {"riva", "riva_asr", "riva_stt"}: return AUDIO_MODE_RIVA_STT + if normalized in {"chat", "chat_completions", "text"}: + return AUDIO_MODE_TEXT if normalized not in AUDIO_INPUT_MODES: logger.warning("Unknown AUDIO_INPUT_MODE=%r; using %s", audio_input_mode, AUDIO_MODE_OPENAI_REALTIME) return AUDIO_MODE_OPENAI_REALTIME @@ -620,6 +623,11 @@ async def _response_sender_loop(self) -> None: self._last_response_rejected = False try: + # Mark the just-requested response as active immediately. + # The server's response.created event can arrive after + # response.create() returns, so waiting on the old set + # event here would let the next queued response race ahead. + self._response_done_event.clear() await self.connection.response.create(**kwargs) except Exception as e: logger.debug("_response_sender_loop: send failed: %s", e) @@ -993,6 +1001,8 @@ async def receive(self, frame: Tuple[int, NDArray[np.int16]]) -> None: if self.audio_input_mode == AUDIO_MODE_RIVA_STT: await self._receive_riva_stt(frame) return + if self.audio_input_mode == AUDIO_MODE_TEXT: + return await self._receive_openai_realtime_audio(frame) @@ -1036,9 +1046,21 @@ async def _receive_riva_stt(self, frame: Tuple[int, NDArray[np.int16]]) -> None: on_final_transcript=self._handle_riva_final_transcript, on_partial_transcript=self._handle_riva_partial_transcript, ) - await self._riva_transcriber.start(input_sample_rate) + try: + await self._riva_transcriber.start(input_sample_rate) + except RuntimeError as exc: + self._riva_transcriber = None + await self._report_microphone_error_once(f"[error] Riva STT stream is not available: {exc}") + return - await self._riva_transcriber.send_audio(audio_frame.tobytes()) + try: + if await self._riva_transcriber.send_audio(audio_frame.tobytes()) is False: + self._riva_transcriber = None + await self._report_microphone_error_once("[error] Riva STT stream is not running.") + except RuntimeError as exc: + logger.warning("Riva STT stream stopped: %s", exc) + self._riva_transcriber = None + await self._report_microphone_error_once(f"[error] Riva STT stream is not available: {exc}") def _prepare_audio_frame( self, diff --git a/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/riva_asr.py b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/riva_asr.py index 134ed179..9913317b 100644 --- a/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/riva_asr.py +++ b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/riva_asr.py @@ -64,7 +64,6 @@ def __init__( self._loop: asyncio.AbstractEventLoop | None = None self._sample_rate_hertz: int | None = None self._last_partial = "" - self._last_final = "" async def start(self, sample_rate_hertz: int) -> None: """Start the background Riva stream.""" @@ -76,10 +75,11 @@ async def start(self, sample_rate_hertz: int) -> None: self._thread = threading.Thread(target=self._run, name="riva-asr-stream", daemon=True) self._thread.start() - async def send_audio(self, audio_bytes: bytes) -> None: + async def send_audio(self, audio_bytes: bytes) -> bool: """Send one PCM16 audio chunk to the Riva stream.""" if self._thread is None or not self._thread.is_alive(): - raise RuntimeError("Riva ASR stream is not running") + logger.debug("Dropping Riva audio frame because the ASR stream is not running") + return False try: self._audio_queue.put_nowait(audio_bytes) @@ -89,6 +89,7 @@ async def send_audio(self, audio_bytes: bytes) -> None: except queue.Empty: pass self._audio_queue.put_nowait(audio_bytes) + return True async def stop(self) -> None: """Close the stream and wait briefly for the worker to exit.""" @@ -175,9 +176,6 @@ def _schedule_partial(self, transcript: str) -> None: asyncio.run_coroutine_threadsafe(self._on_partial_transcript(transcript), self._loop) def _schedule_final(self, transcript: str) -> None: - if transcript == self._last_final: - return - self._last_final = transcript if self._loop is None: return asyncio.run_coroutine_threadsafe(self._on_final_transcript(transcript), self._loop) @@ -187,6 +185,8 @@ def _env_flag(name: str, default: bool = False) -> bool: raw = os.getenv(name) if raw is None: return default + if not raw.strip(): + return default return raw.strip().lower() in {"1", "true", "yes", "on"} diff --git a/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/tools/background_tool_manager.py b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/tools/background_tool_manager.py index c7859c81..caa81508 100644 --- a/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/tools/background_tool_manager.py +++ b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/tools/background_tool_manager.py @@ -205,7 +205,11 @@ async def _run_tool( tool_call_routine: ToolCallRoutine, ) -> None: """Execute the tool and handle completion.""" - result: dict[str, Any] = await tool_call_routine(self) + try: + result: dict[str, Any] = await tool_call_routine(self) + except asyncio.CancelledError: + result = {"error": "Tool cancelled"} + bg_tool.completed_at = time.monotonic() error = result.get("error") @@ -333,9 +337,16 @@ async def shutdown(self) -> None: pass self._lifecycle_tasks.clear() + running_tool_tasks: list[asyncio.Task[None]] = [] for tool_id in list(self._tools): + tool = self._tools.get(tool_id) + if tool is not None and tool.status == ToolState.RUNNING and tool._task is not None: + running_tool_tasks.append(tool._task) await self.cancel_tool(tool_id, log=False) + if running_tool_tasks: + await asyncio.gather(*running_tool_tasks, return_exceptions=True) + logger.info("BackgroundToolManager shut down") async def timeout_tools(self) -> int: diff --git a/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/tools/move_head.py b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/tools/move_head.py index 4633572e..dbf1f4c1 100644 --- a/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/tools/move_head.py +++ b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/tools/move_head.py @@ -53,7 +53,7 @@ async def __call__(self, deps: ToolDependencies, **kwargs: Any) -> Dict[str, Any # Get current state for interpolation current_head_pose = deps.reachy_mini.get_current_head_pose() - _, current_antennas = deps.reachy_mini.get_current_joint_positions() + head_joints, current_antennas = deps.reachy_mini.get_current_joint_positions() # Create goto move goto_move = GotoQueueMove( @@ -65,7 +65,7 @@ async def __call__(self, deps: ToolDependencies, **kwargs: Any) -> Dict[str, Any current_antennas[1], ), # Skip body_yaw target_body_yaw=0, # Reset body yaw - start_body_yaw=current_antennas[0], # body_yaw is first in joint positions + start_body_yaw=head_joints[0], duration=deps.motion_duration_s, ) diff --git a/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/vision/yolo_head_tracker.py b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/vision/yolo_head_tracker.py index 3619bc7e..97ceebfa 100644 --- a/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/vision/yolo_head_tracker.py +++ b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/vision/yolo_head_tracker.py @@ -18,14 +18,19 @@ logger = logging.getLogger(__name__) +DEFAULT_YOLO_FACE_MODEL_REPO = "AdamCodd/YOLOv11n-face-detection" +DEFAULT_YOLO_FACE_MODEL_REVISION = "0e97fea5eacb1460b35725c929d813c7095841b5" +DEFAULT_YOLO_FACE_MODEL_FILENAME = "model.onnx" + class HeadTracker: """Lightweight head tracker using YOLO for face detection.""" def __init__( self, - model_repo: str = "AdamCodd/YOLOv11n-face-detection", - model_filename: str = "model.pt", + model_repo: str = DEFAULT_YOLO_FACE_MODEL_REPO, + model_filename: str = DEFAULT_YOLO_FACE_MODEL_FILENAME, + model_revision: str = DEFAULT_YOLO_FACE_MODEL_REVISION, confidence_threshold: float = 0.3, device: str = "cpu", ) -> None: @@ -34,6 +39,7 @@ def __init__( Args: model_repo: HuggingFace model repository model_filename: Model file name + model_revision: Pinned Hugging Face commit SHA for the model repository confidence_threshold: Minimum confidence for face detection device: Device to run inference on ('cpu' or 'cuda') @@ -42,9 +48,9 @@ def __init__( try: # Download and load YOLO model - model_path = hf_hub_download(repo_id=model_repo, filename=model_filename) + model_path = hf_hub_download(repo_id=model_repo, filename=model_filename, revision=model_revision) self.model = YOLO(model_path).to(device) - logger.info(f"YOLO face detection model loaded from {model_repo}") + logger.info("YOLO face detection model loaded from %s@%s", model_repo, model_revision) except Exception as e: logger.error(f"Failed to load YOLO model: {e}") raise diff --git a/projects/reachy-mini-openshell/tests/test_openai_realtime.py b/projects/reachy-mini-openshell/tests/test_openai_realtime.py index 06a5e5e3..40bc25cd 100644 --- a/projects/reachy-mini-openshell/tests/test_openai_realtime.py +++ b/projects/reachy-mini-openshell/tests/test_openai_realtime.py @@ -412,6 +412,65 @@ def test_handler_copies_share_audio_input_mode() -> None: assert copied_handler.audio_input_mode == rt_mod.AUDIO_MODE_RIVA_STT +@pytest.mark.asyncio +async def test_receive_text_mode_ignores_microphone_frames() -> None: + """Text input mode should not open an audio connection when WebRTC is hidden.""" + deps = ToolDependencies(reachy_mini=MagicMock(), movement_manager=MagicMock()) + handler = rt_mod.OpenaiRealtimeHandler(deps, audio_input_mode=rt_mod.AUDIO_MODE_TEXT) + + await handler.receive((24000, np.array([0, 1000], dtype=np.int16))) + + assert handler.connection is None + assert handler.output_queue.empty() + + +@pytest.mark.asyncio +async def test_receive_riva_mode_does_not_raise_when_transcriber_stops(monkeypatch: Any) -> None: + """A failed Riva worker should report through callbacks, not escape from receive().""" + + class StoppedRivaTranscriber: + async def start(self, _sample_rate_hertz: int) -> None: + return None + + async def send_audio(self, _audio_bytes: bytes) -> None: + raise RuntimeError("Riva ASR stream is not running") + + monkeypatch.setattr(rt_mod, "RivaStreamingTranscriber", lambda **_kw: StoppedRivaTranscriber()) + + deps = ToolDependencies(reachy_mini=MagicMock(), movement_manager=MagicMock()) + handler = rt_mod.OpenaiRealtimeHandler(deps, audio_input_mode=rt_mod.AUDIO_MODE_RIVA_STT) + + await handler.receive((16000, np.array([0, 1000], dtype=np.int16))) + + output = await asyncio.wait_for(handler.output_queue.get(), timeout=1) + assert isinstance(output, rt_mod.AdditionalOutputs) + assert "Riva STT stream is not available" in output.args[0]["content"] + + +@pytest.mark.asyncio +async def test_receive_riva_mode_resets_dead_transcriber(monkeypatch: Any) -> None: + """Dead Riva streams should be cleared so later frames can restart the stream.""" + + class DeadRivaTranscriber: + async def start(self, _sample_rate_hertz: int) -> None: + return None + + async def send_audio(self, _audio_bytes: bytes) -> bool: + return False + + monkeypatch.setattr(rt_mod, "RivaStreamingTranscriber", lambda **_kw: DeadRivaTranscriber()) + + deps = ToolDependencies(reachy_mini=MagicMock(), movement_manager=MagicMock()) + handler = rt_mod.OpenaiRealtimeHandler(deps, audio_input_mode=rt_mod.AUDIO_MODE_RIVA_STT) + + await handler.receive((16000, np.array([0, 1000], dtype=np.int16))) + + output = await asyncio.wait_for(handler.output_queue.get(), timeout=1) + assert isinstance(output, rt_mod.AdditionalOutputs) + assert output.args[0]["content"] == "[error] Riva STT stream is not running." + assert handler._riva_transcriber is None + + @pytest.mark.asyncio async def test_send_text_message_reports_missing_dotenv_key(monkeypatch: Any) -> None: """Text mode reports the actual missing-key problem instead of a generic connection error.""" @@ -692,7 +751,6 @@ async def test_response_sender_retries_on_active_response_rejection(monkeypatch: event_queue: asyncio.Queue[Any] = asyncio.Queue() response_create_log: list[tuple[int, dict[str, Any]]] = [] - handler_ref: list[Any] = [] # ---- Fake event / error objects mirroring the OpenAI SDK shapes ---- @@ -729,16 +787,15 @@ class FakeResponseAPI: def __init__(self) -> None: self._call_count = 0 self._serialization_violations: list[int] = [] + self._server_active = False async def create(self, **kwargs: Any) -> None: self._call_count += 1 n = self._call_count response_create_log.append((n, kwargs)) - h = handler_ref[0] - # Real backend rejects when a response is already active. - if not h._response_done_event.is_set(): + if self._server_active: self._serialization_violations.append(n) await event_queue.put( FakeEvent( @@ -757,6 +814,7 @@ async def create(self, **kwargs: Any) -> None: await event_queue.put( FakeEvent("response.done", response=MagicMock()) ) + self._server_active = False return # Intentional rejections (simulating a race where another @@ -777,11 +835,13 @@ async def create(self, **kwargs: Any) -> None: ) await asyncio.sleep(0) else: + self._server_active = True await event_queue.put(FakeEvent("response.created")) await event_queue.put( FakeEvent("response.done", response=MagicMock()) ) + self._server_active = False async def cancel(self, **_kw: Any) -> None: @@ -851,7 +911,6 @@ async def _fake_dispatch( deps = ToolDependencies(reachy_mini=MagicMock(), movement_manager=MagicMock()) handler = rt_mod.OpenaiRealtimeHandler(deps) - handler_ref.append(handler) asyncio.create_task(handler.start_up()) @@ -921,6 +980,46 @@ async def _fake_dispatch( # ---- Response creation timeout guard tests ---- +@pytest.mark.asyncio +async def test_response_sender_marks_response_active_before_create_returns() -> None: + """The sender should not wait for response.created before blocking the next response.""" + deps = ToolDependencies(reachy_mini=MagicMock(), movement_manager=MagicMock()) + handler = rt_mod.OpenaiRealtimeHandler(deps) + + create_started = asyncio.Event() + create_returned = asyncio.Event() + allow_done = asyncio.Event() + event_states_at_create: list[bool] = [] + + class FakeResponse: + async def create(self, **_kw: Any) -> None: + event_states_at_create.append(handler._response_done_event.is_set()) + create_started.set() + await allow_done.wait() + handler._response_done_event.set() + create_returned.set() + + async def cancel(self, **_kw: Any) -> None: + pass + + fake_conn = MagicMock() + fake_conn.response = FakeResponse() + handler.connection = fake_conn + + await handler._safe_response_create(instructions="req1") + sender_task = asyncio.create_task(handler._response_sender_loop()) + + await asyncio.wait_for(create_started.wait(), timeout=1) + assert event_states_at_create == [False] + + allow_done.set() + await asyncio.wait_for(create_returned.wait(), timeout=1) + + handler.connection = None + await handler._safe_response_create(instructions="stop") + await asyncio.wait_for(sender_task, timeout=1) + + @pytest.mark.asyncio async def test_response_sender_loop_times_out_waiting_for_response_done( monkeypatch: Any, caplog: Any, diff --git a/projects/reachy-mini-openshell/tests/test_riva_asr.py b/projects/reachy-mini-openshell/tests/test_riva_asr.py index 9a28d01b..0779e274 100644 --- a/projects/reachy-mini-openshell/tests/test_riva_asr.py +++ b/projects/reachy-mini-openshell/tests/test_riva_asr.py @@ -1,4 +1,10 @@ -from reachy_mini_conversation_app.riva_asr import RivaAsrConfig +import sys +import asyncio +from collections.abc import Callable + +import pytest + +from reachy_mini_conversation_app.riva_asr import RivaAsrConfig, RivaStreamingTranscriber def test_riva_config_accepts_http_endpoint_url(monkeypatch): @@ -32,3 +38,82 @@ def test_riva_use_ssl_env_overrides_endpoint_url_scheme(monkeypatch): assert config.server_uri == "riva.example.test:443" assert config.use_ssl is False + + +def test_blank_riva_use_ssl_env_keeps_endpoint_url_inference(monkeypatch): + """Blank RIVA_USE_SSL values should not disable https:// inference.""" + monkeypatch.setenv("RIVA_SERVER_URI", "https://riva.example.test:443") + monkeypatch.setenv("RIVA_USE_SSL", "") + + config = RivaAsrConfig.from_env() + + assert config.server_uri == "riva.example.test:443" + assert config.use_ssl is True + + +@pytest.mark.asyncio +async def test_riva_missing_dependency_reports_error_without_send_audio_raise(monkeypatch): + """Missing nvidia-riva-client should report through callbacks without crashing send_audio.""" + monkeypatch.setitem(sys.modules, "riva", None) + delivered: list[str] = [] + + async def on_final(transcript: str) -> None: + delivered.append(transcript) + + transcriber = RivaStreamingTranscriber( + config=RivaAsrConfig( + server_uri="localhost:50051", + language_code="en-US", + model="", + use_ssl=False, + ssl_cert=None, + authorization=None, + metadata=(), + interim_results=True, + automatic_punctuation=True, + ), + on_final_transcript=on_final, + ) + + await transcriber.start(16000) + await asyncio.wait_for(_wait_until(lambda: bool(delivered)), timeout=1) + await transcriber.send_audio(b"\x00\x00") + + assert "Riva STT mode requires the optional dependency" in delivered[0] + + +@pytest.mark.asyncio +async def test_repeated_final_transcripts_are_delivered() -> None: + """Separate identical final utterances should both be routed to the text path.""" + delivered: list[str] = [] + + async def on_final(transcript: str) -> None: + delivered.append(transcript) + + transcriber = RivaStreamingTranscriber( + config=RivaAsrConfig( + server_uri="localhost:50051", + language_code="en-US", + model="", + use_ssl=False, + ssl_cert=None, + authorization=None, + metadata=(), + interim_results=True, + automatic_punctuation=True, + ), + on_final_transcript=on_final, + ) + transcriber._loop = asyncio.get_running_loop() + + transcriber._schedule_final("yes") + transcriber._schedule_final("yes") + await asyncio.wait_for(_wait_until(lambda: len(delivered) == 2), timeout=1) + + assert delivered == ["yes", "yes"] + + +async def _wait_until(predicate: Callable[[], bool]) -> None: + """Yield until predicate returns true.""" + while not predicate(): + await asyncio.sleep(0) diff --git a/projects/reachy-mini-openshell/tests/tools/test_background_tool_manager.py b/projects/reachy-mini-openshell/tests/tools/test_background_tool_manager.py index 90b7a7f1..7f6e38a6 100644 --- a/projects/reachy-mini-openshell/tests/tools/test_background_tool_manager.py +++ b/projects/reachy-mini-openshell/tests/tools/test_background_tool_manager.py @@ -517,6 +517,37 @@ async def test_startup_multiple_callbacks(self, manager: BackgroundToolManager) assert cb1.call_count == 1 assert cb2.call_count == 1 + @pytest.mark.asyncio + async def test_shutdown_waits_for_running_tool_tasks(self, manager: BackgroundToolManager) -> None: + """Shutdown should cancel and drain running tool tasks before returning.""" + started = asyncio.Event() + cancelled = asyncio.Event() + routine = MagicMock(spec=ToolCallRoutine) + routine.tool_name = "long_tool" + routine.args_json_str = "{}" + + async def _call(_manager: BackgroundToolManager) -> dict[str, Any]: + started.set() + try: + await asyncio.sleep(10) + except asyncio.CancelledError: + cancelled.set() + raise + return {"ok": True} + + routine.__call__ = _call # type: ignore[method-assign] + routine.side_effect = _call + + bg = await manager.start_tool("c1", routine, is_idle_tool_call=False) + await asyncio.wait_for(started.wait(), timeout=1) + + await manager.shutdown() + + assert cancelled.is_set() + assert bg._task is not None + assert bg._task.done() + assert bg.status == ToolState.CANCELLED + class TestNotificationQueue: """Verify notifications are enqueued on tool completion or failure.""" diff --git a/projects/reachy-mini-openshell/uv.lock b/projects/reachy-mini-openshell/uv.lock index b4ec368f..f9160eb6 100644 --- a/projects/reachy-mini-openshell/uv.lock +++ b/projects/reachy-mini-openshell/uv.lock @@ -486,7 +486,7 @@ name = "exceptiongroup" version = "1.3.1" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "typing-extensions", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "typing-extensions", marker = "(python_full_version < '3.11' and sys_platform == 'darwin') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, ] sdist = { url = "https://files.pythonhosted.org/packages/50/79/66800aadf48771f6b62f7eb014e352e5d06856655206165d775e675a02c9/exceptiongroup-1.3.1.tar.gz", hash = "sha256:8b412432c6055b0b7d14c310000ae93352ed6754f70fa8f7c34141f91c4e3219", size = 30371, upload-time = "2025-11-21T23:01:54.787Z" } wheels = [ @@ -1551,6 +1551,46 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/21/53/0988b79ee818cb2b8792abeda5a75156946b64da7a2ef2719b9d2068a34f/nvidia_riva_client-2.26.0-py3-none-any.whl", hash = "sha256:16ffc98266fa7be7261e0675de6b7028e7f973c2ac3dfd679668148ff497cc0c", size = 57539, upload-time = "2026-05-28T06:11:43.205Z" }, ] +[[package]] +name = "onnxruntime" +version = "1.24.3" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.11' and sys_platform == 'darwin'", +] +dependencies = [ + { name = "flatbuffers", marker = "(python_full_version < '3.11' and sys_platform == 'darwin') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.11' and sys_platform == 'darwin') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "packaging", marker = "(python_full_version < '3.11' and sys_platform == 'darwin') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "protobuf", version = "4.25.9", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.11' and sys_platform == 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision') or (python_full_version < '3.11' and sys_platform == 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision') or (python_full_version < '3.11' and sys_platform == 'darwin' and extra != 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "protobuf", version = "6.33.5", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.11' and sys_platform == 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "sympy", marker = "(python_full_version < '3.11' and sys_platform == 'darwin') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/15/41/3253db975a90c3ce1d475e2a230773a21cd7998537f0657947df6fb79861/onnxruntime-1.24.3-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:3e6456801c66b095c5cd68e690ca25db970ea5202bd0c5b84a2c3ef7731c5a3c", size = 17332766, upload-time = "2026-03-05T17:18:59.714Z" }, + { url = "https://files.pythonhosted.org/packages/d0/7f/dfdc4e52600fde4c02d59bfe98c4b057931c1114b701e175aee311a9bc11/onnxruntime-1.24.3-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:0d244227dc5e00a9ae15a7ac1eba4c4460d7876dfecafe73fb00db9f1d914d91", size = 17342578, upload-time = "2026-03-05T17:19:02.403Z" }, +] + +[[package]] +name = "onnxruntime" +version = "1.27.0" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.12' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and sys_platform == 'darwin'", +] +dependencies = [ + { name = "flatbuffers", marker = "(python_full_version >= '3.11' and sys_platform == 'darwin') or (python_full_version < '3.11' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version < '3.11' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.11' and sys_platform == 'darwin') or (python_full_version < '3.11' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version < '3.11' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "packaging", marker = "(python_full_version >= '3.11' and sys_platform == 'darwin') or (python_full_version < '3.11' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version < '3.11' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "protobuf", version = "4.25.9", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.11' and sys_platform == 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision') or (python_full_version >= '3.11' and sys_platform == 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision') or (python_full_version >= '3.11' and sys_platform == 'darwin' and extra != 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version < '3.11' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version < '3.11' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "protobuf", version = "6.33.5", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.11' and sys_platform == 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version < '3.11' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version < '3.11' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/d4/e4/5353d7e09ced4a8f473f843223fc75d726b2b5519dcefc12f22a6c92852d/onnxruntime-1.27.0-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:8ba14a38c570087f3cdb8cfba33f7a38a1e826c1e5b29e17c28ceda0cc910016", size = 18416484, upload-time = "2026-06-15T22:43:43.894Z" }, + { url = "https://files.pythonhosted.org/packages/c3/b7/dd3a524ed93a820dff1af902d0412957ab12499953333e9daa01af5bc480/onnxruntime-1.27.0-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:a14c2ce45312def86b77aea651f46565e45960cf5f0721bfdff449165086ab76", size = 18433506, upload-time = "2026-06-15T22:43:47.026Z" }, +] + [[package]] name = "openai" version = "2.44.0" @@ -2181,6 +2221,8 @@ dependencies = [ all-vision = [ { name = "mediapipe", marker = "sys_platform == 'darwin'" }, { name = "num2words", marker = "sys_platform == 'darwin'" }, + { name = "onnxruntime", version = "1.24.3", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.11' and sys_platform == 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision') or (python_full_version < '3.11' and sys_platform == 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision') or (python_full_version < '3.11' and sys_platform == 'darwin' and extra != 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "onnxruntime", version = "1.27.0", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.11' and sys_platform == 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision') or (python_full_version >= '3.11' and sys_platform == 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision') or (python_full_version >= '3.11' and sys_platform == 'darwin' and extra != 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version < '3.11' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version < '3.11' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, { name = "supervision", marker = "sys_platform == 'darwin'" }, { name = "torch", marker = "sys_platform == 'darwin'" }, { name = "transformers", marker = "sys_platform == 'darwin'" }, @@ -2198,6 +2240,8 @@ riva = [ { name = "nvidia-riva-client", marker = "sys_platform == 'darwin'" }, ] yolo-vision = [ + { name = "onnxruntime", version = "1.24.3", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.11' and sys_platform == 'darwin') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version >= '3.11' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, + { name = "onnxruntime", version = "1.27.0", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.11' and sys_platform == 'darwin') or (python_full_version < '3.11' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (python_full_version < '3.11' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (sys_platform != 'darwin' and extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, { name = "supervision", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, { name = "ultralytics", marker = "sys_platform == 'darwin' or (extra == 'extra-28-reachy-mini-conversation-app-all-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva') or (extra == 'extra-28-reachy-mini-conversation-app-mediapipe-vision' and extra == 'extra-28-reachy-mini-conversation-app-riva')" }, ] @@ -2226,6 +2270,8 @@ requires-dist = [ { name = "num2words", marker = "extra == 'all-vision'" }, { name = "num2words", marker = "extra == 'local-vision'" }, { name = "nvidia-riva-client", marker = "extra == 'riva'", specifier = ">=2.19,<3" }, + { name = "onnxruntime", marker = "extra == 'all-vision'" }, + { name = "onnxruntime", marker = "extra == 'yolo-vision'" }, { name = "openai", specifier = ">=2.1" }, { name = "opencv-python", specifier = ">=4.12.0.88" }, { name = "python-dotenv" }, From b798e35c5641ea7419f8baba3e00e06c9cafa634 Mon Sep 17 00:00:00 2001 From: Johnny Greco Date: Fri, 26 Jun 2026 16:07:11 -0400 Subject: [PATCH 16/22] Finalize Reachy conversation backend refactor --- .gitignore | 1 + .../reachy-mini-conversation-simulator.md | 254 ++- projects/reachy-mini-openshell/.env.example | 74 +- .../.env.hf-realtime.example | 21 + .../.env.local-stt.example | 28 + .../.env.openai-realtime.example | 17 + projects/reachy-mini-openshell/README.md | 383 +++- projects/reachy-mini-openshell/pyproject.toml | 12 +- .../scripts/fake_openai_backend.py | 149 ++ .../scripts/smoke-local-stt.sh | 300 +++ .../scripts/start-local.sh | 3 + .../reachy_mini_conversation_app/__init__.py | 12 +- .../audio/__init__.py | 2 +- .../audio/mic_phrase.py | 87 + .../reachy_mini_conversation_app/audio/pcm.py | 141 ++ .../backend_check.py | 786 +++++++ .../backend_runtime.py | 209 ++ .../camera_worker.py | 15 +- .../chat_completions.py | 270 +++ .../reachy_mini_conversation_app/config.py | 491 ++++- .../reachy_mini_conversation_app/console.py | 62 +- ...nai_realtime.py => conversation_stream.py} | 777 ++++--- .../dance_emotion_moves.py | 4 +- .../goto_queue_move.py | 4 +- .../local_stt_backend.py | 101 + .../src/reachy_mini_conversation_app/main.py | 83 +- .../src/reachy_mini_conversation_app/moves.py | 34 +- .../sweep_look.py | 4 +- .../realtime_backends.py | 162 ++ .../reachy_mini_conversation_app/riva_asr.py | 220 -- .../speech_endpoints.py | 110 + .../tools/background_tool_manager.py | 9 +- .../tools/camera.py | 6 +- .../tools/core_tools.py | 4 +- .../tools/move_head.py | 2 +- .../tools/play_emotion.py | 70 +- .../tools/task_status.py | 4 +- .../src/reachy_mini_conversation_app/utils.py | 12 +- .../vision/__init__.py | 2 +- .../vision/processors.py | 65 +- .../vision/yolo_head_tracker.py | 6 +- .../tests/audio/test_pcm.py | 34 + .../tests/test_backend_check.py | 1007 +++++++++ .../tests/test_backend_runtime.py | 65 + .../tests/test_config.py | 464 +++++ .../tests/test_conversation_stream.py | 1826 +++++++++++++++++ .../tests/test_fake_openai_backend.py | 83 + .../tests/test_local_stt_backend.py | 105 + .../reachy-mini-openshell/tests/test_main.py | 44 + .../tests/test_mic_phrase.py | 61 + .../tests/test_openai_realtime.py | 1129 ---------- .../tests/test_package.py | 7 + .../tests/test_realtime_backends.py | 91 + .../tests/test_riva_asr.py | 119 -- .../tests/test_speech_endpoints.py | 103 + .../tools/test_background_tool_manager.py | 2 - .../tests/tools/test_play_emotion.py | 31 + .../tests/vision/test_processors.py | 39 +- projects/reachy-mini-openshell/uv.lock | 947 ++++----- 59 files changed, 8369 insertions(+), 2784 deletions(-) create mode 100644 projects/reachy-mini-openshell/.env.hf-realtime.example create mode 100644 projects/reachy-mini-openshell/.env.local-stt.example create mode 100644 projects/reachy-mini-openshell/.env.openai-realtime.example create mode 100755 projects/reachy-mini-openshell/scripts/fake_openai_backend.py create mode 100755 projects/reachy-mini-openshell/scripts/smoke-local-stt.sh create mode 100644 projects/reachy-mini-openshell/src/reachy_mini_conversation_app/audio/mic_phrase.py create mode 100644 projects/reachy-mini-openshell/src/reachy_mini_conversation_app/audio/pcm.py create mode 100644 projects/reachy-mini-openshell/src/reachy_mini_conversation_app/backend_check.py create mode 100644 projects/reachy-mini-openshell/src/reachy_mini_conversation_app/backend_runtime.py create mode 100644 projects/reachy-mini-openshell/src/reachy_mini_conversation_app/chat_completions.py rename projects/reachy-mini-openshell/src/reachy_mini_conversation_app/{openai_realtime.py => conversation_stream.py} (63%) create mode 100644 projects/reachy-mini-openshell/src/reachy_mini_conversation_app/local_stt_backend.py create mode 100644 projects/reachy-mini-openshell/src/reachy_mini_conversation_app/realtime_backends.py delete mode 100644 projects/reachy-mini-openshell/src/reachy_mini_conversation_app/riva_asr.py create mode 100644 projects/reachy-mini-openshell/src/reachy_mini_conversation_app/speech_endpoints.py create mode 100644 projects/reachy-mini-openshell/tests/audio/test_pcm.py create mode 100644 projects/reachy-mini-openshell/tests/test_backend_check.py create mode 100644 projects/reachy-mini-openshell/tests/test_backend_runtime.py create mode 100644 projects/reachy-mini-openshell/tests/test_config.py create mode 100644 projects/reachy-mini-openshell/tests/test_conversation_stream.py create mode 100644 projects/reachy-mini-openshell/tests/test_fake_openai_backend.py create mode 100644 projects/reachy-mini-openshell/tests/test_local_stt_backend.py create mode 100644 projects/reachy-mini-openshell/tests/test_main.py create mode 100644 projects/reachy-mini-openshell/tests/test_mic_phrase.py delete mode 100644 projects/reachy-mini-openshell/tests/test_openai_realtime.py create mode 100644 projects/reachy-mini-openshell/tests/test_package.py create mode 100644 projects/reachy-mini-openshell/tests/test_realtime_backends.py delete mode 100644 projects/reachy-mini-openshell/tests/test_riva_asr.py create mode 100644 projects/reachy-mini-openshell/tests/test_speech_endpoints.py create mode 100644 projects/reachy-mini-openshell/tests/tools/test_play_emotion.py diff --git a/.gitignore b/.gitignore index f1304db4..245e108a 100644 --- a/.gitignore +++ b/.gitignore @@ -13,6 +13,7 @@ Thumbs.db .env .env.* !.env.example +!.env.*.example *.local *.key *.pem diff --git a/docs/research/reachy-mini-conversation-simulator.md b/docs/research/reachy-mini-conversation-simulator.md index 51671e42..545e3084 100644 --- a/docs/research/reachy-mini-conversation-simulator.md +++ b/docs/research/reachy-mini-conversation-simulator.md @@ -14,9 +14,10 @@ for the broader app family: [pollen-robotics/reachy_mini_conversation_app](https - macOS with Python 3.10, 3.11, or 3.12. Python 3.12 is the recommended local version. - `uv`. -- An API key for conversation. `OpenAI Realtime` microphone mode requires an - OpenAI-compatible Realtime model. `Riva STT` and `Text` mode can use - OpenAI-compatible Chat Completions providers such as NVIDIA NIM. +- Provider credentials for the backend you select in `.env`. The app supports + OpenAI Realtime, the default Pollen/Hugging Face realtime path, and a local + STT cascade that combines an OpenAI-compatible transcription endpoint, Chat + Completions, and TTS. - This repository checked out locally. The local dependency set includes `reachy-mini[mujoco]==1.8.0`, so the MuJoCo @@ -31,34 +32,197 @@ cd projects/reachy-mini-openshell uv venv --python 3.12 source .venv/bin/activate uv sync -cp .env.example .env ``` -Edit `.env`. For OpenAI Realtime microphone and text input, use: +Choose one backend starter and copy it to `.env`: ```sh -OPENAI_API_KEY=your_api_key_here -OPENAI_BASE_URL=https://api.openai.com/v1 -MODEL_NAME=gpt-realtime -AUDIO_INPUT_MODE=openai_realtime +cp .env.openai-realtime.example .env +# or: cp .env.hf-realtime.example .env +# or: cp .env.local-stt.example .env ``` -For NVIDIA-hosted text input through an OpenAI-compatible Chat Completions -endpoint, reference your existing NVIDIA API key environment variable: +`.env.example` is the combined local-STT starter used by the launcher when no +`.env` exists. + +For OpenAI Realtime microphone and text input, use: + +```sh +BACKEND_PROVIDER=openai_realtime +OPENAI_REALTIME_BASE_URL=https://api.openai.com/v1 +OPENAI_REALTIME_MODEL=gpt-realtime +OPENAI_REALTIME_VOICE=cedar +``` + +OpenAI Realtime uses the standard, globally exported `OPENAI_API_KEY` directly. +Do not copy the global key into `.env` for the normal OpenAI path. Start the app +from a shell where `OPENAI_API_KEY` is already exported. Set +`OPENAI_REALTIME_API_KEY` in `.env` only when this app should use a different +key from the global OpenAI key. + +For the default Pollen/Hugging Face realtime path, use: + +```sh +BACKEND_PROVIDER=hf_realtime +HF_REALTIME_CONNECTION_MODE=deployed +HF_REALTIME_MODEL= +HF_REALTIME_VOICE=Aiden +``` + +For a local Hugging Face realtime backend, point at the backend websocket: + +```sh +BACKEND_PROVIDER=hf_realtime +HF_REALTIME_CONNECTION_MODE=local +HF_REALTIME_WS_URL=ws://127.0.0.1:8765/v1/realtime +``` + +For a local STT cascade, combine an OpenAI-compatible transcription endpoint, a +Chat Completions model, and a TTS endpoint: ```sh -OPENAI_API_KEY=${NVIDIA_API_KEY} -OPENAI_BASE_URL=https://inference-api.nvidia.com/v1 -MODEL_NAME=azure/anthropic/claude-opus-4-8 -AUDIO_INPUT_MODE=text +BACKEND_PROVIDER=local_stt +CHAT_API_KEY=${NVIDIA_INFERENCE_API_KEY} +CHAT_BASE_URL=https://inference-api.nvidia.com/v1 +CHAT_MODEL_NAME=azure/anthropic/claude-opus-4-8 +STT_API_KEY=not-needed +STT_BASE_URL=http://127.0.0.1:9000/v1 +STT_MODEL_NAME=whisper-1 +TTS_API_KEY=${OPENAI_API_KEY} +TTS_BASE_URL=https://api.openai.com/v1 +TTS_MODEL_NAME=gpt-4o-mini-tts +TTS_VOICE=cedar ``` Use the exact model ID exposed by your provider. For example, NVIDIA model IDs can look like `nvidia/nemotron-3-super-120b-a12b` or `azure/anthropic/claude-opus-4-8`, depending on the endpoint and account. +The API key values can reference exported system environment variables using +dotenv syntax, for example `${NVIDIA_INFERENCE_API_KEY}`. + +Backend routing and model selection are loaded from `.env`. Secret values can +be literal dotenv values, dotenv references to exported variables, or exported +`OPENAI_API_KEY` for OpenAI Realtime. The standard OpenAI Realtime path uses +the global `OPENAI_API_KEY` directly. The browser UI does not include fields +for credentials, endpoint routing, or model selection. + +`BACKEND_PROVIDER` must be set exactly to `openai_realtime`, `hf_realtime`, or +`local_stt`. The app does not choose a backend implicitly; missing or unknown +values fail preflight and startup. -Those provider values are loaded from `.env` only. The browser UI does not -include fields for credentials, endpoint routing, or model selection. +Before launching the UI, validate the selected backend: + +```sh +reachy-mini-backend-check +``` + +To call configured backend endpoints without opening the browser, add `--live`: + +```sh +reachy-mini-backend-check --live +``` + +For `BACKEND_PROVIDER=openai_realtime` and `BACKEND_PROVIDER=hf_realtime`, this +opens a realtime session, sends the app's session configuration, and then shuts +the session down. For `BACKEND_PROVIDER=local_stt`, `--live` defaults to the +app-flow check: it feeds audio through the handler's microphone receive path +against fake Reachy dependencies, then verifies +`mic frame handling -> STT -> Chat Completions -> Reachy tools -> TTS`. + +You can also name the app-flow stage explicitly: + +```sh +reachy-mini-backend-check --live --stage app-flow \ + --seed-text "Reachy, use the sweep_look tool, then tell me what you did." +``` + +The app-flow check uses fake Reachy tool dependencies by default. After the +simulator daemon is running, add `--real-reachy` to connect through the Reachy +SDK and queue movements through the real movement manager: + +```sh +reachy-mini-backend-check --live --stage app-flow --require-tool --real-reachy \ + --seed-text "Reachy, use the sweep_look tool, then tell me what you did." +``` + +If your real STT endpoint is not reachable yet, start the local fake +OpenAI-compatible smoke workflow: + +```sh +scripts/smoke-local-stt.sh +scripts/smoke-local-stt.sh --real-reachy +scripts/smoke-local-stt.sh --gradio +``` + +The first command checks the app handler path against fake Reachy dependencies. +The second also connects through the Reachy SDK and movement manager, so it +requires the simulator daemon to be running. The `--gradio` variant launches +the actual Gradio app, verifies the `Talk with Reachy Mini` UI, and sends a +text tool-call prompt through the running app process. + +For manual debugging, you can run the fake backend directly: + +```sh +uv run python scripts/fake_openai_backend.py +``` + +In another terminal, point a disposable config at it and run the same app-flow +check: + +```sh +cat > .env.smoke <<'EOF' +BACKEND_PROVIDER=local_stt +CHAT_API_KEY=not-needed +CHAT_BASE_URL=http://127.0.0.1:8766/v1 +CHAT_MODEL_NAME=fake-chat +STT_API_KEY=not-needed +STT_BASE_URL=http://127.0.0.1:8766/v1 +STT_MODEL_NAME=fake-whisper +TTS_API_KEY=not-needed +TTS_BASE_URL=http://127.0.0.1:8766/v1 +TTS_MODEL_NAME=fake-tts +TTS_VOICE=fake-voice +EOF + +reachy-mini-backend-check --env-file .env.smoke --live --stage app-flow --require-tool +reachy-mini-backend-check --env-file .env.smoke --live --stage app-flow --require-tool --real-reachy +``` + +This checks the app's OpenAI-compatible HTTP plumbing and simulator movement +path. It does not replace a final check against the real STT service. + +While services are coming online, check each local STT stage independently: + +```sh +reachy-mini-backend-check --live --stage stt --audio-file ./sample-input.wav +reachy-mini-backend-check --live --stage chat \ + --seed-text "Reachy, use the sweep_look tool, then tell me what you did." \ + --require-tool +reachy-mini-backend-check --live --stage tts \ + --seed-text "Hello, I am Reachy." +``` + +`--stage stt` only needs `STT_*` values and a sample audio file. +`--stage chat` only needs `CHAT_*` values. `--stage tts` only needs `TTS_*` +values. The full `--stage app-flow` check still requires all local-STT pieces +and feeds audio through the handler's microphone receive path before STT. +Use `--require-tool` with `--stage chat` or `--stage app-flow` when the check +should fail unless the model calls a Reachy tool. + +To try a candidate dotenv file without replacing `.env`, pass it explicitly to +the checker: + +```sh +reachy-mini-backend-check --env-file .env.local-stt +``` + +Launch the app with that same candidate file by setting +`REACHY_MINI_DOTENV_PATH`: + +```sh +REACHY_MINI_DOTENV_PATH=.env.local-stt \ + python -m reachy_mini_conversation_app --gradio --no-camera +``` Run a quick import check: @@ -172,30 +336,31 @@ http://127.0.0.1:7860/ ``` You should see the `Talk with Reachy Mini` page with an empty chat transcript, -an `Input` selector with `OpenAI Realtime`, `Riva STT`, and `Text` options. -`Text` mode shows the message box and send button. The two microphone modes show -the audio stream panel. +an audio stream panel, and an `Input` selector. -If the app logs that `OPENAI_API_KEY` is missing, stop the app, update `.env`, -and restart it. Credentials are intentionally not entered in the browser. If -`.env` references `${NVIDIA_API_KEY}`, make sure that variable is -exported in the shell that starts the app. +![Gradio conversation UI for Talk with Reachy Mini](../assets/reachy-mini-openshell/screenshots/gradio-home.png) -## 6. Talk To Reachy +If the app logs a missing local backend value such as `CHAT_API_KEY`, +`STT_BASE_URL`, or `TTS_BASE_URL`, stop the app, update `.env`, and restart it. +Credentials are intentionally not entered in the browser. For OpenAI Realtime, +export the standard `OPENAI_API_KEY` in the shell that starts the app. Set +`OPENAI_REALTIME_API_KEY` in `.env` only if this app should use a different +OpenAI key. If `.env` references `${NVIDIA_INFERENCE_API_KEY}`, make sure that +variable is exported in the shell that starts the app. -Use `OpenAI Realtime` to speak when `MODEL_NAME` points to a Realtime-capable -model. Click `Click to Access Microphone` in the `Stream` panel and allow -microphone access in the browser. Once the stream starts, speak naturally. +## 6. Talk To Reachy -Use `Riva STT` when you have a Riva ASR endpoint and want speech-to-text before -sending text to a Chat Completions provider. Set `AUDIO_INPUT_MODE=riva_stt`, -configure `RIVA_SERVER_URI`, and install the Riva optional dependencies with -`uv sync --extra riva`. +Use `Microphone` mode to speak. With `BACKEND_PROVIDER=openai_realtime` or +`BACKEND_PROVIDER=hf_realtime`, browser audio streams to the selected realtime +backend. With `BACKEND_PROVIDER=local_stt`, the app buffers each spoken phrase, +sends it to `STT_BASE_URL` for transcription, sends the transcript through Chat +Completions, then plays Reachy's synthesized response from `TTS_BASE_URL`. +Click `Click to Access Microphone` in the `Stream` panel and allow microphone +access in the browser. Once the stream starts, speak naturally. Use `Text` mode to type instead. Switch `Input` to `Text`, enter a message, and -send it from the text composer. For non-Realtime model IDs such as NVIDIA NIM -models, text mode uses Chat Completions. Tool calls are supported in text mode -and in the Riva STT path, including providers that require the tool schema to +send it from the text composer. Tool calls are supported in text mode and in +microphone-to-text mode, including providers that require the tool schema to remain attached after a tool result is returned. Useful first prompts are: @@ -228,13 +393,24 @@ on local URL` value from the terminal into your browser. If the browser cannot access the microphone, check the browser permission prompt and macOS microphone privacy settings. -If text mode returns `404 page not found`, check that `OPENAI_BASE_URL` matches -the provider's OpenAI-compatible endpoint and that `MODEL_NAME` is an exact +If `reachy-mini-backend-check` reports older config keys such as +`OPENAI_BASE_URL` or `MODEL_NAME`, replace that `.env` shape with one of the +current `BACKEND_PROVIDER` configurations. Those old keys are intentionally not +used. + +If text mode returns `404 page not found` with `BACKEND_PROVIDER=local_stt`, +check that `CHAT_BASE_URL` is a plain OpenAI-compatible endpoint string, such as +`https://inference-api.nvidia.com/v1`, and that `CHAT_MODEL_NAME` is an exact model ID from that provider. If text mode returns `401 Unauthorized` with NVIDIA endpoints, make sure -`OPENAI_API_KEY=${NVIDIA_API_KEY}` resolves to a key that is authorized for -generation, not only model listing. +`CHAT_API_KEY=${NVIDIA_INFERENCE_API_KEY}` resolves to a key that is authorized +for generation, not only model listing. + +If microphone-to-text returns a transcription error with +`BACKEND_PROVIDER=local_stt`, make sure `STT_BASE_URL` includes the `/v1` base +path expected by OpenAI-compatible clients and that the service exposes +`POST /audio/transcriptions` for `STT_MODEL_NAME`. If the daemon reports `MuJoCo is not installed`, make sure you started the daemon from this project environment after running `uv sync`. The dependency is diff --git a/projects/reachy-mini-openshell/.env.example b/projects/reachy-mini-openshell/.env.example index 060850d0..8df26254 100644 --- a/projects/reachy-mini-openshell/.env.example +++ b/projects/reachy-mini-openshell/.env.example @@ -1,27 +1,57 @@ -OPENAI_API_KEY=${NVIDIA_API_KEY} -OPENAI_BASE_URL=https://inference-api.nvidia.com/v1 -MODEL_NAME=azure/anthropic/claude-opus-4-8 - -# Audio input modes: -# - openai_realtime: microphone audio goes to an OpenAI-compatible Realtime endpoint. -# - riva_stt: microphone audio goes to Riva ASR; final transcripts go to the text LLM path. -# - text: typed input goes to the text LLM path. -AUDIO_INPUT_MODE=text - -# Used only when AUDIO_INPUT_MODE=riva_stt. -# Accepts either host:port or http(s)://host:port. -RIVA_SERVER_URI=localhost:50051 -# Optional override. Leave unset to infer TLS from an https:// RIVA_SERVER_URI. -# RIVA_USE_SSL=false -RIVA_LANGUAGE_CODE=en-US -RIVA_ASR_MODEL= -RIVA_AUTHORIZATION= -RIVA_METADATA= -RIVA_INTERIM_RESULTS=true -RIVA_AUTOMATIC_PUNCTUATION=true +# Default local-STT example. For backend-specific starter files, see: +# - .env.openai-realtime.example +# - .env.hf-realtime.example +# - .env.local-stt.example +# +# Required: select exactly one conversation backend. +# - openai_realtime: OpenAI Realtime API handles speech input, tools, and speech output. +# - hf_realtime: Pollen/Hugging Face realtime voice backend handles speech input, tools, and speech output. +# - local_stt: local/OpenAI-compatible STT endpoint + Chat Completions model + TTS endpoint. +BACKEND_PROVIDER=local_stt + +# Local STT cascade backend. +CHAT_API_KEY=${NVIDIA_INFERENCE_API_KEY} +CHAT_BASE_URL=https://inference-api.nvidia.com/v1 +CHAT_MODEL_NAME=azure/anthropic/claude-opus-4-8 + +STT_API_KEY=not-needed +STT_BASE_URL=http://127.0.0.1:9000/v1 +STT_MODEL_NAME=whisper-1 + +TTS_API_KEY=${OPENAI_API_KEY} +TTS_BASE_URL=https://api.openai.com/v1 +TTS_MODEL_NAME=gpt-4o-mini-tts +TTS_VOICE=cedar + +# OpenAI Realtime backend. +# Uses the globally exported OPENAI_API_KEY by default; no key is required here. +# Uncomment OPENAI_REALTIME_API_KEY only if this app should use a different key +# from the global OpenAI key. +# OPENAI_REALTIME_API_KEY= +OPENAI_REALTIME_BASE_URL=https://api.openai.com/v1 +OPENAI_REALTIME_MODEL=gpt-realtime +OPENAI_REALTIME_VOICE=cedar + +# Hugging Face realtime backend. +HF_REALTIME_CONNECTION_MODE=deployed +# Optional deployed session broker override. Leave unset for the default Pollen broker. +# HF_REALTIME_SESSION_URL=https://pollen-robotics-reachy-mini-realtime-url.hf.space/session +# For local HF realtime, set: +# HF_REALTIME_CONNECTION_MODE=local +# HF_REALTIME_WS_URL=ws://127.0.0.1:8765/v1/realtime +HF_REALTIME_MODEL= +HF_REALTIME_VOICE=Aiden +HF_TOKEN= + +REALTIME_TRANSCRIPTION_LANGUAGE=en + +# Local STT phrase detection. +MIC_TRANSCRIPTION_RMS_THRESHOLD=500 +MIC_TRANSCRIPTION_MIN_AUDIO_MS=250 +MIC_TRANSCRIPTION_SILENCE_MS=800 +MIC_TRANSCRIPTION_MAX_AUDIO_MS=12000 # Used only with --local-vision. LOCAL_VISION_MODEL=HuggingFaceTB/SmolVLM2-2.2B-Instruct HF_HOME=./cache -HF_TOKEN= diff --git a/projects/reachy-mini-openshell/.env.hf-realtime.example b/projects/reachy-mini-openshell/.env.hf-realtime.example new file mode 100644 index 00000000..424e1651 --- /dev/null +++ b/projects/reachy-mini-openshell/.env.hf-realtime.example @@ -0,0 +1,21 @@ +# Pollen/Hugging Face realtime voice backend handles speech input, tools, and speech output. +BACKEND_PROVIDER=hf_realtime + +# Use the default deployed Pollen session broker. +HF_REALTIME_CONNECTION_MODE=deployed +HF_REALTIME_MODEL= +HF_REALTIME_VOICE=Aiden +HF_TOKEN= + +# Optional deployed session broker override. Leave unset for the default Pollen broker. +# HF_REALTIME_SESSION_URL=https://pollen-robotics-reachy-mini-realtime-url.hf.space/session + +# For local HF realtime instead, use: +# HF_REALTIME_CONNECTION_MODE=local +# HF_REALTIME_WS_URL=ws://127.0.0.1:8765/v1/realtime + +REALTIME_TRANSCRIPTION_LANGUAGE=en + +# Used only with --local-vision. +LOCAL_VISION_MODEL=HuggingFaceTB/SmolVLM2-2.2B-Instruct +HF_HOME=./cache diff --git a/projects/reachy-mini-openshell/.env.local-stt.example b/projects/reachy-mini-openshell/.env.local-stt.example new file mode 100644 index 00000000..ede737b2 --- /dev/null +++ b/projects/reachy-mini-openshell/.env.local-stt.example @@ -0,0 +1,28 @@ +# Local/OpenAI-compatible STT endpoint + Chat Completions model + TTS endpoint. +BACKEND_PROVIDER=local_stt + +# Chat Completions model for reasoning and Reachy tool calls. +CHAT_API_KEY=${NVIDIA_INFERENCE_API_KEY} +CHAT_BASE_URL=https://inference-api.nvidia.com/v1 +CHAT_MODEL_NAME=azure/anthropic/claude-opus-4-8 + +# Speech-to-text endpoint. Use not-needed for local no-auth endpoints. +STT_API_KEY=not-needed +STT_BASE_URL=http://127.0.0.1:9000/v1 +STT_MODEL_NAME=whisper-1 + +# Text-to-speech endpoint used for Reachy's spoken reply. +TTS_API_KEY=${OPENAI_API_KEY} +TTS_BASE_URL=https://api.openai.com/v1 +TTS_MODEL_NAME=gpt-4o-mini-tts +TTS_VOICE=cedar + +# Local STT phrase detection. +MIC_TRANSCRIPTION_RMS_THRESHOLD=500 +MIC_TRANSCRIPTION_MIN_AUDIO_MS=250 +MIC_TRANSCRIPTION_SILENCE_MS=800 +MIC_TRANSCRIPTION_MAX_AUDIO_MS=12000 + +# Used only with --local-vision. +LOCAL_VISION_MODEL=HuggingFaceTB/SmolVLM2-2.2B-Instruct +HF_HOME=./cache diff --git a/projects/reachy-mini-openshell/.env.openai-realtime.example b/projects/reachy-mini-openshell/.env.openai-realtime.example new file mode 100644 index 00000000..9573ca57 --- /dev/null +++ b/projects/reachy-mini-openshell/.env.openai-realtime.example @@ -0,0 +1,17 @@ +# OpenAI Realtime API handles speech input, tools, and speech output. +# Uses the globally exported OPENAI_API_KEY directly by default. +# Do not paste the global OpenAI key into this file for the normal path. +# Uncomment OPENAI_REALTIME_API_KEY only if this app should use a different key +# from the global OpenAI key. +BACKEND_PROVIDER=openai_realtime + +# OPENAI_REALTIME_API_KEY= +OPENAI_REALTIME_BASE_URL=https://api.openai.com/v1 +OPENAI_REALTIME_MODEL=gpt-realtime +OPENAI_REALTIME_VOICE=cedar + +REALTIME_TRANSCRIPTION_LANGUAGE=en + +# Used only with --local-vision. +LOCAL_VISION_MODEL=HuggingFaceTB/SmolVLM2-2.2B-Instruct +HF_HOME=./cache diff --git a/projects/reachy-mini-openshell/README.md b/projects/reachy-mini-openshell/README.md index 0e220dc5..f4acae96 100644 --- a/projects/reachy-mini-openshell/README.md +++ b/projects/reachy-mini-openshell/README.md @@ -1,6 +1,5 @@ --- - -## title: Reachy OpenShell +title: Reachy OpenShell emoji: 🤖 colorFrom: purple colorTo: gray @@ -9,6 +8,7 @@ pinned: false tags: - reachy_mini - reachy_mini_python_app +--- # 🤖 Reachy OpenShell @@ -27,20 +27,16 @@ The Python package and command names intentionally match that template: - console script: `reachy-mini-conversation-app` - Reachy Mini Apps entry point: `reachy_mini_conversation_app` -The app is no longer the old `reachy_openshell` smoke/backend scaffold. There is -no standalone backend server on port `8080`, no `reachy_openshell.backend`, and -no `reachy_openshell.smoke` module. Runtime communication goes through the -Reachy Mini SDK and daemon, while the conversation UI is provided by Gradio or -the Reachy Mini app shell. +Runtime communication goes through the Reachy Mini SDK and daemon. The +conversation UI is provided by Gradio or the Reachy Mini app shell. ## What Is Here This project contains: - a forked Reachy Mini voice conversation app -- OpenAI Realtime audio conversation support -- Riva streaming ASR support for microphone-to-text input -- text conversation support through OpenAI-compatible Chat Completions +- selectable voice backends for OpenAI Realtime, Hugging Face realtime, and +local STT + Chat Completions + TTS - Reachy Mini movement, dance, emotion, and look-around tools - a locked OpenShell profile for instructions and tool selection - optional camera, local vision, YOLO head-tracking, and MediaPipe head-tracking @@ -55,9 +51,7 @@ this project. The SDK is pinned to the version compatible with the forked conversation-app dependency stack. - a running Reachy Mini daemon, either connected to hardware or started in simulator mode -- an API key for conversation. OpenAI Realtime microphone mode requires an -OpenAI-compatible Realtime model; Riva STT and text mode can use -OpenAI-compatible Chat Completions providers such as NVIDIA NIM. +- provider credentials for the backend selected in `.env` ## Install @@ -68,31 +62,73 @@ cd projects/reachy-mini-openshell uv venv --python 3.12 source .venv/bin/activate uv sync -cp .env.example .env ``` -Then edit `.env`. For OpenAI Realtime microphone and text input, use: +Then choose one backend starter and copy it to `.env`: + +```bash +cp .env.openai-realtime.example .env +# or: cp .env.hf-realtime.example .env +# or: cp .env.local-stt.example .env +``` + +`.env.example` is the combined local-STT starter used by the launcher when no +`.env` exists. + +For the OpenAI Realtime API: + +```bash +BACKEND_PROVIDER=openai_realtime +OPENAI_REALTIME_BASE_URL=https://api.openai.com/v1 +OPENAI_REALTIME_MODEL=gpt-realtime +OPENAI_REALTIME_VOICE=cedar +``` + +OpenAI Realtime uses the standard, globally exported `OPENAI_API_KEY` directly. +Do not copy the global key into `.env` for the normal OpenAI path. Start the app +from a shell where `OPENAI_API_KEY` is already exported. Set +`OPENAI_REALTIME_API_KEY` in `.env` only when this app should use a different +key from the global OpenAI key. + +For the default Pollen/Hugging Face realtime path: + +```bash +BACKEND_PROVIDER=hf_realtime +HF_REALTIME_CONNECTION_MODE=deployed +HF_REALTIME_MODEL= +HF_REALTIME_VOICE=Aiden +``` + +For a local Hugging Face realtime backend, use a direct websocket endpoint: ```bash -OPENAI_API_KEY=your_api_key_here -OPENAI_BASE_URL=https://api.openai.com/v1 -MODEL_NAME=gpt-realtime -AUDIO_INPUT_MODE=openai_realtime +BACKEND_PROVIDER=hf_realtime +HF_REALTIME_CONNECTION_MODE=local +HF_REALTIME_WS_URL=ws://127.0.0.1:8765/v1/realtime ``` -For NVIDIA-hosted text input through an OpenAI-compatible Chat Completions -endpoint, reference your existing NVIDIA API key environment variable: +For a local STT cascade, combine an OpenAI-compatible STT endpoint, a Chat +Completions model, and a TTS endpoint: ```bash -OPENAI_API_KEY=${NVIDIA_API_KEY} -OPENAI_BASE_URL=https://inference-api.nvidia.com/v1 -MODEL_NAME=azure/anthropic/claude-opus-4-8 -AUDIO_INPUT_MODE=text +BACKEND_PROVIDER=local_stt +CHAT_API_KEY=${NVIDIA_INFERENCE_API_KEY} +CHAT_BASE_URL=https://inference-api.nvidia.com/v1 +CHAT_MODEL_NAME=azure/anthropic/claude-opus-4-8 +STT_API_KEY=not-needed +STT_BASE_URL=http://127.0.0.1:9000/v1 +STT_MODEL_NAME=whisper-1 +TTS_API_KEY=${OPENAI_API_KEY} +TTS_BASE_URL=https://api.openai.com/v1 +TTS_MODEL_NAME=gpt-4o-mini-tts +TTS_VOICE=cedar ``` Use the exact model ID exposed by your provider. For example, NVIDIA model IDs can look like `nvidia/nemotron-3-super-120b-a12b` or `azure/anthropic/claude-opus-4-8`, depending on the endpoint and account. +The API key value can reference any exported system environment variable using +dotenv syntax, for example `${NVIDIA_INFERENCE_API_KEY}`. If you are not using `uv`, install the app in editable mode from the project directory: @@ -115,10 +151,9 @@ and regenerate `uv.lock` for that platform. ## Optional Dependencies -The active optional dependency groups cover Riva ASR and vision: +The active optional dependency groups are vision-related only: ```bash -uv sync --extra riva uv sync --extra local_vision uv sync --extra yolo_vision uv sync --extra mediapipe_vision @@ -128,17 +163,12 @@ uv sync --extra all_vision With `pip`, use the equivalent editable installs: ```bash -python -m pip install -e '.[riva]' python -m pip install -e '.[local_vision]' python -m pip install -e '.[yolo_vision]' python -m pip install -e '.[mediapipe_vision]' python -m pip install -e '.[all_vision]' ``` -The `riva` extra is intentionally marked incompatible with `mediapipe_vision` -and `all_vision` because the current Riva and MediaPipe client stacks require -different protobuf ranges. - There are no project-level `backend` or `sim` extras anymore. The previous backend extra belonged to the deleted scaffold. The default dependency set includes Reachy Mini's MuJoCo simulator backend because the local development @@ -146,36 +176,66 @@ workflow starts `reachy-mini-daemon --sim` from this environment. ## Configuration -The app loads `.env` from the current directory or a parent directory. Provider -credentials and routing must be configured in `.env`; they are not accepted from -the browser UI or the Reachy Mini settings UI. +The app loads `.env` from the current directory or a parent directory. To use a +candidate file without replacing `.env`, set `REACHY_MINI_DOTENV_PATH` before +starting the app. Backend routing and model selection are configured in dotenv +files; credentials are read from dotenv values, dotenv references to exported +variables, or exported `OPENAI_API_KEY` for OpenAI Realtime. They are not +accepted from the browser UI or the Reachy Mini settings UI. Supported `.env` values: -- `OPENAI_API_KEY`: API key used by the configured model provider. This can -reference another exported environment variable, such as -`${NVIDIA_API_KEY}`. -- `OPENAI_BASE_URL`: OpenAI-compatible API base URL. -- `MODEL_NAME`: provider model ID. Model names containing `realtime` use the -Realtime path; other model IDs use Chat Completions for text input. -- `AUDIO_INPUT_MODE`: initial input mode. Use `text` for the default typed -message path, `openai_realtime` when microphone audio should go to an -OpenAI-compatible Realtime endpoint, or `riva_stt` to stream microphone audio -to Riva ASR and pass final transcripts into the text LLM path. -- `RIVA_SERVER_URI`: Riva ASR server URI, for example `localhost:50051` or -`http://riva-host:9000`. URL schemes are normalized for the Riva client. -- `RIVA_USE_SSL`: optional override for TLS-enabled Riva endpoints. If this is -unset and `RIVA_SERVER_URI` starts with `https://`, TLS is enabled. -- `RIVA_LANGUAGE_CODE`: BCP-47 language code for Riva ASR, such as `en-US`. -- `RIVA_ASR_MODEL`: optional Riva ASR model name. Leave empty to let Riva -select a model from the language/configuration. -- `RIVA_AUTHORIZATION`: optional authorization metadata value, such as a bearer -token, for hosted Riva endpoints. -- `RIVA_METADATA`: optional comma-separated `key=value` metadata pairs passed -to the Riva client. +- `BACKEND_PROVIDER`: one of `openai_realtime`, `hf_realtime`, or `local_stt`. +This is the only switch that selects the voice backend. The app does not choose +a backend implicitly; missing or unknown values fail preflight and startup. +- `OPENAI_API_KEY`: standard global OpenAI API key used directly by +`BACKEND_PROVIDER=openai_realtime` when it is exported in the shell that starts +the app. This is the normal OpenAI Realtime credential path. It can also be +referenced from other dotenv values such as `TTS_API_KEY=${OPENAI_API_KEY}`. +- `OPENAI_REALTIME_API_KEY`: optional override for +`BACKEND_PROVIDER=openai_realtime`. Leave this unset unless the app should use a +different OpenAI key from the global `OPENAI_API_KEY`. +- `OPENAI_REALTIME_BASE_URL`: OpenAI Realtime API base URL. Defaults to +`https://api.openai.com/v1`. +- `OPENAI_REALTIME_MODEL`: OpenAI Realtime model ID. +- `OPENAI_REALTIME_VOICE`: OpenAI Realtime voice name. +- `HF_REALTIME_CONNECTION_MODE`: `deployed` for the default Pollen/Hugging Face +session broker, or `local` for a self-hosted Hugging Face realtime backend. +- `HF_REALTIME_SESSION_URL`: deployed Hugging Face session broker URL. Defaults +to the Pollen broker and usually does not need to be set. +- `HF_REALTIME_WS_URL`: local Hugging Face realtime websocket URL, required +when `HF_REALTIME_CONNECTION_MODE=local`. +- `HF_REALTIME_MODEL`: optional model ID passed to the Hugging Face realtime +backend. Leave empty to let the backend choose its default. +- `HF_REALTIME_VOICE`: voice name passed to the Hugging Face realtime backend. +- `HF_TOKEN`: optional token used by the deployed Hugging Face session broker +and gated Hugging Face models. +- `CHAT_API_KEY`: API key for `BACKEND_PROVIDER=local_stt` Chat Completions. +This can reference an exported shell variable, such as +`${NVIDIA_INFERENCE_API_KEY}`. +- `CHAT_BASE_URL`: OpenAI-compatible Chat Completions base URL. +- `CHAT_MODEL_NAME`: exact Chat Completions model ID exposed by the provider. +- `STT_BASE_URL`: OpenAI-compatible speech-to-text base URL. Microphone input +is buffered into a short WAV phrase, transcribed through this endpoint, then +passed to Chat Completions. +- `STT_API_KEY`: API key for `STT_BASE_URL`. For local no-auth STT endpoints, +use `not-needed`. +- `STT_MODEL_NAME`: transcription model ID. Defaults to `whisper-1`. +- `TTS_BASE_URL`: OpenAI-compatible text-to-speech base URL. +- `TTS_API_KEY`: API key for `TTS_BASE_URL`. For local no-auth TTS endpoints, +use `not-needed`. +- `TTS_MODEL_NAME`: speech model ID. Defaults to `gpt-4o-mini-tts`. +- `TTS_VOICE`: voice name for synthesized Reachy speech. +- `MIC_TRANSCRIPTION_RMS_THRESHOLD`: voice activity threshold for mic-to-text. +Defaults to `500`. +- `MIC_TRANSCRIPTION_MIN_AUDIO_MS`: minimum phrase length before the app can +submit audio for transcription. Defaults to `250`. +- `MIC_TRANSCRIPTION_SILENCE_MS`: trailing silence used to end a phrase. +Defaults to `800`. +- `MIC_TRANSCRIPTION_MAX_AUDIO_MS`: maximum phrase length before forcing a +transcription request. Defaults to `12000`. - `LOCAL_VISION_MODEL`: Hugging Face model used with `--local-vision`. - `HF_HOME`: Hugging Face cache directory. Defaults to `./cache`. -- `HF_TOKEN`: optional Hugging Face token for gated models. ## Run Locally @@ -186,19 +246,19 @@ projects/reachy-mini-openshell/scripts/start-local.sh ``` The script creates `.venv` when needed, runs `uv sync`, creates `.env` from -`.env.example` if missing, starts `reachy-mini-daemon --sim`, launches the -Gradio app, and prints the browser URL: +`.env.example` if missing, validates the selected backend config, starts +`reachy-mini-daemon --sim`, launches the Gradio app, and prints the browser URL: ```text http://127.0.0.1:7860/ ``` If port `7860` is busy, the launcher chooses the next free port through `7899` -and prints that URL instead. Pass app flags that are compatible with the -no-camera simulator baseline after the script name: +and prints that URL instead. Pass app flags after the script name: ```bash projects/reachy-mini-openshell/scripts/start-local.sh --debug +projects/reachy-mini-openshell/scripts/start-local.sh --head-tracker yolo ``` From inside `projects/reachy-mini-openshell`, the shorter form is: @@ -220,19 +280,164 @@ reachy-mini-daemon --sim --scene minimal --headless --no-media --fastapi-host 12 python -m reachy_mini_conversation_app --gradio --no-camera ``` -The Gradio UI includes an `Input` selector: +Before starting the app, you can validate the selected backend without opening +the browser or connecting to Reachy: + +```bash +reachy-mini-backend-check +python -m reachy_mini_conversation_app.backend_check +``` + +To validate a candidate dotenv file without replacing `.env`, pass it +explicitly: + +```bash +reachy-mini-backend-check --env-file .env.local-stt.example +``` -- `OpenAI Realtime`: Realtime microphone behavior. Audio streams to an -OpenAI-compatible Realtime endpoint, which handles transcription and response -generation in one session. -- `Riva STT`: microphone audio streams to Riva ASR. Final transcripts are sent -to the same text LLM path used by typed messages, so OpenAI-compatible Chat -Completions providers such as NVIDIA NIM can answer. -- `Text`: typed messages only. +Launch the app with that same candidate file, or with your edited private copy, +by setting `REACHY_MINI_DOTENV_PATH`: + +```bash +REACHY_MINI_DOTENV_PATH=.env.local-stt.example \ + python -m reachy_mini_conversation_app --gradio --no-camera +``` + +The preflight can also call configured backend endpoints: + +```bash +reachy-mini-backend-check --live +reachy-mini-backend-check --env-file .env.local-stt.example --live +``` -Tool calls are supported in text mode and in the Riva STT path; the app keeps -the tool schema attached on the post-tool follow-up request for providers that -require it. +For `BACKEND_PROVIDER=openai_realtime` and `BACKEND_PROVIDER=hf_realtime`, +`--live` opens a realtime session, sends the app's session configuration, and +then shuts the session down. For `BACKEND_PROVIDER=local_stt`, `--live` +defaults to the app-flow check: it feeds audio through the handler's microphone +receive path against fake Reachy dependencies, then verifies +`mic frame handling -> STT -> Chat Completions -> Reachy tools -> TTS`. + +Without `--audio-file`, the live check synthesizes a short seed phrase through +the configured TTS endpoint, sends that audio to STT, sends the transcript to +Chat Completions, then synthesizes the assistant response. It prints only +non-secret routing details, the transcript, response text, and audio durations. + +When setting up local STT services one at a time, use `--stage` to check only +the piece you have ready: + +```bash +reachy-mini-backend-check --env-file .env.local-stt.example --live --stage stt-probe +reachy-mini-backend-check --env-file .env.local-stt.example --live --stage stt \ + --audio-file ./sample-input.wav +reachy-mini-backend-check --env-file .env.local-stt.example --live --stage chat \ + --seed-text "Reachy, use the sweep_look tool, then tell me what you did." \ + --require-tool +reachy-mini-backend-check --env-file .env.local-stt.example --live --stage tts \ + --seed-text "Hello, I am Reachy." +reachy-mini-backend-check --env-file .env.local-stt.example --live --stage chain \ + --audio-file ./sample-input.wav +``` + +`--stage stt-probe` only needs `STT_*` values. It checks `/models` when that +endpoint is available, reports whether `STT_MODEL_NAME` is listed, then sends a +short synthetic WAV to `/audio/transcriptions`. It passes if the endpoint can +handle an audio request, even if the probe tone transcribes to empty text. +`--stage stt` checks actual transcription quality and only needs `STT_*` +values and an audio file unless TTS is already configured to synthesize the +seed phrase. `--stage chat` only needs `CHAT_*` values and can validate +model/tool compatibility before STT or TTS are ready. `--stage tts` only needs +`TTS_*` values. `--stage chain` checks the direct `STT -> Chat Completions -> +TTS` endpoint chain without the app handler or Reachy tool path. + +The app-flow path is the default local-STT live check, but you can name it +explicitly with `--stage app-flow` or its `--app-flow` shortcut: + +```bash +reachy-mini-backend-check --live --stage app-flow \ + --seed-text "Reachy, use the sweep_look tool, then tell me what you did." +reachy-mini-backend-check --live --app-flow --require-tool \ + --seed-text "Reachy, use the sweep_look tool, then tell me what you did." +``` + +When the simulator daemon or a physical Reachy Mini is already running, add +`--real-reachy` to use the real Reachy SDK client and movement manager instead +of fake tool dependencies: + +```bash +reachy-mini-backend-check --live --stage app-flow --require-tool --real-reachy \ + --seed-text "Reachy, use the sweep_look tool, then tell me what you did." +``` + +Use `--robot-name ` with `--real-reachy` if your daemon is advertised +under a non-default robot name. + +If your real STT endpoint is not online yet, run the local fake +OpenAI-compatible smoke workflow: + +```bash +scripts/smoke-local-stt.sh +scripts/smoke-local-stt.sh --real-reachy +scripts/smoke-local-stt.sh --gradio +``` + +The first command starts a fake STT/chat/TTS backend and checks the app handler +path against fake Reachy dependencies. The second also connects through the +Reachy SDK and movement manager, so it requires the simulator daemon or a +physical Reachy Mini to be running. The `--gradio` variant launches the actual +Gradio app, verifies the `Talk with Reachy Mini` UI, and sends a text tool-call +prompt through the running app process. It also requires a running daemon or +simulator. + +For manual debugging, you can run the fake backend directly: + +```bash +uv run python scripts/fake_openai_backend.py +``` + +Then point a disposable smoke config at it: + +```bash +cat > .env.smoke <<'EOF' +BACKEND_PROVIDER=local_stt +CHAT_API_KEY=not-needed +CHAT_BASE_URL=http://127.0.0.1:8766/v1 +CHAT_MODEL_NAME=fake-chat +STT_API_KEY=not-needed +STT_BASE_URL=http://127.0.0.1:8766/v1 +STT_MODEL_NAME=fake-whisper +TTS_API_KEY=not-needed +TTS_BASE_URL=http://127.0.0.1:8766/v1 +TTS_MODEL_NAME=fake-tts +TTS_VOICE=fake-voice +EOF + +reachy-mini-backend-check --env-file .env.smoke --live --stage app-flow --require-tool +reachy-mini-backend-check --env-file .env.smoke --live --stage app-flow --require-tool --real-reachy +``` + +This fake backend validates the app's OpenAI-compatible HTTP plumbing, tool +loop, and audio handoff. It does not validate STT accuracy, provider auth, or a +real model's tool-calling behavior. + +`--require-tool` applies to `--stage chat` and `--stage app-flow`; it fails if +the model does not call a Reachy tool. This is useful for checking model/tool +compatibility, but it still does not replace the final browser microphone and +simulator validation. + +The Gradio UI includes an `Input` selector. With `BACKEND_PROVIDER` set to +`openai_realtime` or `hf_realtime`, `Microphone` streams audio directly to the +selected realtime backend. With `BACKEND_PROVIDER=local_stt`, `Microphone` +sends each spoken phrase to the configured `STT_BASE_URL` transcription +endpoint, sends the transcript through Chat Completions, then synthesizes +Reachy's spoken reply through `TTS_BASE_URL`. Tool calls are supported in text +mode and in microphone-to-text mode; the app keeps the tool schema attached on +the post-tool follow-up request for providers that require it. + +If the microphone appears to connect but no transcript or model response +arrives, check the visible chat error and your `.env` values. For Chat +Completions models, verify that `STT_BASE_URL` points at an OpenAI-compatible +`/audio/transcriptions` service and that `STT_MODEL_NAME` matches the model +served by that endpoint. ## Runtime Flags @@ -300,9 +505,8 @@ uv run ty check ``` `ty` is the selected Python type checker for this project. The current copied -conversation-app baseline still reports diagnostics in motion, vision, optional -dependency, and SDK event typing, so use `uv run ty check` as the active audit -while that baseline is tightened. +conversation-app baseline is expected to pass `uv run ty check` before changes +are merged. Tests require the development dependency group: @@ -320,14 +524,31 @@ name to the app with `--robot-name`. If `--local-vision`, `--head-tracker yolo`, or `--head-tracker mediapipe` fails with an import error, install the matching optional dependency group. -If text mode returns `404 page not found`, check that `OPENAI_BASE_URL` matches -the provider's OpenAI-compatible endpoint and that `MODEL_NAME` is an exact -model ID from that provider. A catalog name, marketing page slug, or doubled -namespace may not be accepted by `/chat/completions`. +If `reachy-mini-backend-check` reports older config keys such as +`OPENAI_BASE_URL` or `MODEL_NAME`, replace that `.env` shape with one of the +current `BACKEND_PROVIDER` configurations. Those old keys are intentionally not +used. + +If text mode returns `404 page not found` with `BACKEND_PROVIDER=local_stt`, +check that `CHAT_BASE_URL` is a plain OpenAI-compatible endpoint string, such +as `https://inference-api.nvidia.com/v1`, and that `CHAT_MODEL_NAME` is an +exact model ID from that provider. A catalog name, marketing page slug, or +doubled namespace may not be accepted by `/chat/completions`. If text mode returns `401 Unauthorized` with NVIDIA endpoints, make sure -`OPENAI_API_KEY=${NVIDIA_API_KEY}` resolves to a key that is authorized for -generation, not only model listing. +`CHAT_API_KEY=${NVIDIA_INFERENCE_API_KEY}` resolves to a key that is authorized +for generation, not only model listing. + +If microphone-to-text returns a transcription error, make sure `STT_BASE_URL` +includes the `/v1` base path expected by OpenAI-compatible clients, for example +`http://:9000/v1`, and that the service exposes +`POST /audio/transcriptions` for the configured `STT_MODEL_NAME`. + +If a vLLM-hosted STT endpoint returns `Please install vllm[audio] for audio +support`, the service is reachable but was deployed without vLLM's audio +dependencies. Redeploy the local STT service with the audio extra enabled, then +rerun `reachy-mini-backend-check --live --stage stt-probe` followed by +`reachy-mini-backend-check --live --stage stt`. If `uv sync` tries to build `pygobject` or `pycairo` on macOS, the resolver is including a Linux media dependency path. This project scopes uv resolution to diff --git a/projects/reachy-mini-openshell/pyproject.toml b/projects/reachy-mini-openshell/pyproject.toml index 6c955849..8adb5cbb 100644 --- a/projects/reachy-mini-openshell/pyproject.toml +++ b/projects/reachy-mini-openshell/pyproject.toml @@ -28,19 +28,8 @@ dev = [ environments = [ "sys_platform == 'darwin'", ] -conflicts = [ - [ - { extra = "riva" }, - { extra = "mediapipe_vision" }, - ], - [ - { extra = "riva" }, - { extra = "all_vision" }, - ], -] [project.optional-dependencies] -riva = [ "nvidia-riva-client>=2.19,<3",] local_vision = [ "torch>=2.1", "transformers==5.0.0rc2", "num2words",] yolo_vision = [ "ultralytics", "supervision", "onnxruntime",] mediapipe_vision = [ "mediapipe==0.10.14",] @@ -48,6 +37,7 @@ all_vision = [ "torch>=2.1", "transformers==5.0.0rc2", "num2words", "ultralytics [project.scripts] reachy-mini-conversation-app = "reachy_mini_conversation_app.main:main" +reachy-mini-backend-check = "reachy_mini_conversation_app.backend_check:main" [tool.setuptools] include-package-data = true diff --git a/projects/reachy-mini-openshell/scripts/fake_openai_backend.py b/projects/reachy-mini-openshell/scripts/fake_openai_backend.py new file mode 100755 index 00000000..54f5f459 --- /dev/null +++ b/projects/reachy-mini-openshell/scripts/fake_openai_backend.py @@ -0,0 +1,149 @@ +#!/usr/bin/env python3 +"""Tiny OpenAI-compatible backend for local Reachy conversation smoke tests.""" + +import io +import math +import time +import wave +import argparse +from typing import Any + +import uvicorn +from fastapi import FastAPI, Request, Response + + +def _wav_bytes(text: str, *, sample_rate: int = 24_000, duration_seconds: float = 0.7) -> bytes: + """Return a small mono WAV payload.""" + frequency = 523.25 if "swept" in text.lower() else 440.0 + frame_count = max(1, int(sample_rate * duration_seconds)) + frames = bytearray() + for index in range(frame_count): + sample = int(math.sin(2 * math.pi * frequency * index / sample_rate) * 6000) + frames.extend(sample.to_bytes(2, byteorder="little", signed=True)) + + buffer = io.BytesIO() + with wave.open(buffer, "wb") as wav_file: + wav_file.setnchannels(1) + wav_file.setsampwidth(2) + wav_file.setframerate(sample_rate) + wav_file.writeframes(bytes(frames)) + return buffer.getvalue() + + +def _message_has_tool_result(messages: list[Any]) -> bool: + """Return whether a Chat Completions request includes a tool result.""" + return any(isinstance(message, dict) and message.get("role") == "tool" for message in messages) + + +def build_app( + *, + transcript: str, + assistant_text: str, + tool_name: str, + call_tool: bool, + audio_duration_seconds: float, +) -> FastAPI: + """Build the fake OpenAI-compatible FastAPI app.""" + app = FastAPI(title="Reachy fake OpenAI-compatible backend") + + @app.get("/v1/models") + async def models() -> dict[str, Any]: + return { + "object": "list", + "data": [ + {"id": "fake-whisper", "object": "model"}, + {"id": "fake-chat", "object": "model"}, + {"id": "fake-tts", "object": "model"}, + ], + } + + @app.post("/v1/audio/transcriptions") + async def transcriptions(request: Request) -> dict[str, str]: + await request.body() + return {"text": transcript} + + @app.post("/v1/audio/speech") + async def speech(request: Request) -> Response: + try: + payload = await request.json() + except Exception: + payload = {} + input_text = str(payload.get("input", "hello")) + return Response( + content=_wav_bytes(input_text, duration_seconds=audio_duration_seconds), + media_type="audio/wav", + ) + + @app.post("/v1/chat/completions") + async def chat_completions(request: Request) -> dict[str, Any]: + payload = await request.json() + messages = payload.get("messages", []) + if not isinstance(messages, list): + messages = [] + + if call_tool and not _message_has_tool_result(messages): + message = { + "role": "assistant", + "content": None, + "tool_calls": [ + { + "id": "call_fake_reachy_tool", + "type": "function", + "function": {"name": tool_name, "arguments": "{}"}, + } + ], + } + finish_reason = "tool_calls" + else: + message = {"role": "assistant", "content": assistant_text} + finish_reason = "stop" + + return { + "id": "chatcmpl-fake-reachy", + "object": "chat.completion", + "created": int(time.time()), + "model": payload.get("model", "fake-chat"), + "choices": [{"index": 0, "message": message, "finish_reason": finish_reason}], + } + + return app + + +def build_parser() -> argparse.ArgumentParser: + """Build CLI parser.""" + parser = argparse.ArgumentParser(description="Run a fake OpenAI-compatible backend for Reachy smoke tests.") + parser.add_argument("--host", default="127.0.0.1", help="host to bind.") + parser.add_argument("--port", type=int, default=8766, help="port to bind.") + parser.add_argument( + "--transcript", + default="Reachy, use the sweep_look tool, then tell me what you did.", + help="transcription text returned by POST /v1/audio/transcriptions.", + ) + parser.add_argument( + "--assistant-text", + default="I swept my gaze and returned to center.", + help="final assistant text returned after a tool result.", + ) + parser.add_argument("--tool-name", default="sweep_look", help="tool name to request from Chat Completions.") + parser.add_argument( + "--no-tool", action="store_true", help="return assistant text immediately without a tool call." + ) + parser.add_argument("--audio-duration", type=float, default=0.7, help="duration in seconds for fake TTS WAVs.") + return parser + + +def main() -> None: + """Run the fake backend.""" + args = build_parser().parse_args() + app = build_app( + transcript=args.transcript, + assistant_text=args.assistant_text, + tool_name=args.tool_name, + call_tool=not args.no_tool, + audio_duration_seconds=args.audio_duration, + ) + uvicorn.run(app, host=args.host, port=args.port, log_level="info") + + +if __name__ == "__main__": + main() diff --git a/projects/reachy-mini-openshell/scripts/smoke-local-stt.sh b/projects/reachy-mini-openshell/scripts/smoke-local-stt.sh new file mode 100755 index 00000000..cf278910 --- /dev/null +++ b/projects/reachy-mini-openshell/scripts/smoke-local-stt.sh @@ -0,0 +1,300 @@ +#!/usr/bin/env bash +set -euo pipefail + +SCRIPT_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)" +PROJECT_DIR="$(cd -- "${SCRIPT_DIR}/.." && pwd)" + +HOST="${SMOKE_BACKEND_HOST:-127.0.0.1}" +PORT="${SMOKE_BACKEND_PORT:-8766}" +REAL_REACHY="${SMOKE_REAL_REACHY:-0}" +GRADIO_SMOKE="${SMOKE_GRADIO:-0}" +APP_HOST="${SMOKE_APP_HOST:-127.0.0.1}" +APP_PORT="${SMOKE_APP_PORT:-7897}" +ROBOT_NAME="${SMOKE_ROBOT_NAME:-}" +SEED_TEXT="${SMOKE_SEED_TEXT:-Reachy, use the sweep_look tool, then tell me what you did.}" +STARTUP_TIMEOUT="${SMOKE_BACKEND_TIMEOUT:-10}" +APP_STARTUP_TIMEOUT="${SMOKE_APP_TIMEOUT:-20}" +SHUTDOWN_TIMEOUT="${SMOKE_SHUTDOWN_TIMEOUT:-25}" + +SERVER_PID="" +APP_PID="" +SMOKE_ENV="" + +usage() { + cat <<'EOF' +Usage: scripts/smoke-local-stt.sh [--real-reachy] [--gradio] [--robot-name NAME] + +Runs a local OpenAI-compatible fake STT/chat/TTS backend, writes a temporary +local_stt config, and checks the app's microphone app-flow path. + +Options: + --real-reachy Also run the app-flow check through the real Reachy SDK + and movement manager. Requires a running daemon/simulator. + --gradio Also launch the Gradio app, verify the UI labels, and send + a text tool-call prompt through the running app. Requires + a running daemon/simulator. + --robot-name NAME Robot name to pass to reachy-mini-backend-check with + --real-reachy and to the Gradio app smoke when provided. + -h, --help Show this help. + +Environment: + SMOKE_BACKEND_HOST Fake backend host. Default: 127.0.0.1 + SMOKE_BACKEND_PORT Fake backend port. Default: 8766 + SMOKE_APP_HOST Gradio app host for --gradio. Default: 127.0.0.1 + SMOKE_APP_PORT Gradio app port for --gradio. Default: 7897 + SMOKE_SEED_TEXT Seed text for the generated input speech. + SMOKE_BACKEND_TIMEOUT Seconds to wait for the fake backend. Default: 10 + SMOKE_APP_TIMEOUT Seconds to wait for the Gradio app. Default: 20 + SMOKE_SHUTDOWN_TIMEOUT Seconds to wait before forcing shutdown. Default: 25 +EOF +} + +log() { + printf '[reachy-smoke] %s\n' "$*" +} + +terminate_process_tree() { + local pid="$1" + local signal="$2" + local children child + + children="$(pgrep -P "${pid}" 2>/dev/null || true)" + for child in ${children}; do + terminate_process_tree "${child}" "${signal}" + done + kill "-${signal}" "${pid}" >/dev/null 2>&1 || true +} + +wait_for_process_exit() { + local pid="$1" + local timeout_seconds="$2" + local deadline=$((SECONDS + timeout_seconds)) + + while kill -0 "${pid}" >/dev/null 2>&1; do + if (( SECONDS >= deadline )); then + return 1 + fi + sleep 0.2 + done + return 0 +} + +stop_process_tree() { + local pid="$1" + local label="$2" + if [[ -z "${pid}" ]] || ! kill -0 "${pid}" >/dev/null 2>&1; then + return + fi + + terminate_process_tree "${pid}" INT + if ! wait_for_process_exit "${pid}" "${SHUTDOWN_TIMEOUT}"; then + log "Forcing ${label} shutdown" + terminate_process_tree "${pid}" TERM + if ! wait_for_process_exit "${pid}" 3; then + terminate_process_tree "${pid}" KILL + fi + fi + wait "${pid}" >/dev/null 2>&1 || true +} + +cleanup() { + stop_process_tree "${APP_PID}" "Gradio app" + stop_process_tree "${SERVER_PID}" "fake backend" + if [[ -n "${SMOKE_ENV}" ]]; then + rm -f "${SMOKE_ENV}" + fi +} +trap cleanup EXIT INT TERM + +while [[ $# -gt 0 ]]; do + case "$1" in + --real-reachy) + REAL_REACHY=1 + shift + ;; + --gradio) + GRADIO_SMOKE=1 + shift + ;; + --robot-name) + if [[ $# -lt 2 ]]; then + printf 'Missing value for --robot-name\n' >&2 + exit 2 + fi + ROBOT_NAME="$2" + shift 2 + ;; + -h|--help) + usage + exit 0 + ;; + *) + printf 'Unknown argument: %s\n' "$1" >&2 + usage >&2 + exit 2 + ;; + esac +done + +cd "${PROJECT_DIR}" + +if ! command -v uv >/dev/null 2>&1; then + printf 'Missing required command: uv\n' >&2 + exit 1 +fi + +ensure_url_ready() { + local url="$1" + local timeout_seconds="$2" + local label="$3" + + local deadline=$((SECONDS + timeout_seconds)) + until uv run python - "${url}" <<'PY' >/dev/null 2>&1 +import sys +import urllib.request + +url = sys.argv[1] +try: + with urllib.request.urlopen(url, timeout=0.5) as response: + raise SystemExit(0 if 200 <= response.status < 300 else 1) +except Exception: + raise SystemExit(1) +PY + do + if (( SECONDS >= deadline )); then + printf '%s did not become ready within %s seconds.\n' "${label}" "${timeout_seconds}" >&2 + exit 1 + fi + sleep 0.25 + done +} + +SMOKE_ENV="$(mktemp "${TMPDIR:-/tmp}/reachy-local-stt-smoke.XXXXXX")" +cat >"${SMOKE_ENV}" < MicPhraseResult: + """Add one audio frame and return a completed phrase when ready.""" + audio_frame = prepare_mono_int16_audio(frame, self.config.sample_rate) + if audio_frame.size == 0: + return MicPhraseResult(phrase_audio=None, saw_speech=False) + + frame_ms = len(audio_frame) * 1000.0 / self.config.sample_rate + is_speech = audio_rms(audio_frame) >= self.config.rms_threshold + + if is_speech: + self._has_speech = True + self._silence_ms = 0.0 + elif self._has_speech: + self._silence_ms += frame_ms + else: + return MicPhraseResult(phrase_audio=None, saw_speech=False) + + self._buffer.append(audio_frame) + self._buffer_ms += frame_ms + + should_flush = self._buffer_ms >= self.config.max_audio_ms or ( + self._buffer_ms >= self.config.min_audio_ms and self._silence_ms >= self.config.silence_ms + ) + if not should_flush: + return MicPhraseResult(phrase_audio=None, saw_speech=is_speech) + + return MicPhraseResult(phrase_audio=self.flush(), saw_speech=is_speech) + + def flush(self) -> NDArray[np.int16] | None: + """Return the buffered phrase and reset phrase-detection state.""" + if not self._buffer: + return None + + audio_frame = np.concatenate(self._buffer).astype(np.int16, copy=False) + self.reset() + return audio_frame + + def reset(self) -> None: + """Clear buffered audio and voice activity state.""" + self._buffer = [] + self._buffer_ms = 0.0 + self._silence_ms = 0.0 + self._has_speech = False diff --git a/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/audio/pcm.py b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/audio/pcm.py new file mode 100644 index 00000000..84e35147 --- /dev/null +++ b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/audio/pcm.py @@ -0,0 +1,141 @@ +"""PCM and WAV helpers shared by realtime and local-STT backends.""" + +import io +import wave +import asyncio +from typing import Any + +import numpy as np +from fastrtc import audio_to_int16 +from numpy.typing import NDArray +from scipy.signal import resample + + +def first_mono_channel(audio_frame: NDArray[Any]) -> NDArray[Any]: + """Return one mono channel from common FastRTC and scipy audio layouts.""" + if audio_frame.ndim == 1: + return audio_frame + + if audio_frame.ndim != 2: + raise ValueError(f"Expected 1D or 2D audio, got shape {audio_frame.shape}") + + rows, columns = audio_frame.shape + if rows == 1: + return audio_frame[0, :] + if columns == 1: + return audio_frame[:, 0] + if rows in {2, 6, 8} and columns > rows: + return audio_frame[0, :] + if columns in {2, 6, 8}: + return audio_frame[:, 0] + if rows < columns: + return audio_frame[0, :] + return audio_frame[:, 0] + + +def coerce_audio_to_int16(audio_frame: NDArray[Any]) -> NDArray[np.int16]: + """Convert supported PCM audio arrays to int16. + + FastRTC accepts normalized float32 audio, while scipy resampling returns + float64 values in the original PCM amplitude range. Preserve that scale + instead of multiplying resampled PCM by 32767 a second time. + """ + if audio_frame.dtype == np.int16: + return audio_frame + + if np.issubdtype(audio_frame.dtype, np.floating): + finite_audio = np.nan_to_num(audio_frame, nan=0.0, posinf=32767.0, neginf=-32768.0) + max_abs = float(np.max(np.abs(finite_audio))) if finite_audio.size else 0.0 + if max_abs <= 1.0: + return audio_to_int16(finite_audio.astype(np.float32, copy=False)) + return np.clip(finite_audio, -32768, 32767).astype(np.int16) + + if np.issubdtype(audio_frame.dtype, np.integer): + return np.clip(audio_frame, -32768, 32767).astype(np.int16) + + raise TypeError(f"Unsupported audio data type: {audio_frame.dtype}") + + +def prepare_mono_int16_audio( + frame: tuple[int, NDArray[Any]], + target_sample_rate: int, +) -> NDArray[np.int16]: + """Convert an incoming audio frame to mono int16 at the requested sample rate.""" + input_sample_rate, audio_frame = frame + mono_audio = first_mono_channel(audio_frame) + + if target_sample_rate != input_sample_rate and len(mono_audio) > 0: + mono_audio = resample(mono_audio, int(len(mono_audio) * target_sample_rate / input_sample_rate)) + + return coerce_audio_to_int16(mono_audio) + + +def audio_rms(audio_frame: NDArray[np.int16]) -> float: + """Return the RMS amplitude for a mono int16 audio frame.""" + if audio_frame.size == 0: + return 0.0 + samples = audio_frame.astype(np.float64) + return float(np.sqrt(np.mean(samples * samples))) + + +def wav_bytes(audio_frame: NDArray[np.int16], sample_rate: int) -> bytes: + """Encode mono int16 PCM audio as a WAV file.""" + buffer = io.BytesIO() + with wave.open(buffer, "wb") as wav_file: + wav_file.setnchannels(1) + wav_file.setsampwidth(2) + wav_file.setframerate(sample_rate) + wav_file.writeframes(audio_frame.tobytes()) + return buffer.getvalue() + + +def read_wav_audio(wav_payload: bytes) -> tuple[int, NDArray[np.int16]]: + """Decode a mono/stereo 16-bit WAV payload to mono int16 audio.""" + with wave.open(io.BytesIO(wav_payload), "rb") as wav_file: + channels = wav_file.getnchannels() + sample_width = wav_file.getsampwidth() + sample_rate = wav_file.getframerate() + frames = wav_file.readframes(wav_file.getnframes()) + + if sample_width != 2: + raise ValueError(f"Expected 16-bit WAV audio, got sample width {sample_width}") + + audio_frame = np.frombuffer(frames, dtype=np.int16) + if channels > 1: + audio_frame = audio_frame.reshape(-1, channels)[:, 0] + return sample_rate, audio_frame + + +def normalize_wav_bytes(wav_payload: bytes) -> bytes: + """Return a 16-bit mono WAV with concrete RIFF/data sizes.""" + sample_rate, audio_frame = read_wav_audio(wav_payload) + return wav_bytes(audio_frame, sample_rate) + + +def wav_duration_seconds(wav_payload: bytes) -> float: + """Return the duration of a WAV payload.""" + sample_rate, audio_frame = read_wav_audio(wav_payload) + return len(audio_frame) / float(sample_rate) if sample_rate else 0.0 + + +async def binary_response_bytes(response: Any) -> bytes: + """Read bytes from an OpenAI binary response object.""" + content = getattr(response, "content", None) + if isinstance(content, bytes): + return content + + read = getattr(response, "read", None) + if callable(read): + result = read() + if asyncio.iscoroutine(result): + result = await result + if isinstance(result, bytes): + return result + + aread = getattr(response, "aread", None) + if callable(aread): + result = await aread() + if isinstance(result, bytes): + return result + + raise TypeError(f"Unsupported binary response type: {type(response).__name__}") diff --git a/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/backend_check.py b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/backend_check.py new file mode 100644 index 00000000..546a07d1 --- /dev/null +++ b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/backend_check.py @@ -0,0 +1,786 @@ +"""Backend configuration and endpoint smoke checks for the conversation app.""" + +import asyncio +import argparse +from typing import Any, cast +from pathlib import Path + +import numpy as np +from openai import AsyncOpenAI +from numpy.typing import NDArray + +from reachy_mini_conversation_app.config import ( + config, + load_dotenv_file, + loaded_dotenv_keys, + loaded_dotenv_path, +) +from reachy_mini_conversation_app.audio.pcm import ( + wav_bytes, + read_wav_audio, + wav_duration_seconds, + prepare_mono_int16_audio, +) +from reachy_mini_conversation_app.backend_runtime import ( + selected_backend, + backend_config_error, + describe_selected_backend, + local_stt_tts_config_error, + local_stt_stage_config_error, +) +from reachy_mini_conversation_app.tools.core_tools import ToolDependencies +from reachy_mini_conversation_app.local_stt_backend import LocalSTTBackend +from reachy_mini_conversation_app.tools.background_tool_manager import BackgroundToolManager + + +def _required(value: str | None, name: str) -> str: + """Return a required string config value or raise a clear error.""" + if value and value.strip(): + return value.strip() + raise RuntimeError(f"{name} is required") + + +def _backend_config_hint(error: str) -> str | None: + """Return an actionable hint for common backend config errors.""" + if not error.startswith("BACKEND_PROVIDER is missing"): + return None + + keys = loaded_dotenv_keys() + legacy_keys = {"MODEL_NAME", "OPENAI_BASE_URL"} & keys + loaded_path = loaded_dotenv_path() + if legacy_keys: + legacy_list = ", ".join(sorted(legacy_keys)) + location = f" in {loaded_path}" if loaded_path else "" + return ( + f"Found older config keys{location}: {legacy_list}. They are no longer used. " + "Choose one BACKEND_PROVIDER and set the matching new keys: OPENAI_REALTIME_* for " + "openai_realtime, HF_REALTIME_* for hf_realtime, or CHAT_*/STT_*/TTS_* for local_stt." + ) + + if loaded_path is None: + return ( + "No .env file was loaded. Copy .env.example to .env, set BACKEND_PROVIDER to " + "openai_realtime, hf_realtime, or local_stt, or pass --env-file." + ) + + return ( + f"Loaded config from {loaded_path}. Set BACKEND_PROVIDER there to " + "openai_realtime, hf_realtime, or local_stt, or pass --env-file." + ) + + +def _wav_duration_seconds(wav_payload: bytes) -> float: + """Return the duration of a WAV payload.""" + return wav_duration_seconds(wav_payload) + + +def _audio_duration_seconds(sample_rate: int, audio_frame: NDArray[np.int16]) -> float: + """Return the duration of a mono/channel-first int16 frame.""" + if sample_rate <= 0: + return 0.0 + sample_count = audio_frame.shape[-1] if audio_frame.ndim > 1 else len(audio_frame) + return sample_count / float(sample_rate) + + +def _read_wav_audio(wav_payload: bytes) -> tuple[int, NDArray[np.int16]]: + """Decode a WAV payload into mono int16 audio.""" + return read_wav_audio(wav_payload) + + +def _audio_chunks( + audio_frame: NDArray[np.int16], sample_rate: int, *, chunk_ms: float = 100.0 +) -> list[NDArray[np.int16]]: + """Split audio into chunks that resemble browser microphone frames.""" + chunk_size = max(1, int(sample_rate * chunk_ms / 1000.0)) + return [audio_frame[start : start + chunk_size] for start in range(0, len(audio_frame), chunk_size)] + + +def _silence_frame(sample_rate: int, silence_ms: float) -> NDArray[np.int16]: + """Return a mono silence frame long enough to end the mic phrase.""" + sample_count = max(1, int(sample_rate * silence_ms / 1000.0)) + return np.zeros(sample_count, dtype=np.int16) + + +def _tone_wav_bytes() -> bytes: + """Return a tiny placeholder WAV when an endpoint needs valid audio bytes.""" + sample_rate = 16_000 + t = np.linspace(0, 0.25, int(sample_rate * 0.25), endpoint=False) + samples = (np.sin(2 * np.pi * 440 * t) * 2000).astype(np.int16) + return wav_bytes(samples, sample_rate) + + +def _speech_endpoint_error(component: str, context: str, endpoint_path: str, exc: Exception) -> str: + """Return a concise endpoint failure message without exposing secrets.""" + return ( + f"{component} endpoint request failed ({context}). Check the base URL and that the service exposes " + f"{endpoint_path}. {type(exc).__name__}: {exc}" + ) + + +def _model_ids(models_response: Any) -> list[str]: + """Extract model IDs from common OpenAI-compatible /models response shapes.""" + data = ( + models_response.get("data", []) if isinstance(models_response, dict) else getattr(models_response, "data", []) + ) + ids: list[str] = [] + for model in data or []: + model_id = model.get("id") if isinstance(model, dict) else getattr(model, "id", None) + if isinstance(model_id, str) and model_id.strip(): + ids.append(model_id.strip()) + return sorted(set(ids)) + + +def _format_model_ids(model_ids: list[str], *, limit: int = 5) -> str: + """Return a compact non-secret model list for diagnostics.""" + if not model_ids: + return "" + visible = model_ids[:limit] + suffix = f", ... (+{len(model_ids) - limit} more)" if len(model_ids) > limit else "" + return ", ".join(visible) + suffix + + +async def _stt_models_diagnostic_lines() -> list[str]: + """Return diagnostic lines for the STT /models endpoint when available.""" + _required(config.STT_MODEL_NAME, "STT_MODEL_NAME") + client = AsyncOpenAI( + api_key=(config.STT_API_KEY or "not-needed").strip() or "not-needed", + base_url=config.STT_BASE_URL, + ) + try: + models_response = await client.models.list() + except Exception as exc: + return [f"stt_models_endpoint=unavailable ({type(exc).__name__}: {exc})"] + + ids = _model_ids(models_response) + model_listed = config.STT_MODEL_NAME in ids + return [ + "stt_models_endpoint=reachable", + f"stt_model_listed={'yes' if model_listed else 'no'}", + f"stt_available_models={_format_model_ids(ids)}", + ] + + +def _build_fake_local_stt_backend() -> tuple[LocalSTTBackend, BackgroundToolManager, Any]: + """Build local-STT backend dependencies for CLI smoke checks.""" + movement_manager = _FakeMovementManager() + deps = ToolDependencies( + reachy_mini=cast(Any, _FakeReachyMini()), + movement_manager=movement_manager, + ) + tool_manager = BackgroundToolManager() + return ( + LocalSTTBackend( + deps=deps, + tool_manager=tool_manager, + client_factory=AsyncOpenAI, + ), + tool_manager, + movement_manager, + ) + + +def _chat_summary_from_messages(messages: list[dict[str, Any]], *, require_tool: bool) -> tuple[str, list[str]]: + """Return final assistant text and tool result titles from chatbot messages.""" + assistant_text = "" + tool_titles: list[str] = [] + + for message in messages: + content = message.get("content") + if message.get("role") != "assistant" or not isinstance(content, str): + continue + metadata = message.get("metadata") + if isinstance(metadata, dict) and isinstance(metadata.get("title"), str): + tool_titles.append(metadata["title"]) + elif content.startswith("[error]"): + raise RuntimeError(content) + else: + assistant_text = content + + if not assistant_text: + raise RuntimeError("Chat endpoint returned no final assistant response") + if require_tool and not tool_titles: + raise RuntimeError("Chat check did not execute a Reachy tool") + + return assistant_text, tool_titles + + +async def live_realtime_session_check() -> list[str]: + """Exercise the selected realtime backend's session startup path.""" + from reachy_mini_conversation_app.tools.core_tools import ToolDependencies + from reachy_mini_conversation_app.conversation_stream import ConversationStreamHandler + + movement_manager = _FakeMovementManager() + deps = ToolDependencies( + reachy_mini=cast(Any, _FakeReachyMini()), + movement_manager=movement_manager, + ) + handler = ConversationStreamHandler(deps) + + try: + backend = selected_backend() + connected = await handler._ensure_realtime_session("backend-check-realtime-session") + if not connected: + startup_error = getattr(handler, "_startup_error", None) + raise RuntimeError(startup_error or "Realtime session did not connect before the startup timeout") + + return [ + "realtime_session=connected", + f"realtime_model={backend.realtime_model or ''}", + f"realtime_voice={backend.realtime_voice or ''}", + ] + finally: + await handler.shutdown() + startup_task = getattr(handler, "_realtime_startup_task", None) + if startup_task is not None: + try: + await asyncio.wait_for(startup_task, timeout=2.0) + except asyncio.TimeoutError: + startup_task.cancel() + try: + await startup_task + except asyncio.CancelledError: + pass + + +def _stage_name(args: argparse.Namespace) -> str: + """Return the selected live-check stage, preserving --app-flow as a shortcut.""" + stage = getattr(args, "stage", None) + if stage: + return str(stage) + if getattr(args, "app_flow", False): + return "app-flow" + if getattr(args, "live", False) and selected_backend().uses_local_stt: + return "app-flow" + return "chain" + + +def _require_tool_usage_error(args: argparse.Namespace, stage: str) -> str | None: + """Return an error when --require-tool would otherwise be ignored.""" + if not getattr(args, "require_tool", False): + return None + if not getattr(args, "live", False): + return "--require-tool only applies when --live is set." + if not selected_backend().uses_local_stt: + return "--require-tool is only supported for BACKEND_PROVIDER=local_stt --stage chat or --stage app-flow." + if stage not in {"chat", "app-flow"}: + return "--require-tool only applies to --stage chat or --stage app-flow." + return None + + +def _real_reachy_usage_error(args: argparse.Namespace, stage: str) -> str | None: + """Return an error when --real-reachy would otherwise be ignored.""" + if not getattr(args, "real_reachy", False): + return None + if not getattr(args, "live", False) or not selected_backend().uses_local_stt or stage != "app-flow": + return "--real-reachy only applies to BACKEND_PROVIDER=local_stt with --live --stage app-flow." + return None + + +async def _synthesize_input_audio(seed_text: str) -> bytes: + """Use the configured TTS endpoint to generate a speech sample for STT.""" + _required(config.TTS_MODEL_NAME, "TTS_MODEL_NAME") + _required(config.TTS_VOICE, "TTS_VOICE") + backend, tool_manager, _movement_manager = _build_fake_local_stt_backend() + try: + try: + return await backend.synthesize_speech_wav_bytes(seed_text) + except Exception as exc: + raise RuntimeError(_speech_endpoint_error("TTS", backend.tts_context, "POST /audio/speech", exc)) from exc + finally: + await tool_manager.shutdown() + + +async def live_local_stt_probe_check() -> list[str]: + """Probe the local_stt STT endpoint with synthetic audio without requiring recognized text.""" + _required(config.STT_MODEL_NAME, "STT_MODEL_NAME") + model_lines = await _stt_models_diagnostic_lines() + if "stt_model_listed=no" in model_lines: + raise RuntimeError("; ".join(model_lines)) + + input_audio = _tone_wav_bytes() + backend, tool_manager, _movement_manager = _build_fake_local_stt_backend() + try: + try: + transcript = await backend.transcribe_wav_bytes( + input_audio, + filename="backend-check-probe.wav", + ) + except Exception as exc: + raise RuntimeError( + "; ".join( + [ + *model_lines, + _speech_endpoint_error("STT", backend.stt_context, "POST /audio/transcriptions", exc), + ] + ) + ) from exc + finally: + await tool_manager.shutdown() + + return [ + *model_lines, + "input_audio=synthetic probe tone", + f"input_audio_duration={_wav_duration_seconds(input_audio):.2f}s", + "stt_endpoint=reachable", + f"transcript={transcript or ''}", + ] + + +async def live_local_stt_transcription_check(seed_text: str, audio_file: Path | None) -> list[str]: + """Exercise only the local_stt STT endpoint.""" + if audio_file is not None: + input_audio = audio_file.read_bytes() + input_label = str(audio_file) + else: + tts_error = local_stt_tts_config_error() + if tts_error: + raise RuntimeError("--stage stt requires --audio-file unless TTS is configured to synthesize seed audio") + input_audio = await _synthesize_input_audio(seed_text) + input_label = "configured TTS seed" + + _required(config.STT_MODEL_NAME, "STT_MODEL_NAME") + backend, tool_manager, _movement_manager = _build_fake_local_stt_backend() + try: + try: + transcript = await backend.transcribe_wav_bytes( + input_audio or _tone_wav_bytes(), + filename="backend-check.wav", + ) + except Exception as exc: + raise RuntimeError( + _speech_endpoint_error("STT", backend.stt_context, "POST /audio/transcriptions", exc) + ) from exc + finally: + await tool_manager.shutdown() + if not transcript: + raise RuntimeError("STT endpoint returned an empty transcript") + + return [ + f"input_audio={input_label}", + f"input_audio_duration={_wav_duration_seconds(input_audio):.2f}s", + f"transcript={transcript}", + ] + + +async def live_local_stt_chat_check(seed_text: str, *, require_tool: bool) -> list[str]: + """Exercise only the local_stt Chat Completions and Reachy tool path.""" + backend, tool_manager, movement_manager = _build_fake_local_stt_backend() + try: + _required(config.CHAT_MODEL_NAME, "CHAT_MODEL_NAME") + messages = await backend.send_text_message(seed_text) + assistant_text, tool_titles = _chat_summary_from_messages(messages, require_tool=require_tool) + finally: + await tool_manager.shutdown() + + return [ + f"seed_text={seed_text}", + f"assistant_text={assistant_text}", + f"tool_results={', '.join(tool_titles) if tool_titles else ''}", + f"queued_moves={len(movement_manager.queued_moves)}", + ] + + +async def live_local_stt_tts_check(seed_text: str) -> list[str]: + """Exercise only the local_stt TTS endpoint.""" + output_audio = await _synthesize_input_audio(seed_text) + return [ + f"seed_text={seed_text}", + f"output_audio_duration={_wav_duration_seconds(output_audio):.2f}s", + ] + + +async def live_local_stt_check(seed_text: str, audio_file: Path | None) -> list[str]: + """Exercise local_stt endpoints without connecting to a Reachy daemon.""" + if audio_file is not None: + input_audio = audio_file.read_bytes() + input_label = str(audio_file) + else: + input_audio = await _synthesize_input_audio(seed_text) + input_label = "configured TTS seed" + + _required(config.STT_MODEL_NAME, "STT_MODEL_NAME") + backend, tool_manager, _movement_manager = _build_fake_local_stt_backend() + try: + try: + transcript = await backend.transcribe_wav_bytes( + input_audio or _tone_wav_bytes(), + filename="backend-check.wav", + ) + except Exception as exc: + raise RuntimeError( + _speech_endpoint_error("STT", backend.stt_context, "POST /audio/transcriptions", exc) + ) from exc + if not transcript: + raise RuntimeError("STT endpoint returned an empty transcript") + + _required(config.CHAT_MODEL_NAME, "CHAT_MODEL_NAME") + messages = await backend.send_text_message(transcript) + assistant_text, _tool_titles = _chat_summary_from_messages(messages, require_tool=False) + output_audio = await backend.synthesize_speech_wav_bytes(assistant_text) + finally: + await tool_manager.shutdown() + + return [ + f"input_audio={input_label}", + f"input_audio_duration={_wav_duration_seconds(input_audio):.2f}s", + f"transcript={transcript}", + f"assistant_text={assistant_text}", + f"output_audio_duration={_wav_duration_seconds(output_audio):.2f}s", + ] + + +class _FakeReachyMini: + """Small Reachy stand-in for app-flow backend checks.""" + + def get_current_head_pose(self) -> NDArray[np.float64]: + return np.eye(4, dtype=np.float64) + + def get_current_joint_positions(self) -> tuple[NDArray[np.float64], NDArray[np.float64]]: + return np.array([0.0], dtype=np.float64), np.array([0.0, 0.0], dtype=np.float64) + + +class _FakeMovementManager: + """Movement manager stand-in that records queued Reachy moves.""" + + def __init__(self) -> None: + self.queued_moves: list[Any] = [] + self.clear_count = 0 + self.moving_state_durations: list[float] = [] + + def clear_move_queue(self) -> None: + self.clear_count += 1 + self.queued_moves.clear() + + def queue_move(self, move: Any) -> None: + self.queued_moves.append(move) + + def set_moving_state(self, duration: float) -> None: + self.moving_state_durations.append(duration) + + def is_idle(self) -> bool: + return True + + +class _AppFlowDeps: + """Dependencies and cleanup hooks for app-flow checks.""" + + def __init__(self, reachy_mini: Any, movement_manager: Any, *, real_reachy: bool = False): + self.reachy_mini = reachy_mini + self.movement_manager = movement_manager + self.real_reachy = real_reachy + + def start(self) -> None: + if self.real_reachy: + self.movement_manager.start() + + def movement_summary_lines(self) -> list[str]: + if not self.real_reachy: + return [f"queued_moves={len(self.movement_manager.queued_moves)}"] + + status = self.movement_manager.get_status() + loop_frequency = status.get("loop_frequency", {}) if isinstance(status, dict) else {} + return [ + "movement_manager=real", + f"movement_queue_size={status.get('queue_size', '') if isinstance(status, dict) else ''}", + f"movement_loop_samples={loop_frequency.get('samples', '')}", + ] + + def stop(self) -> None: + if self.real_reachy: + self.movement_manager.stop() + try: + self.reachy_mini.client.disconnect() + except Exception: + pass + + +def _build_app_flow_deps(*, real_reachy: bool, robot_name: str | None) -> _AppFlowDeps: + """Build fake or real Reachy dependencies for app-flow checks.""" + if not real_reachy: + movement_manager = _FakeMovementManager() + return _AppFlowDeps( + reachy_mini=cast(Any, _FakeReachyMini()), + movement_manager=movement_manager, + real_reachy=False, + ) + + from reachy_mini import ReachyMini + from reachy_mini_conversation_app.moves import MovementManager + + robot_kwargs = {"robot_name": robot_name} if robot_name else {} + reachy_mini = ReachyMini(**robot_kwargs) + movement_manager = MovementManager(current_robot=reachy_mini) + return _AppFlowDeps(reachy_mini=reachy_mini, movement_manager=movement_manager, real_reachy=True) + + +async def live_local_stt_app_flow_check( + seed_text: str, + audio_file: Path | None, + *, + require_tool: bool, + real_reachy: bool = False, + robot_name: str | None = None, +) -> list[str]: + """Exercise the app handler's mic -> local_stt STT -> chat/tools -> TTS flow.""" + from reachy_mini_conversation_app.tools.core_tools import ToolDependencies + from reachy_mini_conversation_app.conversation_stream import ( + MIC_TRANSCRIPTION_SAMPLE_RATE, + ConversationStreamHandler, + ) + + if audio_file is not None: + input_audio = audio_file.read_bytes() + input_label = str(audio_file) + else: + input_audio = await _synthesize_input_audio(seed_text) + input_label = "configured TTS seed" + + sample_rate, input_frame = _read_wav_audio(input_audio or _tone_wav_bytes()) + prepared_frame = prepare_mono_int16_audio( + (sample_rate, input_frame), + MIC_TRANSCRIPTION_SAMPLE_RATE, + ) + + app_flow_deps = _build_app_flow_deps(real_reachy=real_reachy, robot_name=robot_name) + app_flow_deps.start() + deps = ToolDependencies(reachy_mini=app_flow_deps.reachy_mini, movement_manager=app_flow_deps.movement_manager) + handler = ConversationStreamHandler(deps) + + transcript = "" + assistant_text = "" + tool_titles: list[str] = [] + error_messages: list[str] = [] + output_audio_duration = 0.0 + try: + for chunk in _audio_chunks(prepared_frame, MIC_TRANSCRIPTION_SAMPLE_RATE): + await handler.receive((MIC_TRANSCRIPTION_SAMPLE_RATE, chunk)) + + silence_ms = max(config.MIC_TRANSCRIPTION_SILENCE_MS + 50.0, 1.0) + await handler.receive( + (MIC_TRANSCRIPTION_SAMPLE_RATE, _silence_frame(MIC_TRANSCRIPTION_SAMPLE_RATE, silence_ms)) + ) + + await _wait_for_app_flow_mic_tasks(handler) + + while not handler.output_queue.empty(): + output = handler.output_queue.get_nowait() + if isinstance(output, tuple): + output_sample_rate, audio_frame = output + if isinstance(output_sample_rate, int) and isinstance(audio_frame, np.ndarray): + output_audio_duration += _audio_duration_seconds( + output_sample_rate, + cast(NDArray[np.int16], np.asarray(audio_frame, dtype=np.int16)), + ) + continue + + for message in getattr(output, "args", ()): + if not isinstance(message, dict): + continue + content = message.get("content") + if message.get("role") == "user" and isinstance(content, str): + transcript = content + elif message.get("role") == "assistant" and isinstance(content, str): + metadata = message.get("metadata") + if isinstance(metadata, dict) and isinstance(metadata.get("title"), str): + tool_titles.append(metadata["title"]) + if real_reachy: + await asyncio.sleep(0.2) + elif content.startswith("[error]"): + error_messages.append(content) + elif not content.startswith("[error]"): + assistant_text = content + finally: + await handler.shutdown() + app_flow_deps.stop() + + if error_messages: + raise RuntimeError("; ".join(error_messages)) + if not transcript: + raise RuntimeError("App-flow check did not produce a transcript") + if not assistant_text: + raise RuntimeError("App-flow check did not produce a final assistant response") + if output_audio_duration <= 0: + raise RuntimeError("App-flow check did not produce synthesized audio") + if require_tool and not tool_titles: + raise RuntimeError("App-flow check did not execute a Reachy tool") + + return [ + f"input_audio={input_label}", + f"input_audio_duration={_wav_duration_seconds(input_audio):.2f}s", + f"transcript={transcript}", + f"assistant_text={assistant_text}", + f"tool_results={', '.join(tool_titles) if tool_titles else ''}", + *app_flow_deps.movement_summary_lines(), + f"output_audio_duration={output_audio_duration:.2f}s", + ] + + +async def _wait_for_app_flow_mic_tasks(handler: Any) -> None: + """Wait for the handler's microphone transcription task to finish.""" + for _ in range(50): + tasks = list(getattr(handler, "_mic_transcription_tasks", ())) + if tasks: + await asyncio.gather(*tasks) + return + if not handler.output_queue.empty(): + return + await asyncio.sleep(0.05) + + raise RuntimeError("App-flow check did not flush microphone audio through the receive path") + + +async def run_check(args: argparse.Namespace) -> int: + """Run the selected backend check.""" + env_file = getattr(args, "env_file", None) + if env_file is not None and not load_dotenv_file(env_file): + print(f"[error] Could not load env file: {env_file}") + return 2 + + stage = _stage_name(args) + + for line in describe_selected_backend(): + print(line) + + error = ( + local_stt_stage_config_error(stage) + if getattr(args, "live", False) and selected_backend().uses_local_stt + else backend_config_error() + ) + if error: + print(f"[error] {error}") + hint = _backend_config_hint(error) + if hint: + print(f"[hint] {hint}") + return 2 + + require_tool_error = _require_tool_usage_error(args, stage) + if require_tool_error: + print(f"[error] {require_tool_error}") + return 2 + + real_reachy_error = _real_reachy_usage_error(args, stage) + if real_reachy_error: + print(f"[error] {real_reachy_error}") + return 2 + + print( + f"[ok] local_stt {stage} config is valid" + if getattr(args, "live", False) and selected_backend().uses_local_stt + else "[ok] backend config is valid" + ) + + if not args.live: + return 0 + + backend = selected_backend() + if not backend.uses_local_stt: + if not backend.uses_realtime: + print("[error] --live supports realtime backends and BACKEND_PROVIDER=local_stt") + return 2 + + try: + results = await live_realtime_session_check() + except Exception as e: + print(f"[error] realtime live session check failed: {type(e).__name__}: {e}") + return 1 + + for line in results: + print(line) + print("[ok] realtime live session check completed") + return 0 + + try: + if stage == "stt-probe": + results = await live_local_stt_probe_check() + elif stage == "stt": + results = await live_local_stt_transcription_check(args.seed_text, args.audio_file) + elif stage == "chat": + results = await live_local_stt_chat_check( + args.seed_text, + require_tool=getattr(args, "require_tool", False), + ) + elif stage == "tts": + results = await live_local_stt_tts_check(args.seed_text) + elif stage == "app-flow": + results = await live_local_stt_app_flow_check( + args.seed_text, + args.audio_file, + require_tool=getattr(args, "require_tool", False), + real_reachy=getattr(args, "real_reachy", False), + robot_name=getattr(args, "robot_name", None), + ) + else: + results = await live_local_stt_check(args.seed_text, args.audio_file) + except Exception as e: + print(f"[error] local_stt live {stage} check failed: {type(e).__name__}: {e}") + return 1 + + for line in results: + print(line) + print(f"[ok] local_stt live {stage} check completed") + return 0 + + +def build_parser() -> argparse.ArgumentParser: + """Build the backend check argument parser.""" + parser = argparse.ArgumentParser(description="Validate Reachy conversation backend configuration.") + parser.add_argument( + "--live", + action="store_true", + help="call configured endpoints. Realtime backends validate session startup; local_stt can validate each stage.", + ) + parser.add_argument( + "--seed-text", + default="Hi Reachy, please introduce yourself in one short sentence.", + help="text to synthesize as the input speech sample when --live is used without --audio-file.", + ) + parser.add_argument( + "--audio-file", + type=Path, + help="WAV or provider-supported audio file to send to STT instead of synthesizing seed text.", + ) + parser.add_argument( + "--stage", + choices=["stt-probe", "stt", "chat", "tts", "chain", "app-flow"], + default=None, + help=( + "with --live and BACKEND_PROVIDER=local_stt, check one stage. " + "Defaults to app-flow for local_stt live checks and is ignored by realtime backends." + ), + ) + parser.add_argument( + "--env-file", + type=Path, + help="load this dotenv file for backend validation instead of the default .env search.", + ) + parser.add_argument( + "--app-flow", + action="store_true", + help="shortcut for --stage app-flow.", + ) + parser.add_argument( + "--require-tool", + action="store_true", + help="with --live --stage chat or --live --stage app-flow, fail unless the model executes a Reachy tool.", + ) + parser.add_argument( + "--real-reachy", + action="store_true", + help="with --live --stage app-flow, use the real Reachy SDK/daemon instead of fake tool dependencies.", + ) + parser.add_argument( + "--robot-name", + help="optional Reachy daemon robot name/prefix, used with --real-reachy.", + ) + return parser + + +def main() -> None: + """CLI entry point.""" + parser = build_parser() + args = parser.parse_args() + raise SystemExit(asyncio.run(run_check(args))) + + +if __name__ == "__main__": + main() diff --git a/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/backend_runtime.py b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/backend_runtime.py new file mode 100644 index 00000000..f94f3c9f --- /dev/null +++ b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/backend_runtime.py @@ -0,0 +1,209 @@ +from typing import Final, Literal +from dataclasses import dataclass + +from reachy_mini_conversation_app.config import ( + BACKEND_LOCAL_STT, + BACKEND_PROVIDERS, + BACKEND_HF_REALTIME, + BACKEND_OPENAI_REALTIME, + HF_REALTIME_CONNECTION_LOCAL, + config, + is_configured_value, + openai_realtime_api_key, +) + + +OPENAI_COMPATIBLE_STREAM_SAMPLE_RATE: Final[int] = 24_000 +HF_REALTIME_STREAM_SAMPLE_RATE: Final[int] = 16_000 + +BackendTransport = Literal["realtime", "local_stt", "unknown"] + + +@dataclass(frozen=True) +class BackendRuntimeSpec: + """Runtime traits derived from the single BACKEND_PROVIDER selector.""" + + provider: str + transport: BackendTransport + stream_sample_rate: int + realtime_model: str = "" + realtime_voice: str = "" + refresh_realtime_client_on_retry: bool = False + + @property + def uses_realtime(self) -> bool: + """Return whether microphone/text input should use a realtime websocket.""" + return self.transport == "realtime" + + @property + def uses_local_stt(self) -> bool: + """Return whether microphone input should use STT plus Chat Completions.""" + return self.transport == "local_stt" + + +def selected_backend() -> BackendRuntimeSpec: + """Return the runtime backend selected by BACKEND_PROVIDER.""" + provider = config.BACKEND_PROVIDER + if provider == BACKEND_OPENAI_REALTIME: + return BackendRuntimeSpec( + provider=provider, + transport="realtime", + stream_sample_rate=OPENAI_COMPATIBLE_STREAM_SAMPLE_RATE, + realtime_model=config.OPENAI_REALTIME_MODEL or "", + realtime_voice=config.OPENAI_REALTIME_VOICE or "", + refresh_realtime_client_on_retry=False, + ) + + if provider == BACKEND_HF_REALTIME: + return BackendRuntimeSpec( + provider=provider, + transport="realtime", + stream_sample_rate=HF_REALTIME_STREAM_SAMPLE_RATE, + realtime_model=(config.HF_REALTIME_MODEL or "").strip(), + realtime_voice=config.HF_REALTIME_VOICE or "", + refresh_realtime_client_on_retry=True, + ) + + if provider == BACKEND_LOCAL_STT: + return BackendRuntimeSpec( + provider=provider, + transport="local_stt", + stream_sample_rate=OPENAI_COMPATIBLE_STREAM_SAMPLE_RATE, + ) + + return BackendRuntimeSpec( + provider=provider, + transport="unknown", + stream_sample_rate=OPENAI_COMPATIBLE_STREAM_SAMPLE_RATE, + ) + + +def configured_marker(value: str | None) -> str: + """Return a display-safe configured/missing marker.""" + return "configured" if is_configured_value(value) else "missing" + + +def local_stt_chat_config_error() -> str | None: + """Return a config error for the local-STT Chat Completions component.""" + if not is_configured_value(config.CHAT_API_KEY): + return ( + "CHAT_API_KEY is missing for BACKEND_PROVIDER=local_stt. If .env uses " + "CHAT_API_KEY=${NVIDIA_INFERENCE_API_KEY}, make sure NVIDIA_INFERENCE_API_KEY is exported " + "in the shell that starts the app." + ) + if not is_configured_value(config.CHAT_BASE_URL): + return "CHAT_BASE_URL is missing for BACKEND_PROVIDER=local_stt." + if not is_configured_value(config.CHAT_MODEL_NAME): + return "CHAT_MODEL_NAME is missing for BACKEND_PROVIDER=local_stt." + return None + + +def local_stt_transcription_config_error() -> str | None: + """Return a config error for the local-STT speech-to-text component.""" + if not is_configured_value(config.STT_API_KEY): + return "STT_API_KEY is missing for BACKEND_PROVIDER=local_stt." + if not is_configured_value(config.STT_BASE_URL): + return "STT_BASE_URL is missing for BACKEND_PROVIDER=local_stt." + if not is_configured_value(config.STT_MODEL_NAME): + return "STT_MODEL_NAME is missing for BACKEND_PROVIDER=local_stt." + return None + + +def local_stt_tts_config_error() -> str | None: + """Return a config error for the local-STT text-to-speech component.""" + if not is_configured_value(config.TTS_API_KEY): + return "TTS_API_KEY is missing for BACKEND_PROVIDER=local_stt." + if not is_configured_value(config.TTS_BASE_URL): + return "TTS_BASE_URL is missing for BACKEND_PROVIDER=local_stt." + if not is_configured_value(config.TTS_MODEL_NAME): + return "TTS_MODEL_NAME is missing for BACKEND_PROVIDER=local_stt." + return None + + +def backend_config_error() -> str | None: + """Return a startup-blocking config error for the selected backend, if any.""" + backend = selected_backend() + expected = ", ".join(sorted(BACKEND_PROVIDERS)) + if not is_configured_value(backend.provider): + return f"BACKEND_PROVIDER is missing; set it to one of {expected}." + + if backend.provider not in BACKEND_PROVIDERS: + return f"Unknown BACKEND_PROVIDER={backend.provider!r}; expected one of {expected}." + + if backend.provider == BACKEND_OPENAI_REALTIME: + if openai_realtime_api_key() is None: + return ( + "OPENAI_API_KEY is missing for BACKEND_PROVIDER=openai_realtime. " + "Export OPENAI_API_KEY in the shell that starts the app; set OPENAI_REALTIME_API_KEY " + "only if this app needs a different OpenAI key." + ) + if not is_configured_value(config.OPENAI_REALTIME_BASE_URL): + return "OPENAI_REALTIME_BASE_URL is missing for BACKEND_PROVIDER=openai_realtime." + if not is_configured_value(backend.realtime_model): + return "OPENAI_REALTIME_MODEL is missing for BACKEND_PROVIDER=openai_realtime." + return None + + if backend.provider == BACKEND_HF_REALTIME: + if config.HF_REALTIME_CONNECTION_MODE == HF_REALTIME_CONNECTION_LOCAL and not is_configured_value( + config.HF_REALTIME_WS_URL + ): + return "HF_REALTIME_WS_URL is missing for HF_REALTIME_CONNECTION_MODE=local." + return None + + if backend.provider == BACKEND_LOCAL_STT: + return local_stt_chat_config_error() or local_stt_transcription_config_error() or local_stt_tts_config_error() + + return None + + +def local_stt_stage_config_error(stage: str) -> str | None: + """Return the config error relevant to a local_stt live-check stage.""" + if stage in {"stt", "stt-probe"}: + return local_stt_transcription_config_error() + if stage == "chat": + return local_stt_chat_config_error() + if stage == "tts": + return local_stt_tts_config_error() + return backend_config_error() + + +def describe_selected_backend() -> list[str]: + """Return a non-secret summary of the selected backend configuration.""" + backend = selected_backend() + lines = [f"backend={backend.provider}"] + if backend.provider == BACKEND_OPENAI_REALTIME: + lines.extend( + [ + f"openai_realtime.base_url={config.OPENAI_REALTIME_BASE_URL}", + f"openai_realtime.model={backend.realtime_model}", + f"openai_realtime.voice={backend.realtime_voice}", + f"openai_realtime.api_key={configured_marker(openai_realtime_api_key())}", + ] + ) + elif backend.provider == BACKEND_HF_REALTIME: + lines.extend( + [ + f"hf_realtime.connection_mode={config.HF_REALTIME_CONNECTION_MODE}", + f"hf_realtime.session_url={config.HF_REALTIME_SESSION_URL}", + f"hf_realtime.ws_url={config.HF_REALTIME_WS_URL or ''}", + f"hf_realtime.model={backend.realtime_model or ''}", + f"hf_realtime.voice={backend.realtime_voice}", + f"hf_realtime.token={configured_marker(config.HF_TOKEN)}", + ] + ) + elif backend.provider == BACKEND_LOCAL_STT: + lines.extend( + [ + f"chat.base_url={config.CHAT_BASE_URL}", + f"chat.model={config.CHAT_MODEL_NAME}", + f"chat.api_key={configured_marker(config.CHAT_API_KEY)}", + f"stt.base_url={config.STT_BASE_URL}", + f"stt.model={config.STT_MODEL_NAME}", + f"stt.api_key={configured_marker(config.STT_API_KEY)}", + f"tts.base_url={config.TTS_BASE_URL}", + f"tts.model={config.TTS_MODEL_NAME}", + f"tts.voice={config.TTS_VOICE}", + f"tts.api_key={configured_marker(config.TTS_API_KEY)}", + ] + ) + return lines diff --git a/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/camera_worker.py b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/camera_worker.py index e625c009..046bd8db 100644 --- a/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/camera_worker.py +++ b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/camera_worker.py @@ -51,7 +51,7 @@ def __init__(self, reachy_mini: ReachyMini, head_tracker: Any = None) -> None: # Face tracking timing variables (same as main_works.py) self.last_face_detected_time: float | None = None self.interpolation_start_time: float | None = None - self.interpolation_start_pose: NDArray[np.float32] | None = None + self.interpolation_start_pose: NDArray[np.float64] | None = None self.face_lost_delay = 2.0 # seconds to wait before starting interpolation self.interpolation_duration = 1.0 # seconds to interpolate back to neutral @@ -102,7 +102,7 @@ def working_loop(self) -> None: logger.debug("Starting camera working loop") # Initialize head tracker if available - neutral_pose = np.eye(4) # Neutral pose (identity matrix) + neutral_pose = np.eye(4, dtype=np.float64) # Neutral pose (identity matrix) self.previous_head_tracking_state = self.is_head_tracking_enabled while not self._stop_event.is_set(): @@ -190,7 +190,7 @@ def working_loop(self) -> None: current_translation = self.face_tracking_offsets[:3] current_rotation_euler = self.face_tracking_offsets[3:] # Convert to 4x4 pose matrix - pose_matrix = np.eye(4, dtype=np.float32) + pose_matrix = np.eye(4, dtype=np.float64) pose_matrix[:3, 3] = current_translation pose_matrix[:3, :3] = R.from_euler( "xyz", @@ -199,12 +199,17 @@ def working_loop(self) -> None: self.interpolation_start_pose = pose_matrix # Calculate interpolation progress (t from 0 to 1) - elapsed_interpolation = current_time - self.interpolation_start_time + interpolation_start_time = self.interpolation_start_time + interpolation_start_pose = self.interpolation_start_pose + if interpolation_start_time is None or interpolation_start_pose is None: + continue + + elapsed_interpolation = current_time - interpolation_start_time t = min(1.0, elapsed_interpolation / self.interpolation_duration) # Interpolate between current pose and neutral pose interpolated_pose = linear_pose_interpolation( - self.interpolation_start_pose, + interpolation_start_pose, neutral_pose, t, ) diff --git a/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/chat_completions.py b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/chat_completions.py new file mode 100644 index 00000000..882f6d0b --- /dev/null +++ b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/chat_completions.py @@ -0,0 +1,270 @@ +"""Chat Completions text/tool loop for the local-STT backend.""" + +import re +import json +import uuid +import asyncio +import logging +from typing import Any, Final, cast + +from reachy_mini_conversation_app.prompts import get_session_instructions +from reachy_mini_conversation_app.tools.core_tools import ( + ToolDependencies, + get_tool_specs, + dispatch_tool_call_with_manager, +) +from reachy_mini_conversation_app.tools.background_tool_manager import BackgroundToolManager + + +logger = logging.getLogger(__name__) + +_RATE_LIMIT_ATTEMPTS: Final[int] = 3 +_RATE_LIMIT_DEFAULT_DELAY: Final[float] = 5.0 +_RATE_LIMIT_MAX_DELAY: Final[float] = 30.0 +_TOOL_ROUND_LIMIT: Final[int] = 5 +_WAIT_RE: Final[re.Pattern[str]] = re.compile( + r"(?:please\s+)?wait\s+(\d+(?:\.\d+)?)\s+seconds?", + re.IGNORECASE, +) + + +def chat_completion_tool_specs() -> list[dict[str, Any]]: + """Convert Realtime-style tool specs to Chat Completions tool specs.""" + chat_tools: list[dict[str, Any]] = [] + for tool in get_tool_specs(): + if tool.get("type") != "function": + continue + chat_tools.append( + { + "type": "function", + "function": { + "name": tool.get("name"), + "description": tool.get("description", ""), + "parameters": tool.get("parameters", {}), + }, + } + ) + return chat_tools + + +def _tool_call_value(tool_call: Any, name: str) -> Any: + """Read a value from either an SDK model object or a dict.""" + if isinstance(tool_call, dict): + return tool_call.get(name) + return getattr(tool_call, name, None) + + +def _message_value(message: Any, name: str) -> Any: + """Read a chat message value from either an SDK model object or a dict.""" + if isinstance(message, dict): + return message.get(name) + return getattr(message, name, None) + + +def _choice_message(choice: Any) -> Any: + """Read a Chat Completions choice message from either an object or a dict.""" + if isinstance(choice, dict): + return choice.get("message") + return getattr(choice, "message", None) + + +def _tool_call_function_value(tool_call: Any, name: str) -> Any: + """Read a function value from either an SDK tool-call object or a dict.""" + function = _tool_call_value(tool_call, "function") + if isinstance(function, dict): + return function.get(name) + return getattr(function, name, None) + + +def _serialize_tool_call(tool_call: Any) -> dict[str, Any]: + """Convert a tool call into the dict shape Chat Completions expects.""" + if hasattr(tool_call, "model_dump"): + return tool_call.model_dump() + if isinstance(tool_call, dict): + return tool_call + return { + "id": getattr(tool_call, "id", None), + "type": getattr(tool_call, "type", "function"), + "function": { + "name": getattr(getattr(tool_call, "function", None), "name", None), + "arguments": getattr(getattr(tool_call, "function", None), "arguments", "{}"), + }, + } + + +def _rate_limit_delay(exc: Exception) -> float | None: + """Return a retry delay when a Chat Completions error is a provider rate limit.""" + status_code = getattr(exc, "status_code", None) + message = str(exc) + is_rate_limit = ( + status_code == 429 + or "ratelimit" in type(exc).__name__.lower() + or "rate limit" in message.lower() + or "throttling" in message.lower() + ) + if not is_rate_limit: + return None + + response = getattr(exc, "response", None) + headers = getattr(response, "headers", None) + if headers is not None: + retry_after = headers.get("retry-after") or headers.get("Retry-After") + if retry_after: + try: + return min(float(retry_after), _RATE_LIMIT_MAX_DELAY) + except (TypeError, ValueError): + pass + + match = _WAIT_RE.search(message) + if match: + try: + return min(float(match.group(1)), _RATE_LIMIT_MAX_DELAY) + except (TypeError, ValueError): + pass + + return _RATE_LIMIT_DEFAULT_DELAY + + +class ChatCompletionRunner: + """Run a Chat Completions turn, including Reachy tool calls.""" + + def __init__( + self, + *, + client: Any, + deps: ToolDependencies, + tool_manager: BackgroundToolManager, + model_name: str, + base_url: str | None, + ) -> None: + """Initialize the runner.""" + self.client = client + self.deps = deps + self.tool_manager = tool_manager + self.model_name = model_name + self.base_url = base_url + + async def create_with_retries(self, operation: str, **kwargs: Any) -> Any: + """Create a Chat Completions response, retrying short provider rate limits.""" + for attempt in range(1, _RATE_LIMIT_ATTEMPTS + 1): + try: + return await self.client.chat.completions.create(**kwargs) + except Exception as e: + delay = _rate_limit_delay(e) + if delay is None or attempt == _RATE_LIMIT_ATTEMPTS: + raise + + logger.warning( + "%s rate-limited by provider; retrying in %.1fs (%d/%d)", + operation, + delay, + attempt, + _RATE_LIMIT_ATTEMPTS, + ) + await asyncio.sleep(delay) + + raise RuntimeError("unreachable Chat Completions retry state") + + async def send_text_message(self, text: str) -> list[dict[str, Any]]: + """Send a user text turn through Chat Completions and Reachy tools.""" + chatbot_messages: list[dict[str, Any]] = [{"role": "user", "content": text}] + chat_messages: list[dict[str, Any]] = [ + {"role": "system", "content": get_session_instructions()}, + {"role": "user", "content": text}, + ] + chat_tools = chat_completion_tool_specs() + + operation = "Chat Completions request" + request_kwargs: dict[str, Any] = { + "model": self.model_name, + "messages": cast(Any, chat_messages), + "tools": cast(Any, chat_tools), + "tool_choice": "auto", + } + + for tool_round in range(_TOOL_ROUND_LIMIT + 1): + try: + completion = await self.create_with_retries(operation, **request_kwargs) + except Exception as e: + logger.exception("%s failed", operation) + chatbot_messages.append( + { + "role": "assistant", + "content": ( + f"[error] {operation} failed " + f"(model={self.model_name!r}, base_url={self.base_url!r}): " + f"{type(e).__name__}: {e}" + ), + } + ) + return chatbot_messages + + choice = completion.choices[0] if completion.choices else None + assistant_message = _choice_message(choice) if choice else None + assistant_content = _message_value(assistant_message, "content") or "" + tool_calls = _message_value(assistant_message, "tool_calls") or [] + + if not tool_calls: + chatbot_messages.append({"role": "assistant", "content": assistant_content or "[no response]"}) + return chatbot_messages + + if tool_round >= _TOOL_ROUND_LIMIT: + chatbot_messages.append( + { + "role": "assistant", + "content": ( + f"[error] Chat Completions exceeded the configured tool round limit ({_TOOL_ROUND_LIMIT})." + ), + } + ) + return chatbot_messages + + chat_messages.append( + { + "role": "assistant", + "content": assistant_content, + "tool_calls": [_serialize_tool_call(tool_call) for tool_call in tool_calls], + } + ) + + for tool_call in tool_calls: + tool_call_id = _tool_call_value(tool_call, "id") or str(uuid.uuid4()) + tool_name = _tool_call_function_value(tool_call, "name") + args_json = _tool_call_function_value(tool_call, "arguments") or "{}" + if not isinstance(tool_name, str): + tool_result = {"error": "tool call did not include a valid function name"} + else: + tool_result = await dispatch_tool_call_with_manager( + tool_name, + args_json, + self.deps, + self.tool_manager, + ) + + tool_result_json = json.dumps(tool_result) + chat_messages.append( + { + "role": "tool", + "tool_call_id": tool_call_id, + "content": tool_result_json, + } + ) + chatbot_messages.append( + { + "role": "assistant", + "content": tool_result_json, + "metadata": { + "title": f"Used tool {tool_name or 'unknown'}", + "status": "done", + }, + } + ) + + operation = "Chat Completions tool follow-up" + request_kwargs = { + "model": self.model_name, + "messages": cast(Any, chat_messages), + "tools": cast(Any, chat_tools), + } + + raise RuntimeError("unreachable Chat Completions tool round state") diff --git a/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/config.py b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/config.py index 115fcdae..c90f86ac 100644 --- a/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/config.py +++ b/projects/reachy-mini-openshell/src/reachy_mini_conversation_app/config.py @@ -1,16 +1,36 @@ import os +import re import sys import logging +from typing import Mapping from pathlib import Path -from collections.abc import Mapping +from dataclasses import dataclass +from urllib.parse import urlsplit, parse_qsl, urlunsplit -from dotenv import find_dotenv, load_dotenv, dotenv_values +from dotenv import find_dotenv, dotenv_values LOCKED_PROFILE = "_reachy_mini_conversation_app_locked_profile" DEFAULT_PROFILES_DIRECTORY = Path(__file__).parent / "profiles" +BACKEND_OPENAI_REALTIME = "openai_realtime" +BACKEND_HF_REALTIME = "hf_realtime" +BACKEND_LOCAL_STT = "local_stt" +BACKEND_PROVIDERS = { + BACKEND_OPENAI_REALTIME, + BACKEND_HF_REALTIME, + BACKEND_LOCAL_STT, +} + +HF_REALTIME_CONNECTION_DEPLOYED = "deployed" +HF_REALTIME_CONNECTION_LOCAL = "local" +HF_REALTIME_SESSION_PROXY_URL = "https://pollen-robotics-reachy-mini-realtime-url.hf.space/session" + logger = logging.getLogger(__name__) +_MARKDOWN_URL_RE = re.compile(r"^\[(?P

    %sRV^-CZ@J>^87)(N!1KRXcaJ@&KcaU*&Nd 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