Spaces:
Running
on
Zero
Running
on
Zero
Update
Browse files- app.py +27 -8
- pyproject.toml +1 -1
- requirements.txt +29 -4
- uv.lock +79 -9
app.py
CHANGED
@@ -30,7 +30,17 @@ pose_model = VitPoseForPoseEstimation.from_pretrained(pose_model_name, device_ma
|
|
30 |
|
31 |
@spaces.GPU(duration=5)
|
32 |
@torch.inference_mode()
|
33 |
-
def
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
34 |
inputs = person_image_processor(images=image, return_tensors="pt").to(device)
|
35 |
outputs = person_model(**inputs)
|
36 |
results = person_image_processor.post_process_object_detection(
|
@@ -102,10 +112,19 @@ def process_image(image: PIL.Image.Image) -> tuple[PIL.Image.Image, list[dict]]:
|
|
102 |
|
103 |
|
104 |
@spaces.GPU(duration=90)
|
105 |
-
def
|
106 |
video_path: str,
|
107 |
progress: gr.Progress = gr.Progress(track_tqdm=True), # noqa: ARG001, B008
|
108 |
) -> str:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
109 |
cap = cv2.VideoCapture(video_path)
|
110 |
|
111 |
height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
|
@@ -121,7 +140,7 @@ def process_video(
|
|
121 |
if not ok:
|
122 |
break
|
123 |
rgb_frame = frame[:, :, ::-1]
|
124 |
-
annotated_frame, _ =
|
125 |
writer.write(np.asarray(annotated_frame)[:, :, ::-1])
|
126 |
writer.release()
|
127 |
cap.release()
|
@@ -144,11 +163,11 @@ with gr.Blocks(css_paths="style.css") as demo:
|
|
144 |
examples=sorted(pathlib.Path("images").glob("*.jpg")),
|
145 |
inputs=input_image,
|
146 |
outputs=[output_image, output_json],
|
147 |
-
fn=
|
148 |
)
|
149 |
|
150 |
run_button_image.click(
|
151 |
-
fn=
|
152 |
inputs=input_image,
|
153 |
outputs=[output_image, output_json],
|
154 |
)
|
@@ -167,15 +186,15 @@ with gr.Blocks(css_paths="style.css") as demo:
|
|
167 |
examples=sorted(pathlib.Path("videos").glob("*.mp4")),
|
168 |
inputs=input_video,
|
169 |
outputs=output_video,
|
170 |
-
fn=
|
171 |
cache_examples=False,
|
172 |
)
|
173 |
run_button_video.click(
|
174 |
-
fn=
|
175 |
inputs=input_video,
|
176 |
outputs=output_video,
|
177 |
)
|
178 |
|
179 |
|
180 |
if __name__ == "__main__":
|
181 |
-
demo.launch()
|
|
|
30 |
|
31 |
@spaces.GPU(duration=5)
|
32 |
@torch.inference_mode()
|
33 |
+
def detect_pose_image(image: PIL.Image.Image) -> tuple[PIL.Image.Image, list[dict]]:
|
34 |
+
"""Detects persons and estimates their poses in a single image.
|
35 |
+
|
36 |
+
Args:
|
37 |
+
image (PIL.Image.Image): Input image in which to detect persons and estimate poses.
|
38 |
+
|
39 |
+
Returns:
|
40 |
+
tuple[PIL.Image.Image, list[dict]]:
|
41 |
+
- Annotated image with bounding boxes and pose keypoints drawn.
|
42 |
+
- List of dictionaries containing human-readable pose estimation results for each detected person.
|
43 |
+
"""
|
44 |
inputs = person_image_processor(images=image, return_tensors="pt").to(device)
|
45 |
outputs = person_model(**inputs)
|
46 |
results = person_image_processor.post_process_object_detection(
|
|
|
112 |
|
113 |
|
114 |
@spaces.GPU(duration=90)
|
115 |
+
def detect_pose_video(
|
116 |
video_path: str,
|
117 |
progress: gr.Progress = gr.Progress(track_tqdm=True), # noqa: ARG001, B008
|
118 |
) -> str:
|
119 |
+
"""Detects persons and estimates their poses for each frame in a video, saving the annotated video.
|
120 |
+
|
121 |
+
Args:
|
122 |
+
video_path (str): Path to the input video file.
|
123 |
+
progress (gr.Progress, optional): Gradio progress tracker. Defaults to gr.Progress(track_tqdm=True).
|
124 |
+
|
125 |
+
Returns:
|
126 |
+
str: Path to the output video file with annotated bounding boxes and pose keypoints.
|
127 |
+
"""
|
128 |
cap = cv2.VideoCapture(video_path)
|
129 |
|
130 |
height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
|
|
|
140 |
if not ok:
|
141 |
break
|
142 |
rgb_frame = frame[:, :, ::-1]
|
143 |
+
annotated_frame, _ = detect_pose_image(PIL.Image.fromarray(rgb_frame))
|
144 |
writer.write(np.asarray(annotated_frame)[:, :, ::-1])
|
145 |
writer.release()
|
146 |
cap.release()
|
|
|
163 |
examples=sorted(pathlib.Path("images").glob("*.jpg")),
|
164 |
inputs=input_image,
|
165 |
outputs=[output_image, output_json],
|
166 |
+
fn=detect_pose_image,
|
167 |
)
|
168 |
|
169 |
run_button_image.click(
|
170 |
+
fn=detect_pose_image,
|
171 |
inputs=input_image,
|
172 |
outputs=[output_image, output_json],
|
173 |
)
|
|
|
186 |
examples=sorted(pathlib.Path("videos").glob("*.mp4")),
|
187 |
inputs=input_video,
|
188 |
outputs=output_video,
|
189 |
+
fn=detect_pose_video,
|
190 |
cache_examples=False,
|
191 |
)
|
192 |
run_button_video.click(
|
193 |
+
fn=detect_pose_video,
|
194 |
inputs=input_video,
|
195 |
outputs=output_video,
|
196 |
)
|
197 |
|
198 |
|
199 |
if __name__ == "__main__":
|
200 |
+
demo.launch(mcp_server=True)
|
pyproject.toml
CHANGED
@@ -6,7 +6,7 @@ readme = "README.md"
|
|
6 |
requires-python = ">=3.10"
|
7 |
dependencies = [
|
8 |
"accelerate>=1.8.1",
|
9 |
-
"gradio>=5.35.0",
|
10 |
"hf-transfer>=0.1.9",
|
11 |
"setuptools>=80.9.0",
|
12 |
"spaces>=0.37.1",
|
|
|
6 |
requires-python = ">=3.10"
|
7 |
dependencies = [
|
8 |
"accelerate>=1.8.1",
|
9 |
+
"gradio[mcp]>=5.35.0",
|
10 |
"hf-transfer>=0.1.9",
|
11 |
"setuptools>=80.9.0",
|
12 |
"spaces>=0.37.1",
|
requirements.txt
CHANGED
@@ -10,6 +10,8 @@ anyio==4.8.0
|
|
10 |
# via
|
11 |
# gradio
|
12 |
# httpx
|
|
|
|
|
13 |
# starlette
|
14 |
certifi==2024.12.14
|
15 |
# via
|
@@ -71,8 +73,11 @@ httpx==0.28.1
|
|
71 |
# via
|
72 |
# gradio
|
73 |
# gradio-client
|
|
|
74 |
# safehttpx
|
75 |
# spaces
|
|
|
|
|
76 |
huggingface-hub==0.33.2
|
77 |
# via
|
78 |
# accelerate
|
@@ -99,6 +104,8 @@ markupsafe==2.1.5
|
|
99 |
# jinja2
|
100 |
matplotlib==3.10.0
|
101 |
# via supervision
|
|
|
|
|
102 |
mdurl==0.1.2
|
103 |
# via markdown-it-py
|
104 |
mpmath==1.3.0
|
@@ -172,13 +179,17 @@ psutil==5.9.8
|
|
172 |
# via
|
173 |
# accelerate
|
174 |
# spaces
|
175 |
-
pydantic==2.
|
176 |
# via
|
177 |
# fastapi
|
178 |
# gradio
|
|
|
|
|
179 |
# spaces
|
180 |
-
pydantic-core==2.
|
181 |
# via pydantic
|
|
|
|
|
182 |
pydub==0.25.1
|
183 |
# via gradio
|
184 |
pygments==2.19.1
|
@@ -189,8 +200,12 @@ python-dateutil==2.9.0.post0
|
|
189 |
# via
|
190 |
# matplotlib
|
191 |
# pandas
|
|
|
|
|
192 |
python-multipart==0.0.20
|
193 |
-
# via
|
|
|
|
|
194 |
pytz==2024.2
|
195 |
# via pandas
|
196 |
pyyaml==6.0.2
|
@@ -232,10 +247,13 @@ sniffio==1.3.1
|
|
232 |
# via anyio
|
233 |
spaces==0.37.1
|
234 |
# via vitpose-transformers (pyproject.toml)
|
|
|
|
|
235 |
starlette==0.45.3
|
236 |
# via
|
237 |
# fastapi
|
238 |
# gradio
|
|
|
239 |
supervision==0.25.1
|
240 |
# via vitpose-transformers (pyproject.toml)
|
241 |
sympy==1.13.1
|
@@ -272,12 +290,19 @@ typing-extensions==4.12.2
|
|
272 |
# spaces
|
273 |
# torch
|
274 |
# typer
|
|
|
275 |
# uvicorn
|
|
|
|
|
|
|
|
|
276 |
tzdata==2025.1
|
277 |
# via pandas
|
278 |
urllib3==2.3.0
|
279 |
# via requests
|
280 |
uvicorn==0.34.0
|
281 |
-
# via
|
|
|
|
|
282 |
websockets==14.2
|
283 |
# via gradio-client
|
|
|
10 |
# via
|
11 |
# gradio
|
12 |
# httpx
|
13 |
+
# mcp
|
14 |
+
# sse-starlette
|
15 |
# starlette
|
16 |
certifi==2024.12.14
|
17 |
# via
|
|
|
73 |
# via
|
74 |
# gradio
|
75 |
# gradio-client
|
76 |
+
# mcp
|
77 |
# safehttpx
|
78 |
# spaces
|
79 |
+
httpx-sse==0.4.1
|
80 |
+
# via mcp
|
81 |
huggingface-hub==0.33.2
|
82 |
# via
|
83 |
# accelerate
|
|
|
104 |
# jinja2
|
105 |
matplotlib==3.10.0
|
106 |
# via supervision
|
107 |
+
mcp==1.9.3
|
108 |
+
# via gradio
|
109 |
mdurl==0.1.2
|
110 |
# via markdown-it-py
|
111 |
mpmath==1.3.0
|
|
|
179 |
# via
|
180 |
# accelerate
|
181 |
# spaces
|
182 |
+
pydantic==2.11.7
|
183 |
# via
|
184 |
# fastapi
|
185 |
# gradio
|
186 |
+
# mcp
|
187 |
+
# pydantic-settings
|
188 |
# spaces
|
189 |
+
pydantic-core==2.33.2
|
190 |
# via pydantic
|
191 |
+
pydantic-settings==2.10.1
|
192 |
+
# via mcp
|
193 |
pydub==0.25.1
|
194 |
# via gradio
|
195 |
pygments==2.19.1
|
|
|
200 |
# via
|
201 |
# matplotlib
|
202 |
# pandas
|
203 |
+
python-dotenv==1.1.1
|
204 |
+
# via pydantic-settings
|
205 |
python-multipart==0.0.20
|
206 |
+
# via
|
207 |
+
# gradio
|
208 |
+
# mcp
|
209 |
pytz==2024.2
|
210 |
# via pandas
|
211 |
pyyaml==6.0.2
|
|
|
247 |
# via anyio
|
248 |
spaces==0.37.1
|
249 |
# via vitpose-transformers (pyproject.toml)
|
250 |
+
sse-starlette==2.3.6
|
251 |
+
# via mcp
|
252 |
starlette==0.45.3
|
253 |
# via
|
254 |
# fastapi
|
255 |
# gradio
|
256 |
+
# mcp
|
257 |
supervision==0.25.1
|
258 |
# via vitpose-transformers (pyproject.toml)
|
259 |
sympy==1.13.1
|
|
|
290 |
# spaces
|
291 |
# torch
|
292 |
# typer
|
293 |
+
# typing-inspection
|
294 |
# uvicorn
|
295 |
+
typing-inspection==0.4.1
|
296 |
+
# via
|
297 |
+
# pydantic
|
298 |
+
# pydantic-settings
|
299 |
tzdata==2025.1
|
300 |
# via pandas
|
301 |
urllib3==2.3.0
|
302 |
# via requests
|
303 |
uvicorn==0.34.0
|
304 |
+
# via
|
305 |
+
# gradio
|
306 |
+
# mcp
|
307 |
websockets==14.2
|
308 |
# via gradio-client
|
uv.lock
CHANGED
@@ -420,6 +420,12 @@ wheels = [
|
|
420 |
{ url = "https://files.pythonhosted.org/packages/69/9b/7c0e41bbcaae194b28f599191b5329e21ee91fd789607d6e6fb05ac58c1a/gradio-5.35.0-py3-none-any.whl", hash = "sha256:781a80df25355861e44fd2819fac4ed43cf08ea77911570fb0682f6ae16b9c7c", size = 54328513, upload-time = "2025-06-27T22:49:40.449Z" },
|
421 |
]
|
422 |
|
|
|
|
|
|
|
|
|
|
|
|
|
423 |
[[package]]
|
424 |
name = "gradio-client"
|
425 |
version = "1.10.4"
|
@@ -530,6 +536,15 @@ wheels = [
|
|
530 |
{ 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" },
|
531 |
]
|
532 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
533 |
[[package]]
|
534 |
name = "huggingface-hub"
|
535 |
version = "0.33.2"
|
@@ -780,6 +795,26 @@ wheels = [
|
|
780 |
{ url = "https://files.pythonhosted.org/packages/6a/b9/59e120d24a2ec5fc2d30646adb2efb4621aab3c6d83d66fb2a7a182db032/matplotlib-3.10.3-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cb73d8aa75a237457988f9765e4dfe1c0d2453c5ca4eabc897d4309672c8e014", size = 8594298, upload-time = "2025-05-08T19:10:51.738Z" },
|
781 |
]
|
782 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
783 |
[[package]]
|
784 |
name = "mdurl"
|
785 |
version = "0.1.2"
|
@@ -1005,7 +1040,7 @@ name = "nvidia-cudnn-cu12"
|
|
1005 |
version = "9.1.0.70"
|
1006 |
source = { registry = "https://pypi.org/simple" }
|
1007 |
dependencies = [
|
1008 |
-
{ name = "nvidia-cublas-cu12" },
|
1009 |
]
|
1010 |
wheels = [
|
1011 |
{ url = "https://files.pythonhosted.org/packages/9f/fd/713452cd72343f682b1c7b9321e23829f00b842ceaedcda96e742ea0b0b3/nvidia_cudnn_cu12-9.1.0.70-py3-none-manylinux2014_x86_64.whl", hash = "sha256:165764f44ef8c61fcdfdfdbe769d687e06374059fbb388b6c89ecb0e28793a6f", size = 664752741, upload-time = "2024-04-22T15:24:15.253Z" },
|
@@ -1016,7 +1051,7 @@ name = "nvidia-cufft-cu12"
|
|
1016 |
version = "11.2.1.3"
|
1017 |
source = { registry = "https://pypi.org/simple" }
|
1018 |
dependencies = [
|
1019 |
-
{ name = "nvidia-nvjitlink-cu12" },
|
1020 |
]
|
1021 |
wheels = [
|
1022 |
{ url = "https://files.pythonhosted.org/packages/27/94/3266821f65b92b3138631e9c8e7fe1fb513804ac934485a8d05776e1dd43/nvidia_cufft_cu12-11.2.1.3-py3-none-manylinux2014_x86_64.whl", hash = "sha256:f083fc24912aa410be21fa16d157fed2055dab1cc4b6934a0e03cba69eb242b9", size = 211459117, upload-time = "2024-04-03T20:57:40.402Z" },
|
@@ -1035,9 +1070,9 @@ name = "nvidia-cusolver-cu12"
|
|
1035 |
version = "11.6.1.9"
|
1036 |
source = { registry = "https://pypi.org/simple" }
|
1037 |
dependencies = [
|
1038 |
-
{ name = "nvidia-cublas-cu12" },
|
1039 |
-
{ name = "nvidia-cusparse-cu12" },
|
1040 |
-
{ name = "nvidia-nvjitlink-cu12" },
|
1041 |
]
|
1042 |
wheels = [
|
1043 |
{ url = "https://files.pythonhosted.org/packages/3a/e1/5b9089a4b2a4790dfdea8b3a006052cfecff58139d5a4e34cb1a51df8d6f/nvidia_cusolver_cu12-11.6.1.9-py3-none-manylinux2014_x86_64.whl", hash = "sha256:19e33fa442bcfd085b3086c4ebf7e8debc07cfe01e11513cc6d332fd918ac260", size = 127936057, upload-time = "2024-04-03T20:58:28.735Z" },
|
@@ -1048,7 +1083,7 @@ name = "nvidia-cusparse-cu12"
|
|
1048 |
version = "12.3.1.170"
|
1049 |
source = { registry = "https://pypi.org/simple" }
|
1050 |
dependencies = [
|
1051 |
-
{ name = "nvidia-nvjitlink-cu12" },
|
1052 |
]
|
1053 |
wheels = [
|
1054 |
{ url = "https://files.pythonhosted.org/packages/db/f7/97a9ea26ed4bbbfc2d470994b8b4f338ef663be97b8f677519ac195e113d/nvidia_cusparse_cu12-12.3.1.170-py3-none-manylinux2014_x86_64.whl", hash = "sha256:ea4f11a2904e2a8dc4b1833cc1b5181cde564edd0d5cd33e3c168eff2d1863f1", size = 207454763, upload-time = "2024-04-03T20:58:59.995Z" },
|
@@ -1420,6 +1455,20 @@ wheels = [
|
|
1420 |
{ url = "https://files.pythonhosted.org/packages/32/56/8a7ca5d2cd2cda1d245d34b1c9a942920a718082ae8e54e5f3e5a58b7add/pydantic_core-2.33.2-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:329467cecfb529c925cf2bbd4d60d2c509bc2fb52a20c1045bf09bb70971a9c1", size = 2066757, upload-time = "2025-04-23T18:33:30.645Z" },
|
1421 |
]
|
1422 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1423 |
[[package]]
|
1424 |
name = "pydub"
|
1425 |
version = "0.25.1"
|
@@ -1459,6 +1508,15 @@ wheels = [
|
|
1459 |
{ 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" },
|
1460 |
]
|
1461 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1462 |
[[package]]
|
1463 |
name = "python-multipart"
|
1464 |
version = "0.0.20"
|
@@ -1860,6 +1918,18 @@ wheels = [
|
|
1860 |
{ url = "https://files.pythonhosted.org/packages/d1/fa/9a83c960be03e81a01e6d4b252b340b8b2dd2c1ac7cd9795621860a86e01/spaces-0.37.1-py3-none-any.whl", hash = "sha256:1579e5747613a7dc5c0842cd6409dd44c4d1e20bc30060b1d0c0a581be9e414f", size = 31373, upload-time = "2025-06-20T14:38:05.302Z" },
|
1861 |
]
|
1862 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1863 |
[[package]]
|
1864 |
name = "starlette"
|
1865 |
version = "0.46.2"
|
@@ -2023,7 +2093,7 @@ name = "triton"
|
|
2023 |
version = "3.1.0"
|
2024 |
source = { registry = "https://pypi.org/simple" }
|
2025 |
dependencies = [
|
2026 |
-
{ name = "filelock" },
|
2027 |
]
|
2028 |
wheels = [
|
2029 |
{ url = "https://files.pythonhosted.org/packages/98/29/69aa56dc0b2eb2602b553881e34243475ea2afd9699be042316842788ff5/triton-3.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6b0dd10a925263abbe9fa37dcde67a5e9b2383fc269fdf59f5657cac38c5d1d8", size = 209460013, upload-time = "2024-10-14T16:05:32.106Z" },
|
@@ -2105,7 +2175,7 @@ version = "0.1.0"
|
|
2105 |
source = { virtual = "." }
|
2106 |
dependencies = [
|
2107 |
{ name = "accelerate" },
|
2108 |
-
{ name = "gradio" },
|
2109 |
{ name = "hf-transfer" },
|
2110 |
{ name = "setuptools" },
|
2111 |
{ name = "spaces" },
|
@@ -2117,7 +2187,7 @@ dependencies = [
|
|
2117 |
[package.metadata]
|
2118 |
requires-dist = [
|
2119 |
{ name = "accelerate", specifier = ">=1.8.1" },
|
2120 |
-
{ name = "gradio", specifier = ">=5.35.0" },
|
2121 |
{ name = "hf-transfer", specifier = ">=0.1.9" },
|
2122 |
{ name = "setuptools", specifier = ">=80.9.0" },
|
2123 |
{ name = "spaces", specifier = ">=0.37.1" },
|
|
|
420 |
{ url = "https://files.pythonhosted.org/packages/69/9b/7c0e41bbcaae194b28f599191b5329e21ee91fd789607d6e6fb05ac58c1a/gradio-5.35.0-py3-none-any.whl", hash = "sha256:781a80df25355861e44fd2819fac4ed43cf08ea77911570fb0682f6ae16b9c7c", size = 54328513, upload-time = "2025-06-27T22:49:40.449Z" },
|
421 |
]
|
422 |
|
423 |
+
[package.optional-dependencies]
|
424 |
+
mcp = [
|
425 |
+
{ name = "mcp" },
|
426 |
+
{ name = "pydantic", marker = "sys_platform != 'emscripten'" },
|
427 |
+
]
|
428 |
+
|
429 |
[[package]]
|
430 |
name = "gradio-client"
|
431 |
version = "1.10.4"
|
|
|
536 |
{ 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" },
|
537 |
]
|
538 |
|
539 |
+
[[package]]
|
540 |
+
name = "httpx-sse"
|
541 |
+
version = "0.4.1"
|
542 |
+
source = { registry = "https://pypi.org/simple" }
|
543 |
+
sdist = { url = "https://files.pythonhosted.org/packages/6e/fa/66bd985dd0b7c109a3bcb89272ee0bfb7e2b4d06309ad7b38ff866734b2a/httpx_sse-0.4.1.tar.gz", hash = "sha256:8f44d34414bc7b21bf3602713005c5df4917884f76072479b21f68befa4ea26e", size = 12998, upload-time = "2025-06-24T13:21:05.71Z" }
|
544 |
+
wheels = [
|
545 |
+
{ url = "https://files.pythonhosted.org/packages/25/0a/6269e3473b09aed2dab8aa1a600c70f31f00ae1349bee30658f7e358a159/httpx_sse-0.4.1-py3-none-any.whl", hash = "sha256:cba42174344c3a5b06f255ce65b350880f962d99ead85e776f23c6618a377a37", size = 8054, upload-time = "2025-06-24T13:21:04.772Z" },
|
546 |
+
]
|
547 |
+
|
548 |
[[package]]
|
549 |
name = "huggingface-hub"
|
550 |
version = "0.33.2"
|
|
|
795 |
{ url = "https://files.pythonhosted.org/packages/6a/b9/59e120d24a2ec5fc2d30646adb2efb4621aab3c6d83d66fb2a7a182db032/matplotlib-3.10.3-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cb73d8aa75a237457988f9765e4dfe1c0d2453c5ca4eabc897d4309672c8e014", size = 8594298, upload-time = "2025-05-08T19:10:51.738Z" },
|
796 |
]
|
797 |
|
798 |
+
[[package]]
|
799 |
+
name = "mcp"
|
800 |
+
version = "1.9.3"
|
801 |
+
source = { registry = "https://pypi.org/simple" }
|
802 |
+
dependencies = [
|
803 |
+
{ name = "anyio" },
|
804 |
+
{ name = "httpx" },
|
805 |
+
{ name = "httpx-sse" },
|
806 |
+
{ name = "pydantic" },
|
807 |
+
{ name = "pydantic-settings" },
|
808 |
+
{ name = "python-multipart" },
|
809 |
+
{ name = "sse-starlette" },
|
810 |
+
{ name = "starlette" },
|
811 |
+
{ name = "uvicorn", marker = "sys_platform != 'emscripten'" },
|
812 |
+
]
|
813 |
+
sdist = { url = "https://files.pythonhosted.org/packages/f2/df/8fefc0c6c7a5c66914763e3ff3893f9a03435628f6625d5e3b0dc45d73db/mcp-1.9.3.tar.gz", hash = "sha256:587ba38448e81885e5d1b84055cfcc0ca56d35cd0c58f50941cab01109405388", size = 333045, upload-time = "2025-06-05T15:48:25.681Z" }
|
814 |
+
wheels = [
|
815 |
+
{ url = "https://files.pythonhosted.org/packages/79/45/823ad05504bea55cb0feb7470387f151252127ad5c72f8882e8fe6cf5c0e/mcp-1.9.3-py3-none-any.whl", hash = "sha256:69b0136d1ac9927402ed4cf221d4b8ff875e7132b0b06edd446448766f34f9b9", size = 131063, upload-time = "2025-06-05T15:48:24.171Z" },
|
816 |
+
]
|
817 |
+
|
818 |
[[package]]
|
819 |
name = "mdurl"
|
820 |
version = "0.1.2"
|
|
|
1040 |
version = "9.1.0.70"
|
1041 |
source = { registry = "https://pypi.org/simple" }
|
1042 |
dependencies = [
|
1043 |
+
{ name = "nvidia-cublas-cu12", marker = "(platform_machine != 'aarch64' and sys_platform == 'linux') or (sys_platform != 'darwin' and sys_platform != 'linux')" },
|
1044 |
]
|
1045 |
wheels = [
|
1046 |
{ url = "https://files.pythonhosted.org/packages/9f/fd/713452cd72343f682b1c7b9321e23829f00b842ceaedcda96e742ea0b0b3/nvidia_cudnn_cu12-9.1.0.70-py3-none-manylinux2014_x86_64.whl", hash = "sha256:165764f44ef8c61fcdfdfdbe769d687e06374059fbb388b6c89ecb0e28793a6f", size = 664752741, upload-time = "2024-04-22T15:24:15.253Z" },
|
|
|
1051 |
version = "11.2.1.3"
|
1052 |
source = { registry = "https://pypi.org/simple" }
|
1053 |
dependencies = [
|
1054 |
+
{ name = "nvidia-nvjitlink-cu12", marker = "(platform_machine != 'aarch64' and sys_platform == 'linux') or (sys_platform != 'darwin' and sys_platform != 'linux')" },
|
1055 |
]
|
1056 |
wheels = [
|
1057 |
{ url = "https://files.pythonhosted.org/packages/27/94/3266821f65b92b3138631e9c8e7fe1fb513804ac934485a8d05776e1dd43/nvidia_cufft_cu12-11.2.1.3-py3-none-manylinux2014_x86_64.whl", hash = "sha256:f083fc24912aa410be21fa16d157fed2055dab1cc4b6934a0e03cba69eb242b9", size = 211459117, upload-time = "2024-04-03T20:57:40.402Z" },
|
|
|
1070 |
version = "11.6.1.9"
|
1071 |
source = { registry = "https://pypi.org/simple" }
|
1072 |
dependencies = [
|
1073 |
+
{ name = "nvidia-cublas-cu12", marker = "(platform_machine != 'aarch64' and sys_platform == 'linux') or (sys_platform != 'darwin' and sys_platform != 'linux')" },
|
1074 |
+
{ name = "nvidia-cusparse-cu12", marker = "(platform_machine != 'aarch64' and sys_platform == 'linux') or (sys_platform != 'darwin' and sys_platform != 'linux')" },
|
1075 |
+
{ name = "nvidia-nvjitlink-cu12", marker = "(platform_machine != 'aarch64' and sys_platform == 'linux') or (sys_platform != 'darwin' and sys_platform != 'linux')" },
|
1076 |
]
|
1077 |
wheels = [
|
1078 |
{ url = "https://files.pythonhosted.org/packages/3a/e1/5b9089a4b2a4790dfdea8b3a006052cfecff58139d5a4e34cb1a51df8d6f/nvidia_cusolver_cu12-11.6.1.9-py3-none-manylinux2014_x86_64.whl", hash = "sha256:19e33fa442bcfd085b3086c4ebf7e8debc07cfe01e11513cc6d332fd918ac260", size = 127936057, upload-time = "2024-04-03T20:58:28.735Z" },
|
|
|
1083 |
version = "12.3.1.170"
|
1084 |
source = { registry = "https://pypi.org/simple" }
|
1085 |
dependencies = [
|
1086 |
+
{ name = "nvidia-nvjitlink-cu12", marker = "(platform_machine != 'aarch64' and sys_platform == 'linux') or (sys_platform != 'darwin' and sys_platform != 'linux')" },
|
1087 |
]
|
1088 |
wheels = [
|
1089 |
{ url = "https://files.pythonhosted.org/packages/db/f7/97a9ea26ed4bbbfc2d470994b8b4f338ef663be97b8f677519ac195e113d/nvidia_cusparse_cu12-12.3.1.170-py3-none-manylinux2014_x86_64.whl", hash = "sha256:ea4f11a2904e2a8dc4b1833cc1b5181cde564edd0d5cd33e3c168eff2d1863f1", size = 207454763, upload-time = "2024-04-03T20:58:59.995Z" },
|
|
|
1455 |
{ url = "https://files.pythonhosted.org/packages/32/56/8a7ca5d2cd2cda1d245d34b1c9a942920a718082ae8e54e5f3e5a58b7add/pydantic_core-2.33.2-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:329467cecfb529c925cf2bbd4d60d2c509bc2fb52a20c1045bf09bb70971a9c1", size = 2066757, upload-time = "2025-04-23T18:33:30.645Z" },
|
1456 |
]
|
1457 |
|
1458 |
+
[[package]]
|
1459 |
+
name = "pydantic-settings"
|
1460 |
+
version = "2.10.1"
|
1461 |
+
source = { registry = "https://pypi.org/simple" }
|
1462 |
+
dependencies = [
|
1463 |
+
{ name = "pydantic" },
|
1464 |
+
{ name = "python-dotenv" },
|
1465 |
+
{ name = "typing-inspection" },
|
1466 |
+
]
|
1467 |
+
sdist = { url = "https://files.pythonhosted.org/packages/68/85/1ea668bbab3c50071ca613c6ab30047fb36ab0da1b92fa8f17bbc38fd36c/pydantic_settings-2.10.1.tar.gz", hash = "sha256:06f0062169818d0f5524420a360d632d5857b83cffd4d42fe29597807a1614ee", size = 172583, upload-time = "2025-06-24T13:26:46.841Z" }
|
1468 |
+
wheels = [
|
1469 |
+
{ url = "https://files.pythonhosted.org/packages/58/f0/427018098906416f580e3cf1366d3b1abfb408a0652e9f31600c24a1903c/pydantic_settings-2.10.1-py3-none-any.whl", hash = "sha256:a60952460b99cf661dc25c29c0ef171721f98bfcb52ef8d9ea4c943d7c8cc796", size = 45235, upload-time = "2025-06-24T13:26:45.485Z" },
|
1470 |
+
]
|
1471 |
+
|
1472 |
[[package]]
|
1473 |
name = "pydub"
|
1474 |
version = "0.25.1"
|
|
|
1508 |
{ 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" },
|
1509 |
]
|
1510 |
|
1511 |
+
[[package]]
|
1512 |
+
name = "python-dotenv"
|
1513 |
+
version = "1.1.1"
|
1514 |
+
source = { registry = "https://pypi.org/simple" }
|
1515 |
+
sdist = { url = "https://files.pythonhosted.org/packages/f6/b0/4bc07ccd3572a2f9df7e6782f52b0c6c90dcbb803ac4a167702d7d0dfe1e/python_dotenv-1.1.1.tar.gz", hash = "sha256:a8a6399716257f45be6a007360200409fce5cda2661e3dec71d23dc15f6189ab", size = 41978, upload-time = "2025-06-24T04:21:07.341Z" }
|
1516 |
+
wheels = [
|
1517 |
+
{ url = "https://files.pythonhosted.org/packages/5f/ed/539768cf28c661b5b068d66d96a2f155c4971a5d55684a514c1a0e0dec2f/python_dotenv-1.1.1-py3-none-any.whl", hash = "sha256:31f23644fe2602f88ff55e1f5c79ba497e01224ee7737937930c448e4d0e24dc", size = 20556, upload-time = "2025-06-24T04:21:06.073Z" },
|
1518 |
+
]
|
1519 |
+
|
1520 |
[[package]]
|
1521 |
name = "python-multipart"
|
1522 |
version = "0.0.20"
|
|
|
1918 |
{ url = "https://files.pythonhosted.org/packages/d1/fa/9a83c960be03e81a01e6d4b252b340b8b2dd2c1ac7cd9795621860a86e01/spaces-0.37.1-py3-none-any.whl", hash = "sha256:1579e5747613a7dc5c0842cd6409dd44c4d1e20bc30060b1d0c0a581be9e414f", size = 31373, upload-time = "2025-06-20T14:38:05.302Z" },
|
1919 |
]
|
1920 |
|
1921 |
+
[[package]]
|
1922 |
+
name = "sse-starlette"
|
1923 |
+
version = "2.3.6"
|
1924 |
+
source = { registry = "https://pypi.org/simple" }
|
1925 |
+
dependencies = [
|
1926 |
+
{ name = "anyio" },
|
1927 |
+
]
|
1928 |
+
sdist = { url = "https://files.pythonhosted.org/packages/8c/f4/989bc70cb8091eda43a9034ef969b25145291f3601703b82766e5172dfed/sse_starlette-2.3.6.tar.gz", hash = "sha256:0382336f7d4ec30160cf9ca0518962905e1b69b72d6c1c995131e0a703b436e3", size = 18284, upload-time = "2025-05-30T13:34:12.914Z" }
|
1929 |
+
wheels = [
|
1930 |
+
{ url = "https://files.pythonhosted.org/packages/81/05/78850ac6e79af5b9508f8841b0f26aa9fd329a1ba00bf65453c2d312bcc8/sse_starlette-2.3.6-py3-none-any.whl", hash = "sha256:d49a8285b182f6e2228e2609c350398b2ca2c36216c2675d875f81e93548f760", size = 10606, upload-time = "2025-05-30T13:34:11.703Z" },
|
1931 |
+
]
|
1932 |
+
|
1933 |
[[package]]
|
1934 |
name = "starlette"
|
1935 |
version = "0.46.2"
|
|
|
2093 |
version = "3.1.0"
|
2094 |
source = { registry = "https://pypi.org/simple" }
|
2095 |
dependencies = [
|
2096 |
+
{ name = "filelock", marker = "(python_full_version < '3.13' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.13' and sys_platform != 'darwin' and sys_platform != 'linux')" },
|
2097 |
]
|
2098 |
wheels = [
|
2099 |
{ url = "https://files.pythonhosted.org/packages/98/29/69aa56dc0b2eb2602b553881e34243475ea2afd9699be042316842788ff5/triton-3.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6b0dd10a925263abbe9fa37dcde67a5e9b2383fc269fdf59f5657cac38c5d1d8", size = 209460013, upload-time = "2024-10-14T16:05:32.106Z" },
|
|
|
2175 |
source = { virtual = "." }
|
2176 |
dependencies = [
|
2177 |
{ name = "accelerate" },
|
2178 |
+
{ name = "gradio", extra = ["mcp"] },
|
2179 |
{ name = "hf-transfer" },
|
2180 |
{ name = "setuptools" },
|
2181 |
{ name = "spaces" },
|
|
|
2187 |
[package.metadata]
|
2188 |
requires-dist = [
|
2189 |
{ name = "accelerate", specifier = ">=1.8.1" },
|
2190 |
+
{ name = "gradio", extras = ["mcp"], specifier = ">=5.35.0" },
|
2191 |
{ name = "hf-transfer", specifier = ">=0.1.9" },
|
2192 |
{ name = "setuptools", specifier = ">=80.9.0" },
|
2193 |
{ name = "spaces", specifier = ">=0.37.1" },
|