Improving the logging when tools are not properly found or loaded.
Browse files- src/reachy_mini_conversation_app/tools/core_tools.py +27 -5
- uv.lock +121 -10
src/reachy_mini_conversation_app/tools/core_tools.py
CHANGED
|
@@ -124,6 +124,7 @@ def _load_profile_tools() -> None:
|
|
| 124 |
# Import each tool
|
| 125 |
for tool_name in tool_names:
|
| 126 |
loaded = False
|
|
|
|
| 127 |
|
| 128 |
# Try profile-local tool first
|
| 129 |
try:
|
|
@@ -131,10 +132,23 @@ def _load_profile_tools() -> None:
|
|
| 131 |
importlib.import_module(profile_tool_module)
|
| 132 |
logger.info(f"✓ Loaded profile-local tool: {tool_name}")
|
| 133 |
loaded = True
|
| 134 |
-
except ModuleNotFoundError:
|
| 135 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 136 |
except Exception as e:
|
| 137 |
-
|
|
|
|
|
|
|
| 138 |
|
| 139 |
# Try shared tools library if not found in profile
|
| 140 |
if not loaded:
|
|
@@ -144,9 +158,17 @@ def _load_profile_tools() -> None:
|
|
| 144 |
logger.info(f"✓ Loaded shared tool: {tool_name}")
|
| 145 |
loaded = True
|
| 146 |
except ModuleNotFoundError:
|
| 147 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 148 |
except Exception as e:
|
| 149 |
-
logger.
|
|
|
|
| 150 |
|
| 151 |
|
| 152 |
def _initialize_tools() -> None:
|
|
|
|
| 124 |
# Import each tool
|
| 125 |
for tool_name in tool_names:
|
| 126 |
loaded = False
|
| 127 |
+
profile_error = None
|
| 128 |
|
| 129 |
# Try profile-local tool first
|
| 130 |
try:
|
|
|
|
| 132 |
importlib.import_module(profile_tool_module)
|
| 133 |
logger.info(f"✓ Loaded profile-local tool: {tool_name}")
|
| 134 |
loaded = True
|
| 135 |
+
except ModuleNotFoundError as e:
|
| 136 |
+
# Check if it's the tool module itself that's missing (expected) or a dependency
|
| 137 |
+
if tool_name in str(e):
|
| 138 |
+
pass # Tool not in profile directory, try shared tools
|
| 139 |
+
else:
|
| 140 |
+
# Missing import dependency within the tool file
|
| 141 |
+
profile_error = f"Missing dependency: {e}"
|
| 142 |
+
logger.error(f"❌ Failed to load profile-local tool '{tool_name}': {profile_error}")
|
| 143 |
+
logger.error(f" Module path: {profile_tool_module}")
|
| 144 |
+
except ImportError as e:
|
| 145 |
+
profile_error = f"Import error: {e}"
|
| 146 |
+
logger.error(f"❌ Failed to load profile-local tool '{tool_name}': {profile_error}")
|
| 147 |
+
logger.error(f" Module path: {profile_tool_module}")
|
| 148 |
except Exception as e:
|
| 149 |
+
profile_error = f"{type(e).__name__}: {e}"
|
| 150 |
+
logger.error(f"❌ Failed to load profile-local tool '{tool_name}': {profile_error}")
|
| 151 |
+
logger.error(f" Module path: {profile_tool_module}")
|
| 152 |
|
| 153 |
# Try shared tools library if not found in profile
|
| 154 |
if not loaded:
|
|
|
|
| 158 |
logger.info(f"✓ Loaded shared tool: {tool_name}")
|
| 159 |
loaded = True
|
| 160 |
except ModuleNotFoundError:
|
| 161 |
+
if profile_error:
|
| 162 |
+
# Already logged error from profile attempt
|
| 163 |
+
logger.error(f"❌ Tool '{tool_name}' also not found in shared tools")
|
| 164 |
+
else:
|
| 165 |
+
logger.warning(f"⚠️ Tool '{tool_name}' not found in profile or shared tools")
|
| 166 |
+
except ImportError as e:
|
| 167 |
+
logger.error(f"❌ Failed to load shared tool '{tool_name}': Import error: {e}")
|
| 168 |
+
logger.error(f" Module path: {shared_tool_module}")
|
| 169 |
except Exception as e:
|
| 170 |
+
logger.error(f"❌ Failed to load shared tool '{tool_name}': {type(e).__name__}: {e}")
|
| 171 |
+
logger.error(f" Module path: {shared_tool_module}")
|
| 172 |
|
| 173 |
|
| 174 |
def _initialize_tools() -> None:
|
uv.lock
CHANGED
|
@@ -379,6 +379,15 @@ wheels = [
|
|
| 379 |
{ url = "https://files.pythonhosted.org/packages/92/15/5e713098a085f970ccf88550194d277d244464d7b3a7365ad92acb4b6dc1/av-16.0.1-cp314-cp314t-win_amd64.whl", hash = "sha256:6368d4ff153d75469d2a3217bc403630dc870a72fe0a014d9135de550d731a86", size = 32460624, upload-time = "2025-10-13T12:28:48.767Z" },
|
| 380 |
]
|
| 381 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 382 |
[[package]]
|
| 383 |
name = "brotli"
|
| 384 |
version = "1.1.0"
|
|
@@ -540,6 +549,15 @@ wheels = [
|
|
| 540 |
{ url = "https://files.pythonhosted.org/packages/ae/3a/dbeec9d1ee0844c679f6bb5d6ad4e9f198b1224f4e7a32825f47f6192b0c/cffi-2.0.0-cp314-cp314t-win_arm64.whl", hash = "sha256:0a1527a803f0a659de1af2e1fd700213caba79377e27e4693648c2923da066f9", size = 184195, upload-time = "2025-09-08T23:23:43.004Z" },
|
| 541 |
]
|
| 542 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 543 |
[[package]]
|
| 544 |
name = "charset-normalizer"
|
| 545 |
version = "3.4.4"
|
|
@@ -917,6 +935,15 @@ wheels = [
|
|
| 917 |
{ 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" },
|
| 918 |
]
|
| 919 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 920 |
[[package]]
|
| 921 |
name = "distro"
|
| 922 |
version = "1.9.0"
|
|
@@ -962,7 +989,7 @@ name = "exceptiongroup"
|
|
| 962 |
version = "1.3.0"
|
| 963 |
source = { registry = "https://pypi.org/simple" }
|
| 964 |
dependencies = [
|
| 965 |
-
{ name = "typing-extensions", marker = "python_full_version < '3.
|
| 966 |
]
|
| 967 |
sdist = { url = "https://files.pythonhosted.org/packages/0b/9f/a65090624ecf468cdca03533906e7c69ed7588582240cfe7cc9e770b50eb/exceptiongroup-1.3.0.tar.gz", hash = "sha256:b241f5885f560bc56a59ee63ca4c6a8bfa46ae4ad651af316d4e81817bb9fd88", size = 29749, upload-time = "2025-05-10T17:42:51.123Z" }
|
| 968 |
wheels = [
|
|
@@ -1431,6 +1458,15 @@ wheels = [
|
|
| 1431 |
{ url = "https://files.pythonhosted.org/packages/39/7b/bb06b061991107cd8783f300adff3e7b7f284e330fd82f507f2a1417b11d/huggingface_hub-0.34.4-py3-none-any.whl", hash = "sha256:9b365d781739c93ff90c359844221beef048403f1bc1f1c123c191257c3c890a", size = 561452, upload-time = "2025-08-08T09:14:50.159Z" },
|
| 1432 |
]
|
| 1433 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1434 |
[[package]]
|
| 1435 |
name = "idna"
|
| 1436 |
version = "3.11"
|
|
@@ -2428,6 +2464,15 @@ wheels = [
|
|
| 2428 |
{ url = "https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl", hash = "sha256:0030d386a9a06dee3565298b4a734b68589749a544acbb6c412dc9e2489ec6ec", size = 2034406, upload-time = "2025-05-29T11:35:04.961Z" },
|
| 2429 |
]
|
| 2430 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2431 |
[[package]]
|
| 2432 |
name = "num2words"
|
| 2433 |
version = "0.5.14"
|
|
@@ -2571,7 +2616,7 @@ name = "nvidia-cudnn-cu12"
|
|
| 2571 |
version = "9.10.2.21"
|
| 2572 |
source = { registry = "https://pypi.org/simple" }
|
| 2573 |
dependencies = [
|
| 2574 |
-
{ name = "nvidia-cublas-cu12" },
|
| 2575 |
]
|
| 2576 |
wheels = [
|
| 2577 |
{ url = "https://files.pythonhosted.org/packages/ba/51/e123d997aa098c61d029f76663dedbfb9bc8dcf8c60cbd6adbe42f76d049/nvidia_cudnn_cu12-9.10.2.21-py3-none-manylinux_2_27_x86_64.whl", hash = "sha256:949452be657fa16687d0930933f032835951ef0892b37d2d53824d1a84dc97a8", size = 706758467, upload-time = "2025-06-06T21:54:08.597Z" },
|
|
@@ -2582,7 +2627,7 @@ name = "nvidia-cufft-cu12"
|
|
| 2582 |
version = "11.3.3.83"
|
| 2583 |
source = { registry = "https://pypi.org/simple" }
|
| 2584 |
dependencies = [
|
| 2585 |
-
{ name = "nvidia-nvjitlink-cu12" },
|
| 2586 |
]
|
| 2587 |
wheels = [
|
| 2588 |
{ url = "https://files.pythonhosted.org/packages/1f/13/ee4e00f30e676b66ae65b4f08cb5bcbb8392c03f54f2d5413ea99a5d1c80/nvidia_cufft_cu12-11.3.3.83-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:4d2dd21ec0b88cf61b62e6b43564355e5222e4a3fb394cac0db101f2dd0d4f74", size = 193118695, upload-time = "2025-03-07T01:45:27.821Z" },
|
|
@@ -2609,9 +2654,9 @@ name = "nvidia-cusolver-cu12"
|
|
| 2609 |
version = "11.7.3.90"
|
| 2610 |
source = { registry = "https://pypi.org/simple" }
|
| 2611 |
dependencies = [
|
| 2612 |
-
{ name = "nvidia-cublas-cu12" },
|
| 2613 |
-
{ name = "nvidia-cusparse-cu12" },
|
| 2614 |
-
{ name = "nvidia-nvjitlink-cu12" },
|
| 2615 |
]
|
| 2616 |
wheels = [
|
| 2617 |
{ url = "https://files.pythonhosted.org/packages/85/48/9a13d2975803e8cf2777d5ed57b87a0b6ca2cc795f9a4f59796a910bfb80/nvidia_cusolver_cu12-11.7.3.90-py3-none-manylinux_2_27_x86_64.whl", hash = "sha256:4376c11ad263152bd50ea295c05370360776f8c3427b30991df774f9fb26c450", size = 267506905, upload-time = "2025-03-07T01:47:16.273Z" },
|
|
@@ -2622,7 +2667,7 @@ name = "nvidia-cusparse-cu12"
|
|
| 2622 |
version = "12.5.8.93"
|
| 2623 |
source = { registry = "https://pypi.org/simple" }
|
| 2624 |
dependencies = [
|
| 2625 |
-
{ name = "nvidia-nvjitlink-cu12" },
|
| 2626 |
]
|
| 2627 |
wheels = [
|
| 2628 |
{ url = "https://files.pythonhosted.org/packages/c2/f5/e1854cb2f2bcd4280c44736c93550cc300ff4b8c95ebe370d0aa7d2b473d/nvidia_cusparse_cu12-12.5.8.93-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:1ec05d76bbbd8b61b06a80e1eaf8cf4959c3d4ce8e711b65ebd0443bb0ebb13b", size = 288216466, upload-time = "2025-03-07T01:48:13.779Z" },
|
|
@@ -3046,6 +3091,22 @@ wheels = [
|
|
| 3046 |
{ url = "https://files.pythonhosted.org/packages/a8/87/77cc11c7a9ea9fd05503def69e3d18605852cd0d4b0d3b8f15bbeb3ef1d1/pooch-1.8.2-py3-none-any.whl", hash = "sha256:3529a57096f7198778a5ceefd5ac3ef0e4d06a6ddaf9fc2d609b806f25302c47", size = 64574, upload-time = "2024-06-06T16:53:44.343Z" },
|
| 3047 |
]
|
| 3048 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 3049 |
[[package]]
|
| 3050 |
name = "propcache"
|
| 3051 |
version = "0.4.1"
|
|
@@ -3514,6 +3575,20 @@ wheels = [
|
|
| 3514 |
{ url = "https://files.pythonhosted.org/packages/a8/a4/20da314d277121d6534b3a980b29035dcd51e6744bd79075a6ce8fa4eb8d/pytest-8.4.2-py3-none-any.whl", hash = "sha256:872f880de3fc3a5bdc88a11b39c9710c3497a547cfa9320bc3c5e62fbf272e79", size = 365750, upload-time = "2025-09-04T14:34:20.226Z" },
|
| 3515 |
]
|
| 3516 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 3517 |
[[package]]
|
| 3518 |
name = "python-dateutil"
|
| 3519 |
version = "2.9.0.post0"
|
|
@@ -3688,8 +3763,11 @@ yolo-vision = [
|
|
| 3688 |
[package.dev-dependencies]
|
| 3689 |
dev = [
|
| 3690 |
{ name = "mypy" },
|
|
|
|
| 3691 |
{ name = "pytest" },
|
|
|
|
| 3692 |
{ name = "ruff" },
|
|
|
|
| 3693 |
]
|
| 3694 |
|
| 3695 |
[package.metadata]
|
|
@@ -3698,20 +3776,23 @@ requires-dist = [
|
|
| 3698 |
{ name = "fastrtc", specifier = ">=0.0.33" },
|
| 3699 |
{ name = "gradio", specifier = ">=5.49.0" },
|
| 3700 |
{ name = "huggingface-hub", specifier = ">=0.34.4" },
|
|
|
|
| 3701 |
{ name = "mediapipe", marker = "extra == 'mediapipe-vision'", specifier = ">=0.10.14" },
|
|
|
|
| 3702 |
{ name = "num2words", marker = "extra == 'local-vision'" },
|
| 3703 |
{ name = "openai", specifier = ">=2.1" },
|
| 3704 |
{ name = "opencv-python", specifier = ">=4.12.0.88" },
|
| 3705 |
{ name = "python-dotenv" },
|
| 3706 |
{ name = "reachy-mini", specifier = ">=1.0.0rc4" },
|
| 3707 |
-
{ name = "reachy-mini-conversation-app", extras = ["local-vision"], marker = "extra == 'all-vision'" },
|
| 3708 |
-
{ name = "reachy-mini-conversation-app", extras = ["mediapipe-vision"], marker = "extra == 'all-vision'" },
|
| 3709 |
-
{ name = "reachy-mini-conversation-app", extras = ["yolo-vision"], marker = "extra == 'all-vision'" },
|
| 3710 |
{ name = "reachy-mini-dances-library" },
|
| 3711 |
{ name = "reachy-mini-toolbox" },
|
|
|
|
| 3712 |
{ name = "supervision", marker = "extra == 'yolo-vision'" },
|
|
|
|
| 3713 |
{ name = "torch", marker = "extra == 'local-vision'" },
|
|
|
|
| 3714 |
{ name = "transformers", marker = "extra == 'local-vision'" },
|
|
|
|
| 3715 |
{ name = "ultralytics", marker = "extra == 'yolo-vision'" },
|
| 3716 |
]
|
| 3717 |
provides-extras = ["local-vision", "yolo-vision", "mediapipe-vision", "all-vision"]
|
|
@@ -3719,8 +3800,11 @@ provides-extras = ["local-vision", "yolo-vision", "mediapipe-vision", "all-visio
|
|
| 3719 |
[package.metadata.requires-dev]
|
| 3720 |
dev = [
|
| 3721 |
{ name = "mypy", specifier = "==1.18.2" },
|
|
|
|
| 3722 |
{ name = "pytest" },
|
|
|
|
| 3723 |
{ name = "ruff", specifier = "==0.12.0" },
|
|
|
|
| 3724 |
]
|
| 3725 |
|
| 3726 |
[[package]]
|
|
@@ -4638,6 +4722,18 @@ wheels = [
|
|
| 4638 |
{ url = "https://files.pythonhosted.org/packages/78/64/7713ffe4b5983314e9d436a90d5bd4f63b6054e2aca783a3cfc44cb95bbf/typer-0.20.0-py3-none-any.whl", hash = "sha256:5b463df6793ec1dca6213a3cf4c0f03bc6e322ac5e16e13ddd622a889489784a", size = 47028, upload-time = "2025-10-20T17:03:47.617Z" },
|
| 4639 |
]
|
| 4640 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 4641 |
[[package]]
|
| 4642 |
name = "typing-extensions"
|
| 4643 |
version = "4.15.0"
|
|
@@ -4782,6 +4878,21 @@ wheels = [
|
|
| 4782 |
{ url = "https://files.pythonhosted.org/packages/e4/16/c1fd27e9549f3c4baf1dc9c20c456cd2f822dbf8de9f463824b0c0357e06/uvloop-0.22.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:6cde23eeda1a25c75b2e07d39970f3374105d5eafbaab2a4482be82f272d5a5e", size = 4296730, upload-time = "2025-10-16T22:17:00.744Z" },
|
| 4783 |
]
|
| 4784 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 4785 |
[[package]]
|
| 4786 |
name = "watchfiles"
|
| 4787 |
version = "1.1.1"
|
|
|
|
| 379 |
{ url = "https://files.pythonhosted.org/packages/92/15/5e713098a085f970ccf88550194d277d244464d7b3a7365ad92acb4b6dc1/av-16.0.1-cp314-cp314t-win_amd64.whl", hash = "sha256:6368d4ff153d75469d2a3217bc403630dc870a72fe0a014d9135de550d731a86", size = 32460624, upload-time = "2025-10-13T12:28:48.767Z" },
|
| 380 |
]
|
| 381 |
|
| 382 |
+
[[package]]
|
| 383 |
+
name = "backports-asyncio-runner"
|
| 384 |
+
version = "1.2.0"
|
| 385 |
+
source = { registry = "https://pypi.org/simple" }
|
| 386 |
+
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" }
|
| 387 |
+
wheels = [
|
| 388 |
+
{ 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" },
|
| 389 |
+
]
|
| 390 |
+
|
| 391 |
[[package]]
|
| 392 |
name = "brotli"
|
| 393 |
version = "1.1.0"
|
|
|
|
| 549 |
{ url = "https://files.pythonhosted.org/packages/ae/3a/dbeec9d1ee0844c679f6bb5d6ad4e9f198b1224f4e7a32825f47f6192b0c/cffi-2.0.0-cp314-cp314t-win_arm64.whl", hash = "sha256:0a1527a803f0a659de1af2e1fd700213caba79377e27e4693648c2923da066f9", size = 184195, upload-time = "2025-09-08T23:23:43.004Z" },
|
| 550 |
]
|
| 551 |
|
| 552 |
+
[[package]]
|
| 553 |
+
name = "cfgv"
|
| 554 |
+
version = "3.4.0"
|
| 555 |
+
source = { registry = "https://pypi.org/simple" }
|
| 556 |
+
sdist = { url = "https://files.pythonhosted.org/packages/11/74/539e56497d9bd1d484fd863dd69cbbfa653cd2aa27abfe35653494d85e94/cfgv-3.4.0.tar.gz", hash = "sha256:e52591d4c5f5dead8e0f673fb16db7949d2cfb3f7da4582893288f0ded8fe560", size = 7114, upload-time = "2023-08-12T20:38:17.776Z" }
|
| 557 |
+
wheels = [
|
| 558 |
+
{ url = "https://files.pythonhosted.org/packages/c5/55/51844dd50c4fc7a33b653bfaba4c2456f06955289ca770a5dbd5fd267374/cfgv-3.4.0-py2.py3-none-any.whl", hash = "sha256:b7265b1f29fd3316bfcd2b330d63d024f2bfd8bcb8b0272f8e19a504856c48f9", size = 7249, upload-time = "2023-08-12T20:38:16.269Z" },
|
| 559 |
+
]
|
| 560 |
+
|
| 561 |
[[package]]
|
| 562 |
name = "charset-normalizer"
|
| 563 |
version = "3.4.4"
|
|
|
|
| 935 |
{ 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" },
|
| 936 |
]
|
| 937 |
|
| 938 |
+
[[package]]
|
| 939 |
+
name = "distlib"
|
| 940 |
+
version = "0.4.0"
|
| 941 |
+
source = { registry = "https://pypi.org/simple" }
|
| 942 |
+
sdist = { url = "https://files.pythonhosted.org/packages/96/8e/709914eb2b5749865801041647dc7f4e6d00b549cfe88b65ca192995f07c/distlib-0.4.0.tar.gz", hash = "sha256:feec40075be03a04501a973d81f633735b4b69f98b05450592310c0f401a4e0d", size = 614605, upload-time = "2025-07-17T16:52:00.465Z" }
|
| 943 |
+
wheels = [
|
| 944 |
+
{ url = "https://files.pythonhosted.org/packages/33/6b/e0547afaf41bf2c42e52430072fa5658766e3d65bd4b03a563d1b6336f57/distlib-0.4.0-py2.py3-none-any.whl", hash = "sha256:9659f7d87e46584a30b5780e43ac7a2143098441670ff0a49d5f9034c54a6c16", size = 469047, upload-time = "2025-07-17T16:51:58.613Z" },
|
| 945 |
+
]
|
| 946 |
+
|
| 947 |
[[package]]
|
| 948 |
name = "distro"
|
| 949 |
version = "1.9.0"
|
|
|
|
| 989 |
version = "1.3.0"
|
| 990 |
source = { registry = "https://pypi.org/simple" }
|
| 991 |
dependencies = [
|
| 992 |
+
{ name = "typing-extensions", marker = "python_full_version < '3.11'" },
|
| 993 |
]
|
| 994 |
sdist = { url = "https://files.pythonhosted.org/packages/0b/9f/a65090624ecf468cdca03533906e7c69ed7588582240cfe7cc9e770b50eb/exceptiongroup-1.3.0.tar.gz", hash = "sha256:b241f5885f560bc56a59ee63ca4c6a8bfa46ae4ad651af316d4e81817bb9fd88", size = 29749, upload-time = "2025-05-10T17:42:51.123Z" }
|
| 995 |
wheels = [
|
|
|
|
| 1458 |
{ url = "https://files.pythonhosted.org/packages/39/7b/bb06b061991107cd8783f300adff3e7b7f284e330fd82f507f2a1417b11d/huggingface_hub-0.34.4-py3-none-any.whl", hash = "sha256:9b365d781739c93ff90c359844221beef048403f1bc1f1c123c191257c3c890a", size = 561452, upload-time = "2025-08-08T09:14:50.159Z" },
|
| 1459 |
]
|
| 1460 |
|
| 1461 |
+
[[package]]
|
| 1462 |
+
name = "identify"
|
| 1463 |
+
version = "2.6.15"
|
| 1464 |
+
source = { registry = "https://pypi.org/simple" }
|
| 1465 |
+
sdist = { url = "https://files.pythonhosted.org/packages/ff/e7/685de97986c916a6d93b3876139e00eef26ad5bbbd61925d670ae8013449/identify-2.6.15.tar.gz", hash = "sha256:e4f4864b96c6557ef2a1e1c951771838f4edc9df3a72ec7118b338801b11c7bf", size = 99311, upload-time = "2025-10-02T17:43:40.631Z" }
|
| 1466 |
+
wheels = [
|
| 1467 |
+
{ url = "https://files.pythonhosted.org/packages/0f/1c/e5fd8f973d4f375adb21565739498e2e9a1e54c858a97b9a8ccfdc81da9b/identify-2.6.15-py2.py3-none-any.whl", hash = "sha256:1181ef7608e00704db228516541eb83a88a9f94433a8c80bb9b5bd54b1d81757", size = 99183, upload-time = "2025-10-02T17:43:39.137Z" },
|
| 1468 |
+
]
|
| 1469 |
+
|
| 1470 |
[[package]]
|
| 1471 |
name = "idna"
|
| 1472 |
version = "3.11"
|
|
|
|
| 2464 |
{ url = "https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl", hash = "sha256:0030d386a9a06dee3565298b4a734b68589749a544acbb6c412dc9e2489ec6ec", size = 2034406, upload-time = "2025-05-29T11:35:04.961Z" },
|
| 2465 |
]
|
| 2466 |
|
| 2467 |
+
[[package]]
|
| 2468 |
+
name = "nodeenv"
|
| 2469 |
+
version = "1.9.1"
|
| 2470 |
+
source = { registry = "https://pypi.org/simple" }
|
| 2471 |
+
sdist = { url = "https://files.pythonhosted.org/packages/43/16/fc88b08840de0e0a72a2f9d8c6bae36be573e475a6326ae854bcc549fc45/nodeenv-1.9.1.tar.gz", hash = "sha256:6ec12890a2dab7946721edbfbcd91f3319c6ccc9aec47be7c7e6b7011ee6645f", size = 47437, upload-time = "2024-06-04T18:44:11.171Z" }
|
| 2472 |
+
wheels = [
|
| 2473 |
+
{ url = "https://files.pythonhosted.org/packages/d2/1d/1b658dbd2b9fa9c4c9f32accbfc0205d532c8c6194dc0f2a4c0428e7128a/nodeenv-1.9.1-py2.py3-none-any.whl", hash = "sha256:ba11c9782d29c27c70ffbdda2d7415098754709be8a7056d79a737cd901155c9", size = 22314, upload-time = "2024-06-04T18:44:08.352Z" },
|
| 2474 |
+
]
|
| 2475 |
+
|
| 2476 |
[[package]]
|
| 2477 |
name = "num2words"
|
| 2478 |
version = "0.5.14"
|
|
|
|
| 2616 |
version = "9.10.2.21"
|
| 2617 |
source = { registry = "https://pypi.org/simple" }
|
| 2618 |
dependencies = [
|
| 2619 |
+
{ name = "nvidia-cublas-cu12", marker = "sys_platform != 'win32'" },
|
| 2620 |
]
|
| 2621 |
wheels = [
|
| 2622 |
{ url = "https://files.pythonhosted.org/packages/ba/51/e123d997aa098c61d029f76663dedbfb9bc8dcf8c60cbd6adbe42f76d049/nvidia_cudnn_cu12-9.10.2.21-py3-none-manylinux_2_27_x86_64.whl", hash = "sha256:949452be657fa16687d0930933f032835951ef0892b37d2d53824d1a84dc97a8", size = 706758467, upload-time = "2025-06-06T21:54:08.597Z" },
|
|
|
|
| 2627 |
version = "11.3.3.83"
|
| 2628 |
source = { registry = "https://pypi.org/simple" }
|
| 2629 |
dependencies = [
|
| 2630 |
+
{ name = "nvidia-nvjitlink-cu12", marker = "sys_platform != 'win32'" },
|
| 2631 |
]
|
| 2632 |
wheels = [
|
| 2633 |
{ url = "https://files.pythonhosted.org/packages/1f/13/ee4e00f30e676b66ae65b4f08cb5bcbb8392c03f54f2d5413ea99a5d1c80/nvidia_cufft_cu12-11.3.3.83-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:4d2dd21ec0b88cf61b62e6b43564355e5222e4a3fb394cac0db101f2dd0d4f74", size = 193118695, upload-time = "2025-03-07T01:45:27.821Z" },
|
|
|
|
| 2654 |
version = "11.7.3.90"
|
| 2655 |
source = { registry = "https://pypi.org/simple" }
|
| 2656 |
dependencies = [
|
| 2657 |
+
{ name = "nvidia-cublas-cu12", marker = "sys_platform != 'win32'" },
|
| 2658 |
+
{ name = "nvidia-cusparse-cu12", marker = "sys_platform != 'win32'" },
|
| 2659 |
+
{ name = "nvidia-nvjitlink-cu12", marker = "sys_platform != 'win32'" },
|
| 2660 |
]
|
| 2661 |
wheels = [
|
| 2662 |
{ url = "https://files.pythonhosted.org/packages/85/48/9a13d2975803e8cf2777d5ed57b87a0b6ca2cc795f9a4f59796a910bfb80/nvidia_cusolver_cu12-11.7.3.90-py3-none-manylinux_2_27_x86_64.whl", hash = "sha256:4376c11ad263152bd50ea295c05370360776f8c3427b30991df774f9fb26c450", size = 267506905, upload-time = "2025-03-07T01:47:16.273Z" },
|
|
|
|
| 2667 |
version = "12.5.8.93"
|
| 2668 |
source = { registry = "https://pypi.org/simple" }
|
| 2669 |
dependencies = [
|
| 2670 |
+
{ name = "nvidia-nvjitlink-cu12", marker = "sys_platform != 'win32'" },
|
| 2671 |
]
|
| 2672 |
wheels = [
|
| 2673 |
{ url = "https://files.pythonhosted.org/packages/c2/f5/e1854cb2f2bcd4280c44736c93550cc300ff4b8c95ebe370d0aa7d2b473d/nvidia_cusparse_cu12-12.5.8.93-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:1ec05d76bbbd8b61b06a80e1eaf8cf4959c3d4ce8e711b65ebd0443bb0ebb13b", size = 288216466, upload-time = "2025-03-07T01:48:13.779Z" },
|
|
|
|
| 3091 |
{ url = "https://files.pythonhosted.org/packages/a8/87/77cc11c7a9ea9fd05503def69e3d18605852cd0d4b0d3b8f15bbeb3ef1d1/pooch-1.8.2-py3-none-any.whl", hash = "sha256:3529a57096f7198778a5ceefd5ac3ef0e4d06a6ddaf9fc2d609b806f25302c47", size = 64574, upload-time = "2024-06-06T16:53:44.343Z" },
|
| 3092 |
]
|
| 3093 |
|
| 3094 |
+
[[package]]
|
| 3095 |
+
name = "pre-commit"
|
| 3096 |
+
version = "4.4.0"
|
| 3097 |
+
source = { registry = "https://pypi.org/simple" }
|
| 3098 |
+
dependencies = [
|
| 3099 |
+
{ name = "cfgv" },
|
| 3100 |
+
{ name = "identify" },
|
| 3101 |
+
{ name = "nodeenv" },
|
| 3102 |
+
{ name = "pyyaml" },
|
| 3103 |
+
{ name = "virtualenv" },
|
| 3104 |
+
]
|
| 3105 |
+
sdist = { url = "https://files.pythonhosted.org/packages/a6/49/7845c2d7bf6474efd8e27905b51b11e6ce411708c91e829b93f324de9929/pre_commit-4.4.0.tar.gz", hash = "sha256:f0233ebab440e9f17cabbb558706eb173d19ace965c68cdce2c081042b4fab15", size = 197501, upload-time = "2025-11-08T21:12:11.607Z" }
|
| 3106 |
+
wheels = [
|
| 3107 |
+
{ url = "https://files.pythonhosted.org/packages/27/11/574fe7d13acf30bfd0a8dd7fa1647040f2b8064f13f43e8c963b1e65093b/pre_commit-4.4.0-py2.py3-none-any.whl", hash = "sha256:b35ea52957cbf83dcc5d8ee636cbead8624e3a15fbfa61a370e42158ac8a5813", size = 226049, upload-time = "2025-11-08T21:12:10.228Z" },
|
| 3108 |
+
]
|
| 3109 |
+
|
| 3110 |
[[package]]
|
| 3111 |
name = "propcache"
|
| 3112 |
version = "0.4.1"
|
|
|
|
| 3575 |
{ url = "https://files.pythonhosted.org/packages/a8/a4/20da314d277121d6534b3a980b29035dcd51e6744bd79075a6ce8fa4eb8d/pytest-8.4.2-py3-none-any.whl", hash = "sha256:872f880de3fc3a5bdc88a11b39c9710c3497a547cfa9320bc3c5e62fbf272e79", size = 365750, upload-time = "2025-09-04T14:34:20.226Z" },
|
| 3576 |
]
|
| 3577 |
|
| 3578 |
+
[[package]]
|
| 3579 |
+
name = "pytest-asyncio"
|
| 3580 |
+
version = "1.3.0"
|
| 3581 |
+
source = { registry = "https://pypi.org/simple" }
|
| 3582 |
+
dependencies = [
|
| 3583 |
+
{ name = "backports-asyncio-runner", marker = "python_full_version < '3.11'" },
|
| 3584 |
+
{ name = "pytest" },
|
| 3585 |
+
{ name = "typing-extensions", marker = "python_full_version < '3.13'" },
|
| 3586 |
+
]
|
| 3587 |
+
sdist = { url = "https://files.pythonhosted.org/packages/90/2c/8af215c0f776415f3590cac4f9086ccefd6fd463befeae41cd4d3f193e5a/pytest_asyncio-1.3.0.tar.gz", hash = "sha256:d7f52f36d231b80ee124cd216ffb19369aa168fc10095013c6b014a34d3ee9e5", size = 50087, upload-time = "2025-11-10T16:07:47.256Z" }
|
| 3588 |
+
wheels = [
|
| 3589 |
+
{ url = "https://files.pythonhosted.org/packages/e5/35/f8b19922b6a25bc0880171a2f1a003eaeb93657475193ab516fd87cac9da/pytest_asyncio-1.3.0-py3-none-any.whl", hash = "sha256:611e26147c7f77640e6d0a92a38ed17c3e9848063698d5c93d5aa7aa11cebff5", size = 15075, upload-time = "2025-11-10T16:07:45.537Z" },
|
| 3590 |
+
]
|
| 3591 |
+
|
| 3592 |
[[package]]
|
| 3593 |
name = "python-dateutil"
|
| 3594 |
version = "2.9.0.post0"
|
|
|
|
| 3763 |
[package.dev-dependencies]
|
| 3764 |
dev = [
|
| 3765 |
{ name = "mypy" },
|
| 3766 |
+
{ name = "pre-commit" },
|
| 3767 |
{ name = "pytest" },
|
| 3768 |
+
{ name = "pytest-asyncio" },
|
| 3769 |
{ name = "ruff" },
|
| 3770 |
+
{ name = "types-requests" },
|
| 3771 |
]
|
| 3772 |
|
| 3773 |
[package.metadata]
|
|
|
|
| 3776 |
{ name = "fastrtc", specifier = ">=0.0.33" },
|
| 3777 |
{ name = "gradio", specifier = ">=5.49.0" },
|
| 3778 |
{ name = "huggingface-hub", specifier = ">=0.34.4" },
|
| 3779 |
+
{ name = "mediapipe", marker = "extra == 'all-vision'", specifier = ">=0.10.14" },
|
| 3780 |
{ name = "mediapipe", marker = "extra == 'mediapipe-vision'", specifier = ">=0.10.14" },
|
| 3781 |
+
{ name = "num2words", marker = "extra == 'all-vision'" },
|
| 3782 |
{ name = "num2words", marker = "extra == 'local-vision'" },
|
| 3783 |
{ name = "openai", specifier = ">=2.1" },
|
| 3784 |
{ name = "opencv-python", specifier = ">=4.12.0.88" },
|
| 3785 |
{ name = "python-dotenv" },
|
| 3786 |
{ name = "reachy-mini", specifier = ">=1.0.0rc4" },
|
|
|
|
|
|
|
|
|
|
| 3787 |
{ name = "reachy-mini-dances-library" },
|
| 3788 |
{ name = "reachy-mini-toolbox" },
|
| 3789 |
+
{ name = "supervision", marker = "extra == 'all-vision'" },
|
| 3790 |
{ name = "supervision", marker = "extra == 'yolo-vision'" },
|
| 3791 |
+
{ name = "torch", marker = "extra == 'all-vision'" },
|
| 3792 |
{ name = "torch", marker = "extra == 'local-vision'" },
|
| 3793 |
+
{ name = "transformers", marker = "extra == 'all-vision'" },
|
| 3794 |
{ name = "transformers", marker = "extra == 'local-vision'" },
|
| 3795 |
+
{ name = "ultralytics", marker = "extra == 'all-vision'" },
|
| 3796 |
{ name = "ultralytics", marker = "extra == 'yolo-vision'" },
|
| 3797 |
]
|
| 3798 |
provides-extras = ["local-vision", "yolo-vision", "mediapipe-vision", "all-vision"]
|
|
|
|
| 3800 |
[package.metadata.requires-dev]
|
| 3801 |
dev = [
|
| 3802 |
{ name = "mypy", specifier = "==1.18.2" },
|
| 3803 |
+
{ name = "pre-commit" },
|
| 3804 |
{ name = "pytest" },
|
| 3805 |
+
{ name = "pytest-asyncio" },
|
| 3806 |
{ name = "ruff", specifier = "==0.12.0" },
|
| 3807 |
+
{ name = "types-requests" },
|
| 3808 |
]
|
| 3809 |
|
| 3810 |
[[package]]
|
|
|
|
| 4722 |
{ url = "https://files.pythonhosted.org/packages/78/64/7713ffe4b5983314e9d436a90d5bd4f63b6054e2aca783a3cfc44cb95bbf/typer-0.20.0-py3-none-any.whl", hash = "sha256:5b463df6793ec1dca6213a3cf4c0f03bc6e322ac5e16e13ddd622a889489784a", size = 47028, upload-time = "2025-10-20T17:03:47.617Z" },
|
| 4723 |
]
|
| 4724 |
|
| 4725 |
+
[[package]]
|
| 4726 |
+
name = "types-requests"
|
| 4727 |
+
version = "2.32.4.20250913"
|
| 4728 |
+
source = { registry = "https://pypi.org/simple" }
|
| 4729 |
+
dependencies = [
|
| 4730 |
+
{ name = "urllib3" },
|
| 4731 |
+
]
|
| 4732 |
+
sdist = { url = "https://files.pythonhosted.org/packages/36/27/489922f4505975b11de2b5ad07b4fe1dca0bca9be81a703f26c5f3acfce5/types_requests-2.32.4.20250913.tar.gz", hash = "sha256:abd6d4f9ce3a9383f269775a9835a4c24e5cd6b9f647d64f88aa4613c33def5d", size = 23113, upload-time = "2025-09-13T02:40:02.309Z" }
|
| 4733 |
+
wheels = [
|
| 4734 |
+
{ url = "https://files.pythonhosted.org/packages/2a/20/9a227ea57c1285986c4cf78400d0a91615d25b24e257fd9e2969606bdfae/types_requests-2.32.4.20250913-py3-none-any.whl", hash = "sha256:78c9c1fffebbe0fa487a418e0fa5252017e9c60d1a2da394077f1780f655d7e1", size = 20658, upload-time = "2025-09-13T02:40:01.115Z" },
|
| 4735 |
+
]
|
| 4736 |
+
|
| 4737 |
[[package]]
|
| 4738 |
name = "typing-extensions"
|
| 4739 |
version = "4.15.0"
|
|
|
|
| 4878 |
{ url = "https://files.pythonhosted.org/packages/e4/16/c1fd27e9549f3c4baf1dc9c20c456cd2f822dbf8de9f463824b0c0357e06/uvloop-0.22.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:6cde23eeda1a25c75b2e07d39970f3374105d5eafbaab2a4482be82f272d5a5e", size = 4296730, upload-time = "2025-10-16T22:17:00.744Z" },
|
| 4879 |
]
|
| 4880 |
|
| 4881 |
+
[[package]]
|
| 4882 |
+
name = "virtualenv"
|
| 4883 |
+
version = "20.35.4"
|
| 4884 |
+
source = { registry = "https://pypi.org/simple" }
|
| 4885 |
+
dependencies = [
|
| 4886 |
+
{ name = "distlib" },
|
| 4887 |
+
{ name = "filelock" },
|
| 4888 |
+
{ name = "platformdirs" },
|
| 4889 |
+
{ name = "typing-extensions", marker = "python_full_version < '3.11'" },
|
| 4890 |
+
]
|
| 4891 |
+
sdist = { url = "https://files.pythonhosted.org/packages/20/28/e6f1a6f655d620846bd9df527390ecc26b3805a0c5989048c210e22c5ca9/virtualenv-20.35.4.tar.gz", hash = "sha256:643d3914d73d3eeb0c552cbb12d7e82adf0e504dbf86a3182f8771a153a1971c", size = 6028799, upload-time = "2025-10-29T06:57:40.511Z" }
|
| 4892 |
+
wheels = [
|
| 4893 |
+
{ url = "https://files.pythonhosted.org/packages/79/0c/c05523fa3181fdf0c9c52a6ba91a23fbf3246cc095f26f6516f9c60e6771/virtualenv-20.35.4-py3-none-any.whl", hash = "sha256:c21c9cede36c9753eeade68ba7d523529f228a403463376cf821eaae2b650f1b", size = 6005095, upload-time = "2025-10-29T06:57:37.598Z" },
|
| 4894 |
+
]
|
| 4895 |
+
|
| 4896 |
[[package]]
|
| 4897 |
name = "watchfiles"
|
| 4898 |
version = "1.1.1"
|