mahan_ym
commited on
Commit
·
4c5de8f
1
Parent(s):
d8cda25
Update README, add configuration for MCP servers, and enhance installation scripts
Browse files- README.md +26 -29
- claude_desktop_config.json +22 -0
- hf.sh +15 -1
- pyproject.toml +2 -1
- requirements.txt +1 -1
- uv.lock +80 -2
README.md
CHANGED
@@ -4,18 +4,29 @@ emoji: 😻
|
|
4 |
colorFrom: green
|
5 |
colorTo: purple
|
6 |
sdk: gradio
|
7 |
-
sdk_version: 5.
|
8 |
app_file: src/app.py
|
9 |
pinned: false
|
10 |
license: apache-2.0
|
11 |
short_description: 'Alfred of Images: An MCP server to handle your image edits.'
|
12 |
---
|
13 |
|
14 |
-
|
|
|
15 |
|
16 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
17 |
|
18 |
-
ImageAlfred is an image Model Context Protocol (MCP) tool designed to streamline image processing workflows.
|
19 |
<!-- It provides a user-friendly interface for interacting with image models, leveraging the power of Gradio for the frontend and Modal for scalable backend deployment. -->
|
20 |
|
21 |
<!-- ## Features
|
@@ -25,10 +36,13 @@ ImageAlfred is an image Model Context Protocol (MCP) tool designed to streamline
|
|
25 |
- Easily extendable for custom image models and workflows -->
|
26 |
|
27 |
## Maintainers
|
|
|
28 |
[Mahan Yarmohammad (Mahan-ym)](https://www.mahan-ym.com/)
|
29 |
-
|
|
|
30 |
|
31 |
# Used Tools
|
|
|
32 |
- [Gradio](https://www.gradio.app/): Serving user interface and MCP server
|
33 |
- [lang-segment-anything](https://github.com/luca-medeiros/lang-segment-anything): Which uses [SAM](https://segment-anything.com/) and [Grounding Dino](https://github.com/IDEA-Research/GroundingDINO) under the hood to segment images.
|
34 |
- [HuggingFace](https://huggingface.co/): Downloading SAM and using Space for hosting.
|
@@ -37,43 +51,26 @@ ImageAlfred is an image Model Context Protocol (MCP) tool designed to streamline
|
|
37 |
## Getting Started
|
38 |
|
39 |
### Prerequisites
|
40 |
-
|
|
|
41 |
- [uv](https://github.com/astral-sh/uv) (a fast Python package installer and virtual environment manager)
|
42 |
|
43 |
### Installation
|
44 |
|
45 |
-
|
46 |
-
|
47 |
-
```bash
|
48 |
-
uv venv
|
49 |
-
```
|
50 |
-
|
51 |
-
2. **Activate the virtual environment:**
|
52 |
|
53 |
```bash
|
54 |
-
|
55 |
-
```
|
56 |
-
|
57 |
-
3. **Install dependencies:**
|
58 |
-
|
59 |
-
```bash
|
60 |
-
uv sync
|
61 |
-
```
|
62 |
-
|
63 |
-
4. **Setup Modal**
|
64 |
-
|
65 |
-
```bash
|
66 |
-
modal setup
|
67 |
```
|
68 |
|
69 |
### Running the App
|
70 |
|
|
|
|
|
71 |
```bash
|
72 |
-
|
73 |
```
|
74 |
|
75 |
-
This will launch the Gradio interface for ImageAlfred.
|
76 |
-
|
77 |
## License
|
78 |
|
79 |
This project is licensed under the terms of the LICENSE file in this repository.
|
|
|
4 |
colorFrom: green
|
5 |
colorTo: purple
|
6 |
sdk: gradio
|
7 |
+
sdk_version: 5.33
|
8 |
app_file: src/app.py
|
9 |
pinned: false
|
10 |
license: apache-2.0
|
11 |
short_description: 'Alfred of Images: An MCP server to handle your image edits.'
|
12 |
---
|
13 |
|
14 |
+
<div align="center">
|
15 |
+
<img src="./src/assets/icons/ImageAlfredIcon.png" alt="ImageAlfred" width=200 height=200>
|
16 |
|
17 |
+
<h2>Image Alfred</h2>
|
18 |
+
|
19 |
+
ImageAlfred is an image Model Context Protocol (MCP) tool designed to streamline image processing workflows
|
20 |
+
|
21 |
+
<img alt="Python Version from PEP 621 TOML" src="https://img.shields.io/python/required-version-toml?tomlFilePath=https%3A%2F%2Fraw.githubusercontent.com%2Fmahan-ym%2FImageAlfred%2Fmain%2Fpyproject.toml">
|
22 |
+
<img src="https://badge.mcpx.dev?type=server" title="MCP Server"/>
|
23 |
+
<img alt="GitHub License" src="https://img.shields.io/github/license/mahan-ym/ImageAlfred">
|
24 |
+
|
25 |
+
<a href=https://huggingface.co> <img src="src/assets/icons/hf-logo.svg" alt="huggingface" height=40> </a>
|
26 |
+
<a href="https://www.python.org"><img src="src/assets/icons/python-logo-only.svg" alt="python" height=40></a>
|
27 |
+
<!-- <a href="https://www.gradio.app" heigh=40><img src="src/assets/icons/gradio-color.svg"></a> -->
|
28 |
+
</div>
|
29 |
|
|
|
30 |
<!-- It provides a user-friendly interface for interacting with image models, leveraging the power of Gradio for the frontend and Modal for scalable backend deployment. -->
|
31 |
|
32 |
<!-- ## Features
|
|
|
36 |
- Easily extendable for custom image models and workflows -->
|
37 |
|
38 |
## Maintainers
|
39 |
+
|
40 |
[Mahan Yarmohammad (Mahan-ym)](https://www.mahan-ym.com/)
|
41 |
+
|
42 |
+
[Soodoo | Saaed Saadatipour](https://soodoo.me/)
|
43 |
|
44 |
# Used Tools
|
45 |
+
|
46 |
- [Gradio](https://www.gradio.app/): Serving user interface and MCP server
|
47 |
- [lang-segment-anything](https://github.com/luca-medeiros/lang-segment-anything): Which uses [SAM](https://segment-anything.com/) and [Grounding Dino](https://github.com/IDEA-Research/GroundingDINO) under the hood to segment images.
|
48 |
- [HuggingFace](https://huggingface.co/): Downloading SAM and using Space for hosting.
|
|
|
51 |
## Getting Started
|
52 |
|
53 |
### Prerequisites
|
54 |
+
|
55 |
+
- Python 3.12+
|
56 |
- [uv](https://github.com/astral-sh/uv) (a fast Python package installer and virtual environment manager)
|
57 |
|
58 |
### Installation
|
59 |
|
60 |
+
It will create virtual environment, activate it, install dependecies and setup modal
|
|
|
|
|
|
|
|
|
|
|
|
|
61 |
|
62 |
```bash
|
63 |
+
make install
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
64 |
```
|
65 |
|
66 |
### Running the App
|
67 |
|
68 |
+
This will launch the Gradio interface for ImageAlfred.
|
69 |
+
|
70 |
```bash
|
71 |
+
make run
|
72 |
```
|
73 |
|
|
|
|
|
74 |
## License
|
75 |
|
76 |
This project is licensed under the terms of the LICENSE file in this repository.
|
claude_desktop_config.json
ADDED
@@ -0,0 +1,22 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"mcpServers": {
|
3 |
+
"Image Alfred": {
|
4 |
+
"command": "npx",
|
5 |
+
"args": [
|
6 |
+
"mcp-remote",
|
7 |
+
"https://agents-mcp-hackathon-imagealfred.hf.space/gradio_api/mcp/sse",
|
8 |
+
"--transport",
|
9 |
+
"sse-only"
|
10 |
+
]
|
11 |
+
},
|
12 |
+
"local Image Alfred": {
|
13 |
+
"command": "npx",
|
14 |
+
"args": [
|
15 |
+
"mcp-remote",
|
16 |
+
"http://127.0.0.1:7860/gradio_api/mcp/sse",
|
17 |
+
"--transport",
|
18 |
+
"sse-only"
|
19 |
+
]
|
20 |
+
}
|
21 |
+
}
|
22 |
+
}
|
hf.sh
CHANGED
@@ -5,7 +5,6 @@ REPO_URL="https://github.com/mahan-ym/ImageAlfred"
|
|
5 |
REPO_DIR="ImageAlfred"
|
6 |
TEMP_DIR="./tmp"
|
7 |
SRC_DIR="src"
|
8 |
-
REQUIREMENTS_FILE="requirements.txt"
|
9 |
|
10 |
echo "🚀 Starting Huggingface Space update script..."
|
11 |
|
@@ -32,6 +31,21 @@ if [ -d "$SRC_DIR" ]; then
|
|
32 |
fi
|
33 |
cp -r "$TEMP_DIR/$REPO_DIR/$SRC_DIR" .
|
34 |
mv "$TEMP_DIR/$REPO_DIR/Makefile" .
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
35 |
|
36 |
# Check if copy was successful
|
37 |
if [ $? -eq 0 ]; then
|
|
|
5 |
REPO_DIR="ImageAlfred"
|
6 |
TEMP_DIR="./tmp"
|
7 |
SRC_DIR="src"
|
|
|
8 |
|
9 |
echo "🚀 Starting Huggingface Space update script..."
|
10 |
|
|
|
31 |
fi
|
32 |
cp -r "$TEMP_DIR/$REPO_DIR/$SRC_DIR" .
|
33 |
mv "$TEMP_DIR/$REPO_DIR/Makefile" .
|
34 |
+
mv "$TEMP_DIR/$REPO_DIR/requirements.txt" .
|
35 |
+
mv "$TEMP_DIR/$REPO_DIR/pyproject.toml" .
|
36 |
+
mv "$TEMP_DIR/$REPO_DIR/uv.lock" .
|
37 |
+
mv "$TEMP_DIR/$REPO_DIR/claude_desktop_config.json" .
|
38 |
+
mv "$TEMP_DIR/$REPO_DIR/LICENSE" .
|
39 |
+
|
40 |
+
# Concatenate README files
|
41 |
+
echo "📄 Creating combined README file..."
|
42 |
+
if [ -f "$TEMP_DIR/$REPO_DIR/hf_readme.md" ] && [ -f "$TEMP_DIR/$REPO_DIR/README.md" ]; then
|
43 |
+
cat "$TEMP_DIR/$REPO_DIR/hf_readme.md" "$TEMP_DIR/$REPO_DIR/README.md" > README.md
|
44 |
+
echo "✅ Combined README created successfully!"
|
45 |
+
else
|
46 |
+
echo "⚠️ Could not find one or both README files for concatenation."
|
47 |
+
fi
|
48 |
+
|
49 |
|
50 |
# Check if copy was successful
|
51 |
if [ $? -eq 0 ]; then
|
pyproject.toml
CHANGED
@@ -9,7 +9,6 @@ requires-python = ">=3.12"
|
|
9 |
|
10 |
dependencies = [
|
11 |
"gradio[mcp]>=5.32.1",
|
12 |
-
"matplotlib>=3.10.3",
|
13 |
"modal>=1.0.2",
|
14 |
"numpy>=2.2.6",
|
15 |
"pillow>=11.2.1",
|
@@ -18,8 +17,10 @@ dependencies = [
|
|
18 |
[dependency-groups]
|
19 |
dev = [
|
20 |
"jupyterlab>=4.4.3",
|
|
|
21 |
"opencv-contrib-python>=4.11.0.86",
|
22 |
"ruff>=0.11.12",
|
|
|
23 |
]
|
24 |
|
25 |
[tool.ruff]
|
|
|
9 |
|
10 |
dependencies = [
|
11 |
"gradio[mcp]>=5.32.1",
|
|
|
12 |
"modal>=1.0.2",
|
13 |
"numpy>=2.2.6",
|
14 |
"pillow>=11.2.1",
|
|
|
17 |
[dependency-groups]
|
18 |
dev = [
|
19 |
"jupyterlab>=4.4.3",
|
20 |
+
"matplotlib>=3.10.3",
|
21 |
"opencv-contrib-python>=4.11.0.86",
|
22 |
"ruff>=0.11.12",
|
23 |
+
"supervision>=0.25.1",
|
24 |
]
|
25 |
|
26 |
[tool.ruff]
|
requirements.txt
CHANGED
@@ -1,4 +1,4 @@
|
|
1 |
gradio[mcp]
|
2 |
modal
|
3 |
numpy
|
4 |
-
pillow
|
|
|
1 |
gradio[mcp]
|
2 |
modal
|
3 |
numpy
|
4 |
+
pillow
|
uv.lock
CHANGED
@@ -831,7 +831,6 @@ version = "0.1.0"
|
|
831 |
source = { virtual = "." }
|
832 |
dependencies = [
|
833 |
{ name = "gradio", extra = ["mcp"] },
|
834 |
-
{ name = "matplotlib" },
|
835 |
{ name = "modal" },
|
836 |
{ name = "numpy" },
|
837 |
{ name = "pillow" },
|
@@ -840,14 +839,15 @@ dependencies = [
|
|
840 |
[package.dev-dependencies]
|
841 |
dev = [
|
842 |
{ name = "jupyterlab" },
|
|
|
843 |
{ name = "opencv-contrib-python" },
|
844 |
{ name = "ruff" },
|
|
|
845 |
]
|
846 |
|
847 |
[package.metadata]
|
848 |
requires-dist = [
|
849 |
{ name = "gradio", extras = ["mcp"], specifier = ">=5.32.1" },
|
850 |
-
{ name = "matplotlib", specifier = ">=3.10.3" },
|
851 |
{ name = "modal", specifier = ">=1.0.2" },
|
852 |
{ name = "numpy", specifier = ">=2.2.6" },
|
853 |
{ name = "pillow", specifier = ">=11.2.1" },
|
@@ -856,8 +856,10 @@ requires-dist = [
|
|
856 |
[package.metadata.requires-dev]
|
857 |
dev = [
|
858 |
{ name = "jupyterlab", specifier = ">=4.4.3" },
|
|
|
859 |
{ name = "opencv-contrib-python", specifier = ">=4.11.0.86" },
|
860 |
{ name = "ruff", specifier = ">=0.11.12" },
|
|
|
861 |
]
|
862 |
|
863 |
[[package]]
|
@@ -1568,6 +1570,23 @@ wheels = [
|
|
1568 |
{ url = "https://files.pythonhosted.org/packages/0d/c6/146487546adc4726f0be591a65b466973feaa58cc3db711087e802e940fb/opencv_contrib_python-4.11.0.86-cp37-abi3-win_amd64.whl", hash = "sha256:654758a9ae8ca9a75fca7b64b19163636534f0eedffe1e14c3d7218988625c8d", size = 46185163, upload-time = "2025-01-16T13:52:39.745Z" },
|
1569 |
]
|
1570 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1571 |
[[package]]
|
1572 |
name = "orjson"
|
1573 |
version = "3.10.18"
|
@@ -2258,6 +2277,44 @@ wheels = [
|
|
2258 |
{ url = "https://files.pythonhosted.org/packages/4d/c0/1108ad9f01567f66b3154063605b350b69c3c9366732e09e45f9fd0d1deb/safehttpx-0.1.6-py3-none-any.whl", hash = "sha256:407cff0b410b071623087c63dd2080c3b44dc076888d8c5823c00d1e58cb381c", size = 8692, upload-time = "2024-12-02T18:44:08.555Z" },
|
2259 |
]
|
2260 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2261 |
[[package]]
|
2262 |
name = "semantic-version"
|
2263 |
version = "2.10.0"
|
@@ -2371,6 +2428,27 @@ wheels = [
|
|
2371 |
{ url = "https://files.pythonhosted.org/packages/8b/0c/9d30a4ebeb6db2b25a841afbb80f6ef9a854fc3b41be131d249a977b4959/starlette-0.46.2-py3-none-any.whl", hash = "sha256:595633ce89f8ffa71a015caed34a5b2dc1c0cdb3f0f1fbd1e69339cf2abeec35", size = 72037, upload-time = "2025-04-13T13:56:16.21Z" },
|
2372 |
]
|
2373 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2374 |
[[package]]
|
2375 |
name = "synchronicity"
|
2376 |
version = "0.9.12"
|
|
|
831 |
source = { virtual = "." }
|
832 |
dependencies = [
|
833 |
{ name = "gradio", extra = ["mcp"] },
|
|
|
834 |
{ name = "modal" },
|
835 |
{ name = "numpy" },
|
836 |
{ name = "pillow" },
|
|
|
839 |
[package.dev-dependencies]
|
840 |
dev = [
|
841 |
{ name = "jupyterlab" },
|
842 |
+
{ name = "matplotlib" },
|
843 |
{ name = "opencv-contrib-python" },
|
844 |
{ name = "ruff" },
|
845 |
+
{ name = "supervision" },
|
846 |
]
|
847 |
|
848 |
[package.metadata]
|
849 |
requires-dist = [
|
850 |
{ name = "gradio", extras = ["mcp"], specifier = ">=5.32.1" },
|
|
|
851 |
{ name = "modal", specifier = ">=1.0.2" },
|
852 |
{ name = "numpy", specifier = ">=2.2.6" },
|
853 |
{ name = "pillow", specifier = ">=11.2.1" },
|
|
|
856 |
[package.metadata.requires-dev]
|
857 |
dev = [
|
858 |
{ name = "jupyterlab", specifier = ">=4.4.3" },
|
859 |
+
{ name = "matplotlib", specifier = ">=3.10.3" },
|
860 |
{ name = "opencv-contrib-python", specifier = ">=4.11.0.86" },
|
861 |
{ name = "ruff", specifier = ">=0.11.12" },
|
862 |
+
{ name = "supervision", specifier = ">=0.25.1" },
|
863 |
]
|
864 |
|
865 |
[[package]]
|
|
|
1570 |
{ url = "https://files.pythonhosted.org/packages/0d/c6/146487546adc4726f0be591a65b466973feaa58cc3db711087e802e940fb/opencv_contrib_python-4.11.0.86-cp37-abi3-win_amd64.whl", hash = "sha256:654758a9ae8ca9a75fca7b64b19163636534f0eedffe1e14c3d7218988625c8d", size = 46185163, upload-time = "2025-01-16T13:52:39.745Z" },
|
1571 |
]
|
1572 |
|
1573 |
+
[[package]]
|
1574 |
+
name = "opencv-python"
|
1575 |
+
version = "4.11.0.86"
|
1576 |
+
source = { registry = "https://pypi.org/simple" }
|
1577 |
+
dependencies = [
|
1578 |
+
{ name = "numpy" },
|
1579 |
+
]
|
1580 |
+
sdist = { url = "https://files.pythonhosted.org/packages/17/06/68c27a523103dad5837dc5b87e71285280c4f098c60e4fe8a8db6486ab09/opencv-python-4.11.0.86.tar.gz", hash = "sha256:03d60ccae62304860d232272e4a4fda93c39d595780cb40b161b310244b736a4", size = 95171956, upload-time = "2025-01-16T13:52:24.737Z" }
|
1581 |
+
wheels = [
|
1582 |
+
{ url = "https://files.pythonhosted.org/packages/05/4d/53b30a2a3ac1f75f65a59eb29cf2ee7207ce64867db47036ad61743d5a23/opencv_python-4.11.0.86-cp37-abi3-macosx_13_0_arm64.whl", hash = "sha256:432f67c223f1dc2824f5e73cdfcd9db0efc8710647d4e813012195dc9122a52a", size = 37326322, upload-time = "2025-01-16T13:52:25.887Z" },
|
1583 |
+
{ url = "https://files.pythonhosted.org/packages/3b/84/0a67490741867eacdfa37bc18df96e08a9d579583b419010d7f3da8ff503/opencv_python-4.11.0.86-cp37-abi3-macosx_13_0_x86_64.whl", hash = "sha256:9d05ef13d23fe97f575153558653e2d6e87103995d54e6a35db3f282fe1f9c66", size = 56723197, upload-time = "2025-01-16T13:55:21.222Z" },
|
1584 |
+
{ url = "https://files.pythonhosted.org/packages/f3/bd/29c126788da65c1fb2b5fb621b7fed0ed5f9122aa22a0868c5e2c15c6d23/opencv_python-4.11.0.86-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1b92ae2c8852208817e6776ba1ea0d6b1e0a1b5431e971a2a0ddd2a8cc398202", size = 42230439, upload-time = "2025-01-16T13:51:35.822Z" },
|
1585 |
+
{ url = "https://files.pythonhosted.org/packages/2c/8b/90eb44a40476fa0e71e05a0283947cfd74a5d36121a11d926ad6f3193cc4/opencv_python-4.11.0.86-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6b02611523803495003bd87362db3e1d2a0454a6a63025dc6658a9830570aa0d", size = 62986597, upload-time = "2025-01-16T13:52:08.836Z" },
|
1586 |
+
{ url = "https://files.pythonhosted.org/packages/fb/d7/1d5941a9dde095468b288d989ff6539dd69cd429dbf1b9e839013d21b6f0/opencv_python-4.11.0.86-cp37-abi3-win32.whl", hash = "sha256:810549cb2a4aedaa84ad9a1c92fbfdfc14090e2749cedf2c1589ad8359aa169b", size = 29384337, upload-time = "2025-01-16T13:52:13.549Z" },
|
1587 |
+
{ url = "https://files.pythonhosted.org/packages/a4/7d/f1c30a92854540bf789e9cd5dde7ef49bbe63f855b85a2e6b3db8135c591/opencv_python-4.11.0.86-cp37-abi3-win_amd64.whl", hash = "sha256:085ad9b77c18853ea66283e98affefe2de8cc4c1f43eda4c100cf9b2721142ec", size = 39488044, upload-time = "2025-01-16T13:52:21.928Z" },
|
1588 |
+
]
|
1589 |
+
|
1590 |
[[package]]
|
1591 |
name = "orjson"
|
1592 |
version = "3.10.18"
|
|
|
2277 |
{ url = "https://files.pythonhosted.org/packages/4d/c0/1108ad9f01567f66b3154063605b350b69c3c9366732e09e45f9fd0d1deb/safehttpx-0.1.6-py3-none-any.whl", hash = "sha256:407cff0b410b071623087c63dd2080c3b44dc076888d8c5823c00d1e58cb381c", size = 8692, upload-time = "2024-12-02T18:44:08.555Z" },
|
2278 |
]
|
2279 |
|
2280 |
+
[[package]]
|
2281 |
+
name = "scipy"
|
2282 |
+
version = "1.15.3"
|
2283 |
+
source = { registry = "https://pypi.org/simple" }
|
2284 |
+
dependencies = [
|
2285 |
+
{ name = "numpy" },
|
2286 |
+
]
|
2287 |
+
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" }
|
2288 |
+
wheels = [
|
2289 |
+
{ 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" },
|
2290 |
+
{ 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" },
|
2291 |
+
{ 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" },
|
2292 |
+
{ 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" },
|
2293 |
+
{ url = "https://files.pythonhosted.org/packages/56/30/a6f08f84ee5b7b28b4c597aca4cbe545535c39fe911845a96414700b64ba/scipy-1.15.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c05045d8b9bfd807ee1b9f38761993297b10b245f012b11b13b91ba8945f7e45", size = 35210199, upload-time = "2025-05-08T16:06:26.159Z" },
|
2294 |
+
{ url = "https://files.pythonhosted.org/packages/0b/1f/03f52c282437a168ee2c7c14a1a0d0781a9a4a8962d84ac05c06b4c5b555/scipy-1.15.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:271e3713e645149ea5ea3e97b57fdab61ce61333f97cfae392c28ba786f9bb49", size = 37309455, upload-time = "2025-05-08T16:06:32.778Z" },
|
2295 |
+
{ url = "https://files.pythonhosted.org/packages/89/b1/fbb53137f42c4bf630b1ffdfc2151a62d1d1b903b249f030d2b1c0280af8/scipy-1.15.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6cfd56fc1a8e53f6e89ba3a7a7251f7396412d655bca2aa5611c8ec9a6784a1e", size = 36885140, upload-time = "2025-05-08T16:06:39.249Z" },
|
2296 |
+
{ url = "https://files.pythonhosted.org/packages/2e/2e/025e39e339f5090df1ff266d021892694dbb7e63568edcfe43f892fa381d/scipy-1.15.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:0ff17c0bb1cb32952c09217d8d1eed9b53d1463e5f1dd6052c7857f83127d539", size = 39710549, upload-time = "2025-05-08T16:06:45.729Z" },
|
2297 |
+
{ url = "https://files.pythonhosted.org/packages/e6/eb/3bf6ea8ab7f1503dca3a10df2e4b9c3f6b3316df07f6c0ded94b281c7101/scipy-1.15.3-cp312-cp312-win_amd64.whl", hash = "sha256:52092bc0472cfd17df49ff17e70624345efece4e1a12b23783a1ac59a1b728ed", size = 40966184, upload-time = "2025-05-08T16:06:52.623Z" },
|
2298 |
+
{ url = "https://files.pythonhosted.org/packages/73/18/ec27848c9baae6e0d6573eda6e01a602e5649ee72c27c3a8aad673ebecfd/scipy-1.15.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:2c620736bcc334782e24d173c0fdbb7590a0a436d2fdf39310a8902505008759", size = 38728256, upload-time = "2025-05-08T16:06:58.696Z" },
|
2299 |
+
{ url = "https://files.pythonhosted.org/packages/74/cd/1aef2184948728b4b6e21267d53b3339762c285a46a274ebb7863c9e4742/scipy-1.15.3-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:7e11270a000969409d37ed399585ee530b9ef6aa99d50c019de4cb01e8e54e62", size = 30109540, upload-time = "2025-05-08T16:07:04.209Z" },
|
2300 |
+
{ url = "https://files.pythonhosted.org/packages/5b/d8/59e452c0a255ec352bd0a833537a3bc1bfb679944c4938ab375b0a6b3a3e/scipy-1.15.3-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:8c9ed3ba2c8a2ce098163a9bdb26f891746d02136995df25227a20e71c396ebb", size = 22383115, upload-time = "2025-05-08T16:07:08.998Z" },
|
2301 |
+
{ url = "https://files.pythonhosted.org/packages/08/f5/456f56bbbfccf696263b47095291040655e3cbaf05d063bdc7c7517f32ac/scipy-1.15.3-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:0bdd905264c0c9cfa74a4772cdb2070171790381a5c4d312c973382fc6eaf730", size = 25163884, upload-time = "2025-05-08T16:07:14.091Z" },
|
2302 |
+
{ url = "https://files.pythonhosted.org/packages/a2/66/a9618b6a435a0f0c0b8a6d0a2efb32d4ec5a85f023c2b79d39512040355b/scipy-1.15.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:79167bba085c31f38603e11a267d862957cbb3ce018d8b38f79ac043bc92d825", size = 35174018, upload-time = "2025-05-08T16:07:19.427Z" },
|
2303 |
+
{ url = "https://files.pythonhosted.org/packages/b5/09/c5b6734a50ad4882432b6bb7c02baf757f5b2f256041da5df242e2d7e6b6/scipy-1.15.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c9deabd6d547aee2c9a81dee6cc96c6d7e9a9b1953f74850c179f91fdc729cb7", size = 37269716, upload-time = "2025-05-08T16:07:25.712Z" },
|
2304 |
+
{ url = "https://files.pythonhosted.org/packages/77/0a/eac00ff741f23bcabd352731ed9b8995a0a60ef57f5fd788d611d43d69a1/scipy-1.15.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:dde4fc32993071ac0c7dd2d82569e544f0bdaff66269cb475e0f369adad13f11", size = 36872342, upload-time = "2025-05-08T16:07:31.468Z" },
|
2305 |
+
{ url = "https://files.pythonhosted.org/packages/fe/54/4379be86dd74b6ad81551689107360d9a3e18f24d20767a2d5b9253a3f0a/scipy-1.15.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:f77f853d584e72e874d87357ad70f44b437331507d1c311457bed8ed2b956126", size = 39670869, upload-time = "2025-05-08T16:07:38.002Z" },
|
2306 |
+
{ url = "https://files.pythonhosted.org/packages/87/2e/892ad2862ba54f084ffe8cc4a22667eaf9c2bcec6d2bff1d15713c6c0703/scipy-1.15.3-cp313-cp313-win_amd64.whl", hash = "sha256:b90ab29d0c37ec9bf55424c064312930ca5f4bde15ee8619ee44e69319aab163", size = 40988851, upload-time = "2025-05-08T16:08:33.671Z" },
|
2307 |
+
{ url = "https://files.pythonhosted.org/packages/1b/e9/7a879c137f7e55b30d75d90ce3eb468197646bc7b443ac036ae3fe109055/scipy-1.15.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:3ac07623267feb3ae308487c260ac684b32ea35fd81e12845039952f558047b8", size = 38863011, upload-time = "2025-05-08T16:07:44.039Z" },
|
2308 |
+
{ url = "https://files.pythonhosted.org/packages/51/d1/226a806bbd69f62ce5ef5f3ffadc35286e9fbc802f606a07eb83bf2359de/scipy-1.15.3-cp313-cp313t-macosx_12_0_arm64.whl", hash = "sha256:6487aa99c2a3d509a5227d9a5e889ff05830a06b2ce08ec30df6d79db5fcd5c5", size = 30266407, upload-time = "2025-05-08T16:07:49.891Z" },
|
2309 |
+
{ url = "https://files.pythonhosted.org/packages/e5/9b/f32d1d6093ab9eeabbd839b0f7619c62e46cc4b7b6dbf05b6e615bbd4400/scipy-1.15.3-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:50f9e62461c95d933d5c5ef4a1f2ebf9a2b4e83b0db374cb3f1de104d935922e", size = 22540030, upload-time = "2025-05-08T16:07:54.121Z" },
|
2310 |
+
{ url = "https://files.pythonhosted.org/packages/e7/29/c278f699b095c1a884f29fda126340fcc201461ee8bfea5c8bdb1c7c958b/scipy-1.15.3-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:14ed70039d182f411ffc74789a16df3835e05dc469b898233a245cdfd7f162cb", size = 25218709, upload-time = "2025-05-08T16:07:58.506Z" },
|
2311 |
+
{ url = "https://files.pythonhosted.org/packages/24/18/9e5374b617aba742a990581373cd6b68a2945d65cc588482749ef2e64467/scipy-1.15.3-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0a769105537aa07a69468a0eefcd121be52006db61cdd8cac8a0e68980bbb723", size = 34809045, upload-time = "2025-05-08T16:08:03.929Z" },
|
2312 |
+
{ url = "https://files.pythonhosted.org/packages/e1/fe/9c4361e7ba2927074360856db6135ef4904d505e9b3afbbcb073c4008328/scipy-1.15.3-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9db984639887e3dffb3928d118145ffe40eff2fa40cb241a306ec57c219ebbbb", size = 36703062, upload-time = "2025-05-08T16:08:09.558Z" },
|
2313 |
+
{ url = "https://files.pythonhosted.org/packages/b7/8e/038ccfe29d272b30086b25a4960f757f97122cb2ec42e62b460d02fe98e9/scipy-1.15.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:40e54d5c7e7ebf1aa596c374c49fa3135f04648a0caabcb66c52884b943f02b4", size = 36393132, upload-time = "2025-05-08T16:08:15.34Z" },
|
2314 |
+
{ url = "https://files.pythonhosted.org/packages/10/7e/5c12285452970be5bdbe8352c619250b97ebf7917d7a9a9e96b8a8140f17/scipy-1.15.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:5e721fed53187e71d0ccf382b6bf977644c533e506c4d33c3fb24de89f5c3ed5", size = 38979503, upload-time = "2025-05-08T16:08:21.513Z" },
|
2315 |
+
{ url = "https://files.pythonhosted.org/packages/81/06/0a5e5349474e1cbc5757975b21bd4fad0e72ebf138c5592f191646154e06/scipy-1.15.3-cp313-cp313t-win_amd64.whl", hash = "sha256:76ad1fb5f8752eabf0fa02e4cc0336b4e8f021e2d5f061ed37d6d264db35e3ca", size = 40308097, upload-time = "2025-05-08T16:08:27.627Z" },
|
2316 |
+
]
|
2317 |
+
|
2318 |
[[package]]
|
2319 |
name = "semantic-version"
|
2320 |
version = "2.10.0"
|
|
|
2428 |
{ url = "https://files.pythonhosted.org/packages/8b/0c/9d30a4ebeb6db2b25a841afbb80f6ef9a854fc3b41be131d249a977b4959/starlette-0.46.2-py3-none-any.whl", hash = "sha256:595633ce89f8ffa71a015caed34a5b2dc1c0cdb3f0f1fbd1e69339cf2abeec35", size = 72037, upload-time = "2025-04-13T13:56:16.21Z" },
|
2429 |
]
|
2430 |
|
2431 |
+
[[package]]
|
2432 |
+
name = "supervision"
|
2433 |
+
version = "0.25.1"
|
2434 |
+
source = { registry = "https://pypi.org/simple" }
|
2435 |
+
dependencies = [
|
2436 |
+
{ name = "contourpy" },
|
2437 |
+
{ name = "defusedxml" },
|
2438 |
+
{ name = "matplotlib" },
|
2439 |
+
{ name = "numpy" },
|
2440 |
+
{ name = "opencv-python" },
|
2441 |
+
{ name = "pillow" },
|
2442 |
+
{ name = "pyyaml" },
|
2443 |
+
{ name = "requests" },
|
2444 |
+
{ name = "scipy" },
|
2445 |
+
{ name = "tqdm" },
|
2446 |
+
]
|
2447 |
+
sdist = { url = "https://files.pythonhosted.org/packages/4c/87/3daaa3aec1766f93d4c07d33f933a5ded0a6243a099b6b399b6268053bfe/supervision-0.25.1.tar.gz", hash = "sha256:61781b4abe4fa6ff95c58af6aec7dd3451a78e7e6a797e9ea2787f93771dd031", size = 146657, upload-time = "2024-12-13T13:12:10.64Z" }
|
2448 |
+
wheels = [
|
2449 |
+
{ url = "https://files.pythonhosted.org/packages/c1/24/d3bcad7ece751166ed308c6deb7e7d02a62a7f5a6e01e61ff2787c538fb0/supervision-0.25.1-py3-none-any.whl", hash = "sha256:ebc015c22983bc64563beda75f5f529e465e4020b318da07948ce03148307a72", size = 181480, upload-time = "2024-12-13T13:12:08.1Z" },
|
2450 |
+
]
|
2451 |
+
|
2452 |
[[package]]
|
2453 |
name = "synchronicity"
|
2454 |
version = "0.9.12"
|