Spaces:
Running
Running
File size: 4,991 Bytes
fe69a86 81fbbe1 fe69a86 81fbbe1 fe69a86 a4df877 cf1f373 a4df877 fe69a86 a4df877 cf1f373 81fbbe1 a4df877 90b3858 fe69a86 25509ee fe69a86 a4df877 fe69a86 cf1f373 4fbec9d cf1f373 6106aed b26fcdd cf1f373 fe69a86 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 | [build-system]
requires = ["setuptools"]
build-backend = "setuptools.build_meta"
[project]
name = "Reachy_OpenWebUI"
version = "0.6.6.2"
authors = [{ name = "Jacid23" }]
description = "OpenWebUI-first Reachy Mini conversation app using OpenWebUI-managed STT, chat, workspace tools, and TTS."
readme = "README.md"
requires-python = ">=3.10"
dependencies = [
#Media
# NOTE: gradio and fastrtc are required at runtime but deliberately NOT
# declared. Verified with uv dry-runs against reachy-mini==1.9.0:
# - gradio==5.50.1.dev1 is the conflict (its pydantic<=2.12.3 cap vs
# reachy-mini's pydantic>=2.12.5) — declaring it makes the installer
# downgrade the SDK to 1.8.0, which breaks the app-side camera.
# - fastrtc==0.0.34 resolves, but declaring it makes uv swap gradio
# down to 5.23.1 (untested with fastrtc; 5.50.1.dev1 was pinned for
# fastrtc compatibility), so it stays venv-owned alongside gradio.
# Both live in the shared apps venv. Fresh venv bootstrap:
# uv pip install gradio==5.50.1.dev1 fastrtc==0.0.34
# Re-declare both when fastrtc ships gradio-6 support.
"av",
"aiortc>=1.13.0",
"fastapi",
"httpx",
"numpy",
"onnxruntime",
"opencv-python>=4.12.0.88",
"python-multipart",
"pyyaml",
"requests",
"zxing-cpp>=2.3.0",
# Exact pin: 0.10.14 is numpy-2-clean (verified via uv dry-run);
# 0.10.15+ caps numpy<2 and conflicts with reachy-mini>=1.9.0.
"mediapipe==0.10.14",
"mcp",
#Environment variables
"python-dotenv",
# Client library used for local Ollama/vLLM/OpenWebUI chat endpoints
"openai>=2.30.0",
#Reachy mini
"reachy_mini_dances_library",
"reachy_mini_toolbox",
"reachy-mini>=1.9.0",
"gradio_client>=1.13.3",
#Required at import/runtime by camera_worker, local audio, and local pipeline
"scipy",
#OpenWebUI pipeline (VAD/audio upload/chat/TTS). Torch/Silero are optional at runtime
# because Reachy's shared venv already owns torch, and fresh torch pulls can
# drag in giant CUDA/triton wheels.
"soundfile",
"setuptools<82",
"pydantic",
"starlette",
]
[project.optional-dependencies]
local_vision = [
"accelerate>=1.13.0; platform_machine != 'aarch64' and platform_machine != 'arm64'",
"torch>=2.1; platform_machine != 'aarch64' and platform_machine != 'arm64'",
"transformers==5.3.0; platform_machine != 'aarch64' and platform_machine != 'arm64'",
"num2words",
]
[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.scripts]
reachy-mini-conversation-app-openwebui = "Reachy_OpenWebUI.main:main"
[tool.uv]
dependency-metadata = [
# Upstream metadata currently marks `gstreamer-msvc-runtime` as unconditional.
# It should only be required on Windows. Temp fix.
{ name = "gstreamer-libs", version = "1.28.1", requires-dist = ["gstreamer-msvc-runtime; sys_platform == 'win32'", "setuptools"] },
]
[project.entry-points."reachy_mini_apps"]
Reachy_OpenWebUI = "Reachy_OpenWebUI.main:ReachyMiniConversationOpenWebUIApp"
[tool.setuptools]
package-dir = { "" = "src" }
include-package-data = true
[tool.setuptools.packages.find]
where = ["src"]
[tool.setuptools.package-data]
Reachy_OpenWebUI = [
"images/*",
"static/*",
"static/assets/*",
"sub_apps/cookAIware/data/*.json",
"sub_apps/cookAIware/profiles/**/*.txt",
"profiles/**/*.yaml",
"sub_apps/cookAIware/profiles/**/*.py",
"sub_apps/marionette/marionette/static/*",
"sub_apps/marionette/marionette/static/fonts/*",
"sub_apps/marionette/marionette/assets/*",
"sub_apps/reachy_mirror/static/*",
".env.example",
"demos/**/*.txt",
"profiles/**/*.txt",
"profiles/**/*.py",
]
reachy_talk_data = [
"profiles/**/*.txt",
"profiles/**/*.py",
]
[tool.ruff]
line-length = 119
exclude = [".venv", "dist", "build", "**/__pycache__", "*.egg-info", ".mypy_cache", ".pytest_cache"]
[tool.ruff.lint]
select = [
"E", # pycodestyle errors
"F", # pyflakes
"W", # pycodestyle warnings
"I", # isort
"C4", # flake8-comprehensions
"D", # pydocstyle
]
ignore = [
"E501", # handled by formatter
"D100", # ignore missing module docstrings
"D203", # blank line before class docstring (conflicts with D211)
"D213", # summary on second line (conflicts with D212)
]
[tool.ruff.lint.isort]
length-sort = true
lines-after-imports = 2
no-lines-before = ["standard-library", "local-folder"]
known-local-folder = ["Reachy_OpenWebUI"]
known-first-party = ["reachy_mini", "reachy_mini_dances_library", "reachy_mini_toolbox"]
split-on-trailing-comma = true
[tool.ruff.format]
quote-style = "double"
indent-style = "space"
skip-magic-trailing-comma = false
line-ending = "auto"
[tool.mypy]
python_version = "3.12"
files = ["src/"]
ignore_missing_imports = true
strict = true
show_error_codes = true
warn_unused_ignores = true
|