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" },
|