Commit
·
50df397
1
Parent(s):
d8ea933
testing new youtube analyzer
Browse files- .github/workflows/main.yaml +10 -0
- agents/agent.py +2 -0
- app.py +1 -1
- pyproject.toml +6 -0
- requirements.txt +40 -3
- run_local_agent.py +1 -1
- tools/video_analyzer.py +190 -0
- uv.lock +361 -2
.github/workflows/main.yaml
CHANGED
@@ -13,6 +13,16 @@ jobs:
|
|
13 |
with:
|
14 |
fetch-depth: 0
|
15 |
lfs: true
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
16 |
- name: Push to hub
|
17 |
env:
|
18 |
HF_TOKEN: ${{ secrets.HF_TOKEN }}
|
|
|
13 |
with:
|
14 |
fetch-depth: 0
|
15 |
lfs: true
|
16 |
+
|
17 |
+
- name: Install uv
|
18 |
+
uses: astral-sh/setup-uv@v5
|
19 |
+
with:
|
20 |
+
# Install a specific version of uv.
|
21 |
+
version: "0.6.17"
|
22 |
+
|
23 |
+
- name: Compile uv dependencies
|
24 |
+
run: uv pip compile pyproject.toml -o requirements.txt
|
25 |
+
|
26 |
- name: Push to hub
|
27 |
env:
|
28 |
HF_TOKEN: ${{ secrets.HF_TOKEN }}
|
agents/agent.py
CHANGED
@@ -6,6 +6,7 @@ from smolagents import (
|
|
6 |
)
|
7 |
from tools.text_search import TextSearch
|
8 |
from tools.text_splitter import text_splitter
|
|
|
9 |
|
10 |
class MyAgent:
|
11 |
def __init__(
|
@@ -46,6 +47,7 @@ class MyAgent:
|
|
46 |
TextSearch(), # Search tool for text queries
|
47 |
text_splitter, # Text splitter tool for breaking down large texts
|
48 |
# into manageable lists.
|
|
|
49 |
]
|
50 |
|
51 |
|
|
|
6 |
)
|
7 |
from tools.text_search import TextSearch
|
8 |
from tools.text_splitter import text_splitter
|
9 |
+
from tools.video_analyzer import YouTubeObjectCounterTool
|
10 |
|
11 |
class MyAgent:
|
12 |
def __init__(
|
|
|
47 |
TextSearch(), # Search tool for text queries
|
48 |
text_splitter, # Text splitter tool for breaking down large texts
|
49 |
# into manageable lists.
|
50 |
+
YouTubeObjectCounterTool(), # Tool for analyzing YouTube videos
|
51 |
]
|
52 |
|
53 |
|
app.py
CHANGED
@@ -70,7 +70,7 @@ def run_and_submit_all(profile: gr.OAuthProfile | None):
|
|
70 |
results_log = []
|
71 |
answers_payload = []
|
72 |
print(f"Running agent on {len(questions_data)} questions...")
|
73 |
-
for item in tqdm(questions_data, desc="Agent is answering questions...", total=len(questions_data)):
|
74 |
task_id = item.get("task_id")
|
75 |
question_text = item.get("question")
|
76 |
if not task_id or question_text is None:
|
|
|
70 |
results_log = []
|
71 |
answers_payload = []
|
72 |
print(f"Running agent on {len(questions_data)} questions...")
|
73 |
+
for item in tqdm(questions_data[0:3], desc="Agent is answering questions...", total=len(questions_data)):
|
74 |
task_id = item.get("task_id")
|
75 |
question_text = item.get("question")
|
76 |
if not task_id or question_text is None:
|
pyproject.toml
CHANGED
@@ -5,14 +5,20 @@ description = "Add your description here"
|
|
5 |
readme = "README.md"
|
6 |
requires-python = ">=3.12"
|
7 |
dependencies = [
|
|
|
8 |
"gradio[oauth]>=5.27.0",
|
9 |
"litellm==1.67.1",
|
10 |
"numpy>=2.2.5",
|
11 |
"openai>=1.76.0",
|
|
|
12 |
"pandas>=2.2.3",
|
13 |
"python-dotenv>=1.1.0",
|
14 |
"requests>=2.32.3",
|
15 |
"smolagents[litellm]>=1.14.0",
|
|
|
|
|
16 |
"tqdm>=4.67.1",
|
|
|
17 |
"wikipedia-api>=0.8.1",
|
|
|
18 |
]
|
|
|
5 |
readme = "README.md"
|
6 |
requires-python = ">=3.12"
|
7 |
dependencies = [
|
8 |
+
"ffmpeg>=1.4",
|
9 |
"gradio[oauth]>=5.27.0",
|
10 |
"litellm==1.67.1",
|
11 |
"numpy>=2.2.5",
|
12 |
"openai>=1.76.0",
|
13 |
+
"opencv-python>=4.11.0.86",
|
14 |
"pandas>=2.2.3",
|
15 |
"python-dotenv>=1.1.0",
|
16 |
"requests>=2.32.3",
|
17 |
"smolagents[litellm]>=1.14.0",
|
18 |
+
"timm>=1.0.15",
|
19 |
+
"torch>=2.7.0",
|
20 |
"tqdm>=4.67.1",
|
21 |
+
"transformers>=4.51.3",
|
22 |
"wikipedia-api>=0.8.1",
|
23 |
+
"yt-dlp>=2025.3.31",
|
24 |
]
|
requirements.txt
CHANGED
@@ -48,10 +48,15 @@ duckduckgo-search==8.0.1
|
|
48 |
# via smolagents
|
49 |
fastapi==0.115.12
|
50 |
# via gradio
|
|
|
|
|
51 |
ffmpy==0.5.0
|
52 |
# via gradio
|
53 |
filelock==3.18.0
|
54 |
-
# via
|
|
|
|
|
|
|
55 |
frozenlist==1.6.0
|
56 |
# via
|
57 |
# aiohttp
|
@@ -60,6 +65,7 @@ fsspec==2025.3.2
|
|
60 |
# via
|
61 |
# gradio-client
|
62 |
# huggingface-hub
|
|
|
63 |
gradio==5.27.0
|
64 |
# via hf-agents-gaia-agent (pyproject.toml)
|
65 |
gradio-client==1.9.0
|
@@ -85,6 +91,7 @@ huggingface-hub==0.30.2
|
|
85 |
# gradio-client
|
86 |
# smolagents
|
87 |
# tokenizers
|
|
|
88 |
idna==3.10
|
89 |
# via
|
90 |
# anyio
|
@@ -100,6 +107,7 @@ jinja2==3.1.6
|
|
100 |
# gradio
|
101 |
# litellm
|
102 |
# smolagents
|
|
|
103 |
jiter==0.9.0
|
104 |
# via openai
|
105 |
jsonschema==4.23.0
|
@@ -122,19 +130,27 @@ markupsafe==3.0.2
|
|
122 |
# jinja2
|
123 |
mdurl==0.1.2
|
124 |
# via markdown-it-py
|
|
|
|
|
125 |
multidict==6.4.3
|
126 |
# via
|
127 |
# aiohttp
|
128 |
# yarl
|
|
|
|
|
129 |
numpy==2.2.5
|
130 |
# via
|
131 |
# hf-agents-gaia-agent (pyproject.toml)
|
132 |
# gradio
|
|
|
133 |
# pandas
|
|
|
134 |
openai==1.76.0
|
135 |
# via
|
136 |
# hf-agents-gaia-agent (pyproject.toml)
|
137 |
# litellm
|
|
|
|
|
138 |
orjson==3.10.16
|
139 |
# via gradio
|
140 |
packaging==25.0
|
@@ -142,6 +158,7 @@ packaging==25.0
|
|
142 |
# gradio
|
143 |
# gradio-client
|
144 |
# huggingface-hub
|
|
|
145 |
pandas==2.2.3
|
146 |
# via
|
147 |
# hf-agents-gaia-agent (pyproject.toml)
|
@@ -185,18 +202,22 @@ pyyaml==6.0.2
|
|
185 |
# via
|
186 |
# gradio
|
187 |
# huggingface-hub
|
|
|
188 |
referencing==0.36.2
|
189 |
# via
|
190 |
# jsonschema
|
191 |
# jsonschema-specifications
|
192 |
regex==2024.11.6
|
193 |
-
# via
|
|
|
|
|
194 |
requests==2.32.3
|
195 |
# via
|
196 |
# hf-agents-gaia-agent (pyproject.toml)
|
197 |
# huggingface-hub
|
198 |
# smolagents
|
199 |
# tiktoken
|
|
|
200 |
# wikipedia-api
|
201 |
rich==14.0.0
|
202 |
# via
|
@@ -210,8 +231,12 @@ ruff==0.11.7
|
|
210 |
# via gradio
|
211 |
safehttpx==0.1.6
|
212 |
# via gradio
|
|
|
|
|
213 |
semantic-version==2.10.0
|
214 |
# via gradio
|
|
|
|
|
215 |
shellingham==1.5.4
|
216 |
# via typer
|
217 |
six==1.17.0
|
@@ -230,17 +255,26 @@ starlette==0.46.2
|
|
230 |
# via
|
231 |
# fastapi
|
232 |
# gradio
|
|
|
|
|
233 |
tiktoken==0.9.0
|
234 |
# via litellm
|
235 |
tokenizers==0.21.1
|
236 |
-
# via
|
|
|
|
|
237 |
tomlkit==0.13.2
|
238 |
# via gradio
|
|
|
|
|
239 |
tqdm==4.67.1
|
240 |
# via
|
241 |
# hf-agents-gaia-agent (pyproject.toml)
|
242 |
# huggingface-hub
|
243 |
# openai
|
|
|
|
|
|
|
244 |
typer==0.15.2
|
245 |
# via gradio
|
246 |
typing-extensions==4.13.2
|
@@ -255,6 +289,7 @@ typing-extensions==4.13.2
|
|
255 |
# pydantic
|
256 |
# pydantic-core
|
257 |
# referencing
|
|
|
258 |
# typer
|
259 |
# typing-inspection
|
260 |
typing-inspection==0.4.0
|
@@ -271,5 +306,7 @@ wikipedia-api==0.8.1
|
|
271 |
# via hf-agents-gaia-agent (pyproject.toml)
|
272 |
yarl==1.20.0
|
273 |
# via aiohttp
|
|
|
|
|
274 |
zipp==3.21.0
|
275 |
# via importlib-metadata
|
|
|
48 |
# via smolagents
|
49 |
fastapi==0.115.12
|
50 |
# via gradio
|
51 |
+
ffmpeg==1.4
|
52 |
+
# via hf-agents-gaia-agent (pyproject.toml)
|
53 |
ffmpy==0.5.0
|
54 |
# via gradio
|
55 |
filelock==3.18.0
|
56 |
+
# via
|
57 |
+
# huggingface-hub
|
58 |
+
# torch
|
59 |
+
# transformers
|
60 |
frozenlist==1.6.0
|
61 |
# via
|
62 |
# aiohttp
|
|
|
65 |
# via
|
66 |
# gradio-client
|
67 |
# huggingface-hub
|
68 |
+
# torch
|
69 |
gradio==5.27.0
|
70 |
# via hf-agents-gaia-agent (pyproject.toml)
|
71 |
gradio-client==1.9.0
|
|
|
91 |
# gradio-client
|
92 |
# smolagents
|
93 |
# tokenizers
|
94 |
+
# transformers
|
95 |
idna==3.10
|
96 |
# via
|
97 |
# anyio
|
|
|
107 |
# gradio
|
108 |
# litellm
|
109 |
# smolagents
|
110 |
+
# torch
|
111 |
jiter==0.9.0
|
112 |
# via openai
|
113 |
jsonschema==4.23.0
|
|
|
130 |
# jinja2
|
131 |
mdurl==0.1.2
|
132 |
# via markdown-it-py
|
133 |
+
mpmath==1.3.0
|
134 |
+
# via sympy
|
135 |
multidict==6.4.3
|
136 |
# via
|
137 |
# aiohttp
|
138 |
# yarl
|
139 |
+
networkx==3.4.2
|
140 |
+
# via torch
|
141 |
numpy==2.2.5
|
142 |
# via
|
143 |
# hf-agents-gaia-agent (pyproject.toml)
|
144 |
# gradio
|
145 |
+
# opencv-python
|
146 |
# pandas
|
147 |
+
# transformers
|
148 |
openai==1.76.0
|
149 |
# via
|
150 |
# hf-agents-gaia-agent (pyproject.toml)
|
151 |
# litellm
|
152 |
+
opencv-python==4.11.0.86
|
153 |
+
# via hf-agents-gaia-agent (pyproject.toml)
|
154 |
orjson==3.10.16
|
155 |
# via gradio
|
156 |
packaging==25.0
|
|
|
158 |
# gradio
|
159 |
# gradio-client
|
160 |
# huggingface-hub
|
161 |
+
# transformers
|
162 |
pandas==2.2.3
|
163 |
# via
|
164 |
# hf-agents-gaia-agent (pyproject.toml)
|
|
|
202 |
# via
|
203 |
# gradio
|
204 |
# huggingface-hub
|
205 |
+
# transformers
|
206 |
referencing==0.36.2
|
207 |
# via
|
208 |
# jsonschema
|
209 |
# jsonschema-specifications
|
210 |
regex==2024.11.6
|
211 |
+
# via
|
212 |
+
# tiktoken
|
213 |
+
# transformers
|
214 |
requests==2.32.3
|
215 |
# via
|
216 |
# hf-agents-gaia-agent (pyproject.toml)
|
217 |
# huggingface-hub
|
218 |
# smolagents
|
219 |
# tiktoken
|
220 |
+
# transformers
|
221 |
# wikipedia-api
|
222 |
rich==14.0.0
|
223 |
# via
|
|
|
231 |
# via gradio
|
232 |
safehttpx==0.1.6
|
233 |
# via gradio
|
234 |
+
safetensors==0.5.3
|
235 |
+
# via transformers
|
236 |
semantic-version==2.10.0
|
237 |
# via gradio
|
238 |
+
setuptools==80.0.0
|
239 |
+
# via torch
|
240 |
shellingham==1.5.4
|
241 |
# via typer
|
242 |
six==1.17.0
|
|
|
255 |
# via
|
256 |
# fastapi
|
257 |
# gradio
|
258 |
+
sympy==1.14.0
|
259 |
+
# via torch
|
260 |
tiktoken==0.9.0
|
261 |
# via litellm
|
262 |
tokenizers==0.21.1
|
263 |
+
# via
|
264 |
+
# litellm
|
265 |
+
# transformers
|
266 |
tomlkit==0.13.2
|
267 |
# via gradio
|
268 |
+
torch==2.7.0
|
269 |
+
# via hf-agents-gaia-agent (pyproject.toml)
|
270 |
tqdm==4.67.1
|
271 |
# via
|
272 |
# hf-agents-gaia-agent (pyproject.toml)
|
273 |
# huggingface-hub
|
274 |
# openai
|
275 |
+
# transformers
|
276 |
+
transformers==4.51.3
|
277 |
+
# via hf-agents-gaia-agent (pyproject.toml)
|
278 |
typer==0.15.2
|
279 |
# via gradio
|
280 |
typing-extensions==4.13.2
|
|
|
289 |
# pydantic
|
290 |
# pydantic-core
|
291 |
# referencing
|
292 |
+
# torch
|
293 |
# typer
|
294 |
# typing-inspection
|
295 |
typing-inspection==0.4.0
|
|
|
306 |
# via hf-agents-gaia-agent (pyproject.toml)
|
307 |
yarl==1.20.0
|
308 |
# via aiohttp
|
309 |
+
yt-dlp==2025.3.31
|
310 |
+
# via hf-agents-gaia-agent (pyproject.toml)
|
311 |
zipp==3.21.0
|
312 |
# via importlib-metadata
|
run_local_agent.py
CHANGED
@@ -28,6 +28,6 @@ if __name__ == "__main__":
|
|
28 |
with open(QUESTIONS_FILEPATH, "r") as f:
|
29 |
questions = json.load(f)
|
30 |
|
31 |
-
answers = run_agent(agent, [questions[
|
32 |
print("Answers:", answers)
|
33 |
print("Finished running the agent.")
|
|
|
28 |
with open(QUESTIONS_FILEPATH, "r") as f:
|
29 |
questions = json.load(f)
|
30 |
|
31 |
+
answers = run_agent(agent, [questions[1]])
|
32 |
print("Answers:", answers)
|
33 |
print("Finished running the agent.")
|
tools/video_analyzer.py
ADDED
@@ -0,0 +1,190 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
from smolagents import Tool
|
2 |
+
import os
|
3 |
+
import cv2
|
4 |
+
import tempfile
|
5 |
+
from yt_dlp import YoutubeDL
|
6 |
+
from transformers import pipeline
|
7 |
+
from typing import Any
|
8 |
+
from PIL import Image
|
9 |
+
import numpy as np
|
10 |
+
from transformers import logging
|
11 |
+
|
12 |
+
class YouTubeObjectCounterTool(Tool):
|
13 |
+
name = "youtube_object_counter"
|
14 |
+
description = "Analyzes a YouTube video frame by frame and counts the number of objects of a specified type visible in each frame."
|
15 |
+
inputs = {
|
16 |
+
"url": {
|
17 |
+
"type": "string",
|
18 |
+
"description": "The URL of the YouTube video to analyze."
|
19 |
+
},
|
20 |
+
"label": {
|
21 |
+
"type": "string",
|
22 |
+
"description": "The type of object to count (e.g., 'bird', 'person', 'car', 'dog'). Use common object names recognized by standard object detection models."
|
23 |
+
}
|
24 |
+
}
|
25 |
+
output_type = "string"
|
26 |
+
|
27 |
+
def _download_video(self, url):
|
28 |
+
"""Downloads the YouTube video to a temporary file."""
|
29 |
+
print(f"Downloading video from {url}...")
|
30 |
+
temp_dir = tempfile.mkdtemp()
|
31 |
+
|
32 |
+
video_path = os.path.join(temp_dir, "video.mp4")
|
33 |
+
|
34 |
+
ydl_opts = {
|
35 |
+
'format': 'bestvideo[ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]/best',
|
36 |
+
'outtmpl': video_path,
|
37 |
+
'quiet': True,
|
38 |
+
'no_warnings': True
|
39 |
+
}
|
40 |
+
|
41 |
+
try:
|
42 |
+
with YoutubeDL(ydl_opts) as ydl:
|
43 |
+
ydl.download([url])
|
44 |
+
print(f"Video downloaded to {video_path}")
|
45 |
+
return video_path
|
46 |
+
except Exception as e:
|
47 |
+
error_msg = f"Error downloading video: {str(e)}"
|
48 |
+
print(error_msg)
|
49 |
+
raise RuntimeError(error_msg)
|
50 |
+
|
51 |
+
def _count_objects_in_frame(self, frame, label: str):
|
52 |
+
"""Counts objects of specified label in a single frame using the object detection model."""
|
53 |
+
|
54 |
+
try:
|
55 |
+
# Convert OpenCV BGR frame to RGB
|
56 |
+
rgb_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
|
57 |
+
|
58 |
+
# Convert numpy array to PIL Image
|
59 |
+
pil_image = Image.fromarray(rgb_frame)
|
60 |
+
|
61 |
+
# Load the detector
|
62 |
+
detector = pipeline("object-detection", model="facebook/detr-resnet-50")
|
63 |
+
|
64 |
+
# Run detection with PIL Image
|
65 |
+
results = detector(pil_image)
|
66 |
+
|
67 |
+
# Count objects matching the label
|
68 |
+
object_count = sum(1 for result in results if label.lower() in result['label'].lower())
|
69 |
+
return object_count
|
70 |
+
except Exception as e:
|
71 |
+
print(f"Error detecting objects in frame: {str(e)}")
|
72 |
+
return 0
|
73 |
+
|
74 |
+
def _analyze_video(self, video_path: str, label: str) -> dict[str, Any]:
|
75 |
+
"""Analyzes the video frame by frame and counts objects of the specified label."""
|
76 |
+
sample_rate = 30
|
77 |
+
print(f"Analyzing video {video_path}, looking for '{label}' objects, sampling every {sample_rate} frames...")
|
78 |
+
|
79 |
+
# Open the video file
|
80 |
+
cap = cv2.VideoCapture(video_path)
|
81 |
+
if not cap.isOpened():
|
82 |
+
raise RuntimeError(f"Error: Could not open video file {video_path}")
|
83 |
+
|
84 |
+
# Get video properties
|
85 |
+
fps = cap.get(cv2.CAP_PROP_FPS)
|
86 |
+
frame_count = int(cap.get(cv2.CAP_PROP_FRAME_COUNT))
|
87 |
+
duration = frame_count / fps
|
88 |
+
|
89 |
+
# Initialize results
|
90 |
+
frame_results = []
|
91 |
+
total_objects = 0
|
92 |
+
max_objects = 0
|
93 |
+
max_objects_frame = 0
|
94 |
+
frame_idx = 0
|
95 |
+
|
96 |
+
# Process frames
|
97 |
+
while cap.isOpened():
|
98 |
+
ret, frame = cap.read()
|
99 |
+
if not ret:
|
100 |
+
break
|
101 |
+
|
102 |
+
# Only process every nth frame
|
103 |
+
if frame_idx % sample_rate == 0:
|
104 |
+
time_point = frame_idx / fps
|
105 |
+
print(f"Processing frame {frame_idx} at time {time_point:.2f}s...")
|
106 |
+
|
107 |
+
object_count = self._count_objects_in_frame(frame, label)
|
108 |
+
total_objects += object_count
|
109 |
+
|
110 |
+
if object_count > max_objects:
|
111 |
+
max_objects = object_count
|
112 |
+
max_objects_frame = frame_idx
|
113 |
+
|
114 |
+
frame_results.append({
|
115 |
+
"frame": frame_idx,
|
116 |
+
"time": time_point,
|
117 |
+
"object_count": object_count
|
118 |
+
})
|
119 |
+
|
120 |
+
frame_idx += 1
|
121 |
+
|
122 |
+
# Release resources
|
123 |
+
cap.release()
|
124 |
+
|
125 |
+
# Calculate statistics
|
126 |
+
avg_objects_per_frame = total_objects / len(frame_results) if frame_results else 0
|
127 |
+
max_objects_time = max_objects_frame / fps if max_objects_frame else 0
|
128 |
+
|
129 |
+
# Clean up the temporary file
|
130 |
+
try:
|
131 |
+
os.remove(video_path)
|
132 |
+
print(f"Deleted temporary video file: {video_path}")
|
133 |
+
except Exception as e:
|
134 |
+
print(f"Warning: Failed to delete temporary video file: {video_path} | {str(e)}")
|
135 |
+
|
136 |
+
return {
|
137 |
+
"frame_results": frame_results,
|
138 |
+
"total_frames_analyzed": len(frame_results),
|
139 |
+
"video_duration": duration,
|
140 |
+
"fps": fps,
|
141 |
+
"total_frames": frame_count,
|
142 |
+
"average_objects_per_analyzed_frame": avg_objects_per_frame,
|
143 |
+
"max_objects_in_single_frame": max_objects,
|
144 |
+
"max_objects_frame": max_objects_frame,
|
145 |
+
"max_objects_time": max_objects_time,
|
146 |
+
"label": label
|
147 |
+
}
|
148 |
+
|
149 |
+
def forward(self, url: str, label: str) -> str:
|
150 |
+
"""
|
151 |
+
Analyzes a YouTube video frame by frame and counts objects of the specified type.
|
152 |
+
|
153 |
+
Args:
|
154 |
+
url (str): The URL of the YouTube video to analyze.
|
155 |
+
label (str): The type of object to count (e.g., 'bird', 'person', 'car', 'dog').
|
156 |
+
|
157 |
+
Returns:
|
158 |
+
str: A detailed report of object counts per frame and summary statistics.
|
159 |
+
"""
|
160 |
+
|
161 |
+
logging.set_verbosity_error()
|
162 |
+
try:
|
163 |
+
# Download the video
|
164 |
+
video_path = self._download_video(url)
|
165 |
+
|
166 |
+
# Analyze the video
|
167 |
+
results = self._analyze_video(video_path, label)
|
168 |
+
|
169 |
+
# Generate a report
|
170 |
+
report = [
|
171 |
+
f"# {label.title()} Count Analysis for YouTube Video",
|
172 |
+
f"Video URL: {url}",
|
173 |
+
f"Video duration: {results['video_duration']:.2f} seconds",
|
174 |
+
f"Analyzed {results['total_frames_analyzed']} frames out of {results['total_frames']} total frames",
|
175 |
+
f"Sampling rate: 1 frame every 30 frames (approximately {results['fps']/30:.2f} frames per second)",
|
176 |
+
"## Summary",
|
177 |
+
f"Average {label}s per analyzed frame: {results['average_objects_per_analyzed_frame']:.2f}",
|
178 |
+
f"Maximum {label}s in a single frame: {results['max_objects_in_single_frame']} (at {results['max_objects_time']:.2f} seconds)",
|
179 |
+
]
|
180 |
+
|
181 |
+
# Add frame-by-frame details
|
182 |
+
report.append("## Frame-by-Frame Analysis")
|
183 |
+
for result in results["frame_results"]:
|
184 |
+
report.append(f"Frame {result['frame']} (Time: {result['time']:.2f}s): {result['object_count']} {label}s")
|
185 |
+
|
186 |
+
return "\n".join(report)
|
187 |
+
|
188 |
+
except Exception as e:
|
189 |
+
return f"Error analyzing video: {str(e)}"
|
190 |
+
|
uv.lock
CHANGED
@@ -2,8 +2,12 @@ version = 1
|
|
2 |
revision = 1
|
3 |
requires-python = ">=3.12"
|
4 |
resolution-markers = [
|
5 |
-
"python_full_version >= '3.13'",
|
6 |
-
"python_full_version
|
|
|
|
|
|
|
|
|
7 |
]
|
8 |
|
9 |
[[package]]
|
@@ -352,6 +356,12 @@ wheels = [
|
|
352 |
{ url = "https://files.pythonhosted.org/packages/50/b3/b51f09c2ba432a576fe63758bddc81f78f0c6309d9e5c10d194313bf021e/fastapi-0.115.12-py3-none-any.whl", hash = "sha256:e94613d6c05e27be7ffebdd6ea5f388112e5e430c8f7d6494a9d1d88d43e814d", size = 95164 },
|
353 |
]
|
354 |
|
|
|
|
|
|
|
|
|
|
|
|
|
355 |
[[package]]
|
356 |
name = "ffmpy"
|
357 |
version = "0.5.0"
|
@@ -525,30 +535,42 @@ name = "hf-agents-gaia-agent"
|
|
525 |
version = "0.1.0"
|
526 |
source = { virtual = "." }
|
527 |
dependencies = [
|
|
|
528 |
{ name = "gradio", extra = ["oauth"] },
|
529 |
{ name = "litellm" },
|
530 |
{ name = "numpy" },
|
531 |
{ name = "openai" },
|
|
|
532 |
{ name = "pandas" },
|
533 |
{ name = "python-dotenv" },
|
534 |
{ name = "requests" },
|
535 |
{ name = "smolagents", extra = ["litellm"] },
|
|
|
|
|
536 |
{ name = "tqdm" },
|
|
|
537 |
{ name = "wikipedia-api" },
|
|
|
538 |
]
|
539 |
|
540 |
[package.metadata]
|
541 |
requires-dist = [
|
|
|
542 |
{ name = "gradio", extras = ["oauth"], specifier = ">=5.27.0" },
|
543 |
{ name = "litellm", specifier = "==1.67.1" },
|
544 |
{ name = "numpy", specifier = ">=2.2.5" },
|
545 |
{ name = "openai", specifier = ">=1.76.0" },
|
|
|
546 |
{ name = "pandas", specifier = ">=2.2.3" },
|
547 |
{ name = "python-dotenv", specifier = ">=1.1.0" },
|
548 |
{ name = "requests", specifier = ">=2.32.3" },
|
549 |
{ name = "smolagents", extras = ["litellm"], specifier = ">=1.14.0" },
|
|
|
|
|
550 |
{ name = "tqdm", specifier = ">=4.67.1" },
|
|
|
551 |
{ name = "wikipedia-api", specifier = ">=0.8.1" },
|
|
|
552 |
]
|
553 |
|
554 |
[[package]]
|
@@ -837,6 +859,15 @@ wheels = [
|
|
837 |
{ url = "https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8", size = 9979 },
|
838 |
]
|
839 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
840 |
[[package]]
|
841 |
name = "multidict"
|
842 |
version = "6.4.3"
|
@@ -897,6 +928,15 @@ wheels = [
|
|
897 |
{ url = "https://files.pythonhosted.org/packages/96/10/7d526c8974f017f1e7ca584c71ee62a638e9334d8d33f27d7cdfc9ae79e4/multidict-6.4.3-py3-none-any.whl", hash = "sha256:59fe01ee8e2a1e8ceb3f6dbb216b09c8d9f4ef1c22c4fc825d045a147fa2ebc9", size = 10400 },
|
898 |
]
|
899 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
900 |
[[package]]
|
901 |
name = "numpy"
|
902 |
version = "2.2.5"
|
@@ -935,6 +975,139 @@ wheels = [
|
|
935 |
{ url = "https://files.pythonhosted.org/packages/63/be/b85e4aa4bf42c6502851b971f1c326d583fcc68227385f92089cf50a7b45/numpy-2.2.5-cp313-cp313t-win_amd64.whl", hash = "sha256:d403c84991b5ad291d3809bace5e85f4bbf44a04bdc9a88ed2bb1807b3360bb8", size = 12750096 },
|
936 |
]
|
937 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
938 |
[[package]]
|
939 |
name = "openai"
|
940 |
version = "1.76.0"
|
@@ -954,6 +1127,23 @@ wheels = [
|
|
954 |
{ url = "https://files.pythonhosted.org/packages/59/aa/84e02ab500ca871eb8f62784426963a1c7c17a72fea3c7f268af4bbaafa5/openai-1.76.0-py3-none-any.whl", hash = "sha256:a712b50e78cf78e6d7b2a8f69c4978243517c2c36999756673e07a14ce37dc0a", size = 661201 },
|
955 |
]
|
956 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
957 |
[[package]]
|
958 |
name = "orjson"
|
959 |
version = "3.10.16"
|
@@ -1460,6 +1650,28 @@ wheels = [
|
|
1460 |
{ url = "https://files.pythonhosted.org/packages/4d/c0/1108ad9f01567f66b3154063605b350b69c3c9366732e09e45f9fd0d1deb/safehttpx-0.1.6-py3-none-any.whl", hash = "sha256:407cff0b410b071623087c63dd2080c3b44dc076888d8c5823c00d1e58cb381c", size = 8692 },
|
1461 |
]
|
1462 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1463 |
[[package]]
|
1464 |
name = "semantic-version"
|
1465 |
version = "2.10.0"
|
@@ -1469,6 +1681,15 @@ wheels = [
|
|
1469 |
{ url = "https://files.pythonhosted.org/packages/6a/23/8146aad7d88f4fcb3a6218f41a60f6c2d4e3a72de72da1825dc7c8f7877c/semantic_version-2.10.0-py2.py3-none-any.whl", hash = "sha256:de78a3b8e0feda74cabc54aab2da702113e33ac9d9eb9d2389bcf1f58b7d9177", size = 15552 },
|
1470 |
]
|
1471 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1472 |
[[package]]
|
1473 |
name = "shellingham"
|
1474 |
version = "1.5.4"
|
@@ -1541,6 +1762,18 @@ wheels = [
|
|
1541 |
{ url = "https://files.pythonhosted.org/packages/8b/0c/9d30a4ebeb6db2b25a841afbb80f6ef9a854fc3b41be131d249a977b4959/starlette-0.46.2-py3-none-any.whl", hash = "sha256:595633ce89f8ffa71a015caed34a5b2dc1c0cdb3f0f1fbd1e69339cf2abeec35", size = 72037 },
|
1542 |
]
|
1543 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1544 |
[[package]]
|
1545 |
name = "tiktoken"
|
1546 |
version = "0.9.0"
|
@@ -1565,6 +1798,22 @@ wheels = [
|
|
1565 |
{ url = "https://files.pythonhosted.org/packages/de/a8/8f499c179ec900783ffe133e9aab10044481679bb9aad78436d239eee716/tiktoken-0.9.0-cp313-cp313-win_amd64.whl", hash = "sha256:5ea0edb6f83dc56d794723286215918c1cde03712cbbafa0348b33448faf5b95", size = 894669 },
|
1566 |
]
|
1567 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1568 |
[[package]]
|
1569 |
name = "tokenizers"
|
1570 |
version = "0.21.1"
|
@@ -1599,6 +1848,73 @@ wheels = [
|
|
1599 |
{ url = "https://files.pythonhosted.org/packages/f9/b6/a447b5e4ec71e13871be01ba81f5dfc9d0af7e473da256ff46bc0e24026f/tomlkit-0.13.2-py3-none-any.whl", hash = "sha256:7a974427f6e119197f670fbbbeae7bef749a6c14e793db934baefc1b5f03efde", size = 37955 },
|
1600 |
]
|
1601 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1602 |
[[package]]
|
1603 |
name = "tqdm"
|
1604 |
version = "4.67.1"
|
@@ -1611,6 +1927,40 @@ wheels = [
|
|
1611 |
{ url = "https://files.pythonhosted.org/packages/d0/30/dc54f88dd4a2b5dc8a0279bdd7270e735851848b762aeb1c1184ed1f6b14/tqdm-4.67.1-py3-none-any.whl", hash = "sha256:26445eca388f82e72884e0d580d5464cd801a3ea01e63e5601bdff9ba6a48de2", size = 78540 },
|
1612 |
]
|
1613 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1614 |
[[package]]
|
1615 |
name = "typer"
|
1616 |
version = "0.15.2"
|
@@ -1783,6 +2133,15 @@ wheels = [
|
|
1783 |
{ url = "https://files.pythonhosted.org/packages/ea/1f/70c57b3d7278e94ed22d85e09685d3f0a38ebdd8c5c73b65ba4c0d0fe002/yarl-1.20.0-py3-none-any.whl", hash = "sha256:5d0fe6af927a47a230f31e6004621fd0959eaa915fc62acfafa67ff7229a3124", size = 46124 },
|
1784 |
]
|
1785 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1786 |
[[package]]
|
1787 |
name = "zipp"
|
1788 |
version = "3.21.0"
|
|
|
2 |
revision = 1
|
3 |
requires-python = ">=3.12"
|
4 |
resolution-markers = [
|
5 |
+
"python_full_version >= '3.13' and sys_platform == 'darwin'",
|
6 |
+
"python_full_version >= '3.13' and platform_machine == 'aarch64' and sys_platform == 'linux'",
|
7 |
+
"(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')",
|
8 |
+
"python_full_version < '3.13' and sys_platform == 'darwin'",
|
9 |
+
"python_full_version < '3.13' and platform_machine == 'aarch64' and sys_platform == 'linux'",
|
10 |
+
"(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')",
|
11 |
]
|
12 |
|
13 |
[[package]]
|
|
|
356 |
{ url = "https://files.pythonhosted.org/packages/50/b3/b51f09c2ba432a576fe63758bddc81f78f0c6309d9e5c10d194313bf021e/fastapi-0.115.12-py3-none-any.whl", hash = "sha256:e94613d6c05e27be7ffebdd6ea5f388112e5e430c8f7d6494a9d1d88d43e814d", size = 95164 },
|
357 |
]
|
358 |
|
359 |
+
[[package]]
|
360 |
+
name = "ffmpeg"
|
361 |
+
version = "1.4"
|
362 |
+
source = { registry = "https://pypi.org/simple" }
|
363 |
+
sdist = { url = "https://files.pythonhosted.org/packages/f0/cc/3b7408b8ecf7c1d20ad480c3eaed7619857bf1054b690226e906fdf14258/ffmpeg-1.4.tar.gz", hash = "sha256:6931692c890ff21d39938433c2189747815dca0c60ddc7f9bb97f199dba0b5b9", size = 5055 }
|
364 |
+
|
365 |
[[package]]
|
366 |
name = "ffmpy"
|
367 |
version = "0.5.0"
|
|
|
535 |
version = "0.1.0"
|
536 |
source = { virtual = "." }
|
537 |
dependencies = [
|
538 |
+
{ name = "ffmpeg" },
|
539 |
{ name = "gradio", extra = ["oauth"] },
|
540 |
{ name = "litellm" },
|
541 |
{ name = "numpy" },
|
542 |
{ name = "openai" },
|
543 |
+
{ name = "opencv-python" },
|
544 |
{ name = "pandas" },
|
545 |
{ name = "python-dotenv" },
|
546 |
{ name = "requests" },
|
547 |
{ name = "smolagents", extra = ["litellm"] },
|
548 |
+
{ name = "timm" },
|
549 |
+
{ name = "torch" },
|
550 |
{ name = "tqdm" },
|
551 |
+
{ name = "transformers" },
|
552 |
{ name = "wikipedia-api" },
|
553 |
+
{ name = "yt-dlp" },
|
554 |
]
|
555 |
|
556 |
[package.metadata]
|
557 |
requires-dist = [
|
558 |
+
{ name = "ffmpeg", specifier = ">=1.4" },
|
559 |
{ name = "gradio", extras = ["oauth"], specifier = ">=5.27.0" },
|
560 |
{ name = "litellm", specifier = "==1.67.1" },
|
561 |
{ name = "numpy", specifier = ">=2.2.5" },
|
562 |
{ name = "openai", specifier = ">=1.76.0" },
|
563 |
+
{ name = "opencv-python", specifier = ">=4.11.0.86" },
|
564 |
{ name = "pandas", specifier = ">=2.2.3" },
|
565 |
{ name = "python-dotenv", specifier = ">=1.1.0" },
|
566 |
{ name = "requests", specifier = ">=2.32.3" },
|
567 |
{ name = "smolagents", extras = ["litellm"], specifier = ">=1.14.0" },
|
568 |
+
{ name = "timm", specifier = ">=1.0.15" },
|
569 |
+
{ name = "torch", specifier = ">=2.7.0" },
|
570 |
{ name = "tqdm", specifier = ">=4.67.1" },
|
571 |
+
{ name = "transformers", specifier = ">=4.51.3" },
|
572 |
{ name = "wikipedia-api", specifier = ">=0.8.1" },
|
573 |
+
{ name = "yt-dlp", specifier = ">=2025.3.31" },
|
574 |
]
|
575 |
|
576 |
[[package]]
|
|
|
859 |
{ url = "https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8", size = 9979 },
|
860 |
]
|
861 |
|
862 |
+
[[package]]
|
863 |
+
name = "mpmath"
|
864 |
+
version = "1.3.0"
|
865 |
+
source = { registry = "https://pypi.org/simple" }
|
866 |
+
sdist = { url = "https://files.pythonhosted.org/packages/e0/47/dd32fa426cc72114383ac549964eecb20ecfd886d1e5ccf5340b55b02f57/mpmath-1.3.0.tar.gz", hash = "sha256:7a28eb2a9774d00c7bc92411c19a89209d5da7c4c9a9e227be8330a23a25b91f", size = 508106 }
|
867 |
+
wheels = [
|
868 |
+
{ url = "https://files.pythonhosted.org/packages/43/e3/7d92a15f894aa0c9c4b49b8ee9ac9850d6e63b03c9c32c0367a13ae62209/mpmath-1.3.0-py3-none-any.whl", hash = "sha256:a0b2b9fe80bbcd81a6647ff13108738cfb482d481d826cc0e02f5b35e5c88d2c", size = 536198 },
|
869 |
+
]
|
870 |
+
|
871 |
[[package]]
|
872 |
name = "multidict"
|
873 |
version = "6.4.3"
|
|
|
928 |
{ url = "https://files.pythonhosted.org/packages/96/10/7d526c8974f017f1e7ca584c71ee62a638e9334d8d33f27d7cdfc9ae79e4/multidict-6.4.3-py3-none-any.whl", hash = "sha256:59fe01ee8e2a1e8ceb3f6dbb216b09c8d9f4ef1c22c4fc825d045a147fa2ebc9", size = 10400 },
|
929 |
]
|
930 |
|
931 |
+
[[package]]
|
932 |
+
name = "networkx"
|
933 |
+
version = "3.4.2"
|
934 |
+
source = { registry = "https://pypi.org/simple" }
|
935 |
+
sdist = { url = "https://files.pythonhosted.org/packages/fd/1d/06475e1cd5264c0b870ea2cc6fdb3e37177c1e565c43f56ff17a10e3937f/networkx-3.4.2.tar.gz", hash = "sha256:307c3669428c5362aab27c8a1260aa8f47c4e91d3891f48be0141738d8d053e1", size = 2151368 }
|
936 |
+
wheels = [
|
937 |
+
{ url = "https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl", hash = "sha256:df5d4365b724cf81b8c6a7312509d0c22386097011ad1abe274afd5e9d3bbc5f", size = 1723263 },
|
938 |
+
]
|
939 |
+
|
940 |
[[package]]
|
941 |
name = "numpy"
|
942 |
version = "2.2.5"
|
|
|
975 |
{ url = "https://files.pythonhosted.org/packages/63/be/b85e4aa4bf42c6502851b971f1c326d583fcc68227385f92089cf50a7b45/numpy-2.2.5-cp313-cp313t-win_amd64.whl", hash = "sha256:d403c84991b5ad291d3809bace5e85f4bbf44a04bdc9a88ed2bb1807b3360bb8", size = 12750096 },
|
976 |
]
|
977 |
|
978 |
+
[[package]]
|
979 |
+
name = "nvidia-cublas-cu12"
|
980 |
+
version = "12.6.4.1"
|
981 |
+
source = { registry = "https://pypi.org/simple" }
|
982 |
+
wheels = [
|
983 |
+
{ url = "https://files.pythonhosted.org/packages/af/eb/ff4b8c503fa1f1796679dce648854d58751982426e4e4b37d6fce49d259c/nvidia_cublas_cu12-12.6.4.1-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:08ed2686e9875d01b58e3cb379c6896df8e76c75e0d4a7f7dace3d7b6d9ef8eb", size = 393138322 },
|
984 |
+
]
|
985 |
+
|
986 |
+
[[package]]
|
987 |
+
name = "nvidia-cuda-cupti-cu12"
|
988 |
+
version = "12.6.80"
|
989 |
+
source = { registry = "https://pypi.org/simple" }
|
990 |
+
wheels = [
|
991 |
+
{ url = "https://files.pythonhosted.org/packages/49/60/7b6497946d74bcf1de852a21824d63baad12cd417db4195fc1bfe59db953/nvidia_cuda_cupti_cu12-12.6.80-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:6768bad6cab4f19e8292125e5f1ac8aa7d1718704012a0e3272a6f61c4bce132", size = 8917980 },
|
992 |
+
{ url = "https://files.pythonhosted.org/packages/a5/24/120ee57b218d9952c379d1e026c4479c9ece9997a4fb46303611ee48f038/nvidia_cuda_cupti_cu12-12.6.80-py3-none-manylinux2014_x86_64.whl", hash = "sha256:a3eff6cdfcc6a4c35db968a06fcadb061cbc7d6dde548609a941ff8701b98b73", size = 8917972 },
|
993 |
+
]
|
994 |
+
|
995 |
+
[[package]]
|
996 |
+
name = "nvidia-cuda-nvrtc-cu12"
|
997 |
+
version = "12.6.77"
|
998 |
+
source = { registry = "https://pypi.org/simple" }
|
999 |
+
wheels = [
|
1000 |
+
{ url = "https://files.pythonhosted.org/packages/75/2e/46030320b5a80661e88039f59060d1790298b4718944a65a7f2aeda3d9e9/nvidia_cuda_nvrtc_cu12-12.6.77-py3-none-manylinux2014_x86_64.whl", hash = "sha256:35b0cc6ee3a9636d5409133e79273ce1f3fd087abb0532d2d2e8fff1fe9efc53", size = 23650380 },
|
1001 |
+
]
|
1002 |
+
|
1003 |
+
[[package]]
|
1004 |
+
name = "nvidia-cuda-runtime-cu12"
|
1005 |
+
version = "12.6.77"
|
1006 |
+
source = { registry = "https://pypi.org/simple" }
|
1007 |
+
wheels = [
|
1008 |
+
{ url = "https://files.pythonhosted.org/packages/e1/23/e717c5ac26d26cf39a27fbc076240fad2e3b817e5889d671b67f4f9f49c5/nvidia_cuda_runtime_cu12-12.6.77-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:ba3b56a4f896141e25e19ab287cd71e52a6a0f4b29d0d31609f60e3b4d5219b7", size = 897690 },
|
1009 |
+
{ url = "https://files.pythonhosted.org/packages/f0/62/65c05e161eeddbafeca24dc461f47de550d9fa8a7e04eb213e32b55cfd99/nvidia_cuda_runtime_cu12-12.6.77-py3-none-manylinux2014_x86_64.whl", hash = "sha256:a84d15d5e1da416dd4774cb42edf5e954a3e60cc945698dc1d5be02321c44dc8", size = 897678 },
|
1010 |
+
]
|
1011 |
+
|
1012 |
+
[[package]]
|
1013 |
+
name = "nvidia-cudnn-cu12"
|
1014 |
+
version = "9.5.1.17"
|
1015 |
+
source = { registry = "https://pypi.org/simple" }
|
1016 |
+
dependencies = [
|
1017 |
+
{ name = "nvidia-cublas-cu12", marker = "(platform_machine != 'aarch64' and sys_platform == 'linux') or (sys_platform != 'darwin' and sys_platform != 'linux')" },
|
1018 |
+
]
|
1019 |
+
wheels = [
|
1020 |
+
{ url = "https://files.pythonhosted.org/packages/2a/78/4535c9c7f859a64781e43c969a3a7e84c54634e319a996d43ef32ce46f83/nvidia_cudnn_cu12-9.5.1.17-py3-none-manylinux_2_28_x86_64.whl", hash = "sha256:30ac3869f6db17d170e0e556dd6cc5eee02647abc31ca856634d5a40f82c15b2", size = 570988386 },
|
1021 |
+
]
|
1022 |
+
|
1023 |
+
[[package]]
|
1024 |
+
name = "nvidia-cufft-cu12"
|
1025 |
+
version = "11.3.0.4"
|
1026 |
+
source = { registry = "https://pypi.org/simple" }
|
1027 |
+
dependencies = [
|
1028 |
+
{ name = "nvidia-nvjitlink-cu12", marker = "(platform_machine != 'aarch64' and sys_platform == 'linux') or (sys_platform != 'darwin' and sys_platform != 'linux')" },
|
1029 |
+
]
|
1030 |
+
wheels = [
|
1031 |
+
{ url = "https://files.pythonhosted.org/packages/8f/16/73727675941ab8e6ffd86ca3a4b7b47065edcca7a997920b831f8147c99d/nvidia_cufft_cu12-11.3.0.4-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:ccba62eb9cef5559abd5e0d54ceed2d9934030f51163df018532142a8ec533e5", size = 200221632 },
|
1032 |
+
{ url = "https://files.pythonhosted.org/packages/60/de/99ec247a07ea40c969d904fc14f3a356b3e2a704121675b75c366b694ee1/nvidia_cufft_cu12-11.3.0.4-py3-none-manylinux2014_x86_64.whl", hash = "sha256:768160ac89f6f7b459bee747e8d175dbf53619cfe74b2a5636264163138013ca", size = 200221622 },
|
1033 |
+
]
|
1034 |
+
|
1035 |
+
[[package]]
|
1036 |
+
name = "nvidia-cufile-cu12"
|
1037 |
+
version = "1.11.1.6"
|
1038 |
+
source = { registry = "https://pypi.org/simple" }
|
1039 |
+
wheels = [
|
1040 |
+
{ url = "https://files.pythonhosted.org/packages/b2/66/cc9876340ac68ae71b15c743ddb13f8b30d5244af344ec8322b449e35426/nvidia_cufile_cu12-1.11.1.6-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:cc23469d1c7e52ce6c1d55253273d32c565dd22068647f3aa59b3c6b005bf159", size = 1142103 },
|
1041 |
+
]
|
1042 |
+
|
1043 |
+
[[package]]
|
1044 |
+
name = "nvidia-curand-cu12"
|
1045 |
+
version = "10.3.7.77"
|
1046 |
+
source = { registry = "https://pypi.org/simple" }
|
1047 |
+
wheels = [
|
1048 |
+
{ url = "https://files.pythonhosted.org/packages/73/1b/44a01c4e70933637c93e6e1a8063d1e998b50213a6b65ac5a9169c47e98e/nvidia_curand_cu12-10.3.7.77-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:a42cd1344297f70b9e39a1e4f467a4e1c10f1da54ff7a85c12197f6c652c8bdf", size = 56279010 },
|
1049 |
+
{ url = "https://files.pythonhosted.org/packages/4a/aa/2c7ff0b5ee02eaef890c0ce7d4f74bc30901871c5e45dee1ae6d0083cd80/nvidia_curand_cu12-10.3.7.77-py3-none-manylinux2014_x86_64.whl", hash = "sha256:99f1a32f1ac2bd134897fc7a203f779303261268a65762a623bf30cc9fe79117", size = 56279000 },
|
1050 |
+
]
|
1051 |
+
|
1052 |
+
[[package]]
|
1053 |
+
name = "nvidia-cusolver-cu12"
|
1054 |
+
version = "11.7.1.2"
|
1055 |
+
source = { registry = "https://pypi.org/simple" }
|
1056 |
+
dependencies = [
|
1057 |
+
{ name = "nvidia-cublas-cu12", marker = "(platform_machine != 'aarch64' and sys_platform == 'linux') or (sys_platform != 'darwin' and sys_platform != 'linux')" },
|
1058 |
+
{ name = "nvidia-cusparse-cu12", marker = "(platform_machine != 'aarch64' and sys_platform == 'linux') or (sys_platform != 'darwin' and sys_platform != 'linux')" },
|
1059 |
+
{ name = "nvidia-nvjitlink-cu12", marker = "(platform_machine != 'aarch64' and sys_platform == 'linux') or (sys_platform != 'darwin' and sys_platform != 'linux')" },
|
1060 |
+
]
|
1061 |
+
wheels = [
|
1062 |
+
{ url = "https://files.pythonhosted.org/packages/f0/6e/c2cf12c9ff8b872e92b4a5740701e51ff17689c4d726fca91875b07f655d/nvidia_cusolver_cu12-11.7.1.2-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:e9e49843a7707e42022babb9bcfa33c29857a93b88020c4e4434656a655b698c", size = 158229790 },
|
1063 |
+
{ url = "https://files.pythonhosted.org/packages/9f/81/baba53585da791d043c10084cf9553e074548408e04ae884cfe9193bd484/nvidia_cusolver_cu12-11.7.1.2-py3-none-manylinux2014_x86_64.whl", hash = "sha256:6cf28f17f64107a0c4d7802be5ff5537b2130bfc112f25d5a30df227058ca0e6", size = 158229780 },
|
1064 |
+
]
|
1065 |
+
|
1066 |
+
[[package]]
|
1067 |
+
name = "nvidia-cusparse-cu12"
|
1068 |
+
version = "12.5.4.2"
|
1069 |
+
source = { registry = "https://pypi.org/simple" }
|
1070 |
+
dependencies = [
|
1071 |
+
{ name = "nvidia-nvjitlink-cu12", marker = "(platform_machine != 'aarch64' and sys_platform == 'linux') or (sys_platform != 'darwin' and sys_platform != 'linux')" },
|
1072 |
+
]
|
1073 |
+
wheels = [
|
1074 |
+
{ url = "https://files.pythonhosted.org/packages/06/1e/b8b7c2f4099a37b96af5c9bb158632ea9e5d9d27d7391d7eb8fc45236674/nvidia_cusparse_cu12-12.5.4.2-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:7556d9eca156e18184b94947ade0fba5bb47d69cec46bf8660fd2c71a4b48b73", size = 216561367 },
|
1075 |
+
{ url = "https://files.pythonhosted.org/packages/43/ac/64c4316ba163e8217a99680c7605f779accffc6a4bcd0c778c12948d3707/nvidia_cusparse_cu12-12.5.4.2-py3-none-manylinux2014_x86_64.whl", hash = "sha256:23749a6571191a215cb74d1cdbff4a86e7b19f1200c071b3fcf844a5bea23a2f", size = 216561357 },
|
1076 |
+
]
|
1077 |
+
|
1078 |
+
[[package]]
|
1079 |
+
name = "nvidia-cusparselt-cu12"
|
1080 |
+
version = "0.6.3"
|
1081 |
+
source = { registry = "https://pypi.org/simple" }
|
1082 |
+
wheels = [
|
1083 |
+
{ url = "https://files.pythonhosted.org/packages/3b/9a/72ef35b399b0e183bc2e8f6f558036922d453c4d8237dab26c666a04244b/nvidia_cusparselt_cu12-0.6.3-py3-none-manylinux2014_x86_64.whl", hash = "sha256:e5c8a26c36445dd2e6812f1177978a24e2d37cacce7e090f297a688d1ec44f46", size = 156785796 },
|
1084 |
+
]
|
1085 |
+
|
1086 |
+
[[package]]
|
1087 |
+
name = "nvidia-nccl-cu12"
|
1088 |
+
version = "2.26.2"
|
1089 |
+
source = { registry = "https://pypi.org/simple" }
|
1090 |
+
wheels = [
|
1091 |
+
{ url = "https://files.pythonhosted.org/packages/67/ca/f42388aed0fddd64ade7493dbba36e1f534d4e6fdbdd355c6a90030ae028/nvidia_nccl_cu12-2.26.2-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:694cf3879a206553cc9d7dbda76b13efaf610fdb70a50cba303de1b0d1530ac6", size = 201319755 },
|
1092 |
+
]
|
1093 |
+
|
1094 |
+
[[package]]
|
1095 |
+
name = "nvidia-nvjitlink-cu12"
|
1096 |
+
version = "12.6.85"
|
1097 |
+
source = { registry = "https://pypi.org/simple" }
|
1098 |
+
wheels = [
|
1099 |
+
{ url = "https://files.pythonhosted.org/packages/9d/d7/c5383e47c7e9bf1c99d5bd2a8c935af2b6d705ad831a7ec5c97db4d82f4f/nvidia_nvjitlink_cu12-12.6.85-py3-none-manylinux2010_x86_64.manylinux_2_12_x86_64.whl", hash = "sha256:eedc36df9e88b682efe4309aa16b5b4e78c2407eac59e8c10a6a47535164369a", size = 19744971 },
|
1100 |
+
]
|
1101 |
+
|
1102 |
+
[[package]]
|
1103 |
+
name = "nvidia-nvtx-cu12"
|
1104 |
+
version = "12.6.77"
|
1105 |
+
source = { registry = "https://pypi.org/simple" }
|
1106 |
+
wheels = [
|
1107 |
+
{ url = "https://files.pythonhosted.org/packages/56/9a/fff8376f8e3d084cd1530e1ef7b879bb7d6d265620c95c1b322725c694f4/nvidia_nvtx_cu12-12.6.77-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:b90bed3df379fa79afbd21be8e04a0314336b8ae16768b58f2d34cb1d04cd7d2", size = 89276 },
|
1108 |
+
{ url = "https://files.pythonhosted.org/packages/9e/4e/0d0c945463719429b7bd21dece907ad0bde437a2ff12b9b12fee94722ab0/nvidia_nvtx_cu12-12.6.77-py3-none-manylinux2014_x86_64.whl", hash = "sha256:6574241a3ec5fdc9334353ab8c479fe75841dbe8f4532a8fc97ce63503330ba1", size = 89265 },
|
1109 |
+
]
|
1110 |
+
|
1111 |
[[package]]
|
1112 |
name = "openai"
|
1113 |
version = "1.76.0"
|
|
|
1127 |
{ url = "https://files.pythonhosted.org/packages/59/aa/84e02ab500ca871eb8f62784426963a1c7c17a72fea3c7f268af4bbaafa5/openai-1.76.0-py3-none-any.whl", hash = "sha256:a712b50e78cf78e6d7b2a8f69c4978243517c2c36999756673e07a14ce37dc0a", size = 661201 },
|
1128 |
]
|
1129 |
|
1130 |
+
[[package]]
|
1131 |
+
name = "opencv-python"
|
1132 |
+
version = "4.11.0.86"
|
1133 |
+
source = { registry = "https://pypi.org/simple" }
|
1134 |
+
dependencies = [
|
1135 |
+
{ name = "numpy" },
|
1136 |
+
]
|
1137 |
+
sdist = { url = "https://files.pythonhosted.org/packages/17/06/68c27a523103dad5837dc5b87e71285280c4f098c60e4fe8a8db6486ab09/opencv-python-4.11.0.86.tar.gz", hash = "sha256:03d60ccae62304860d232272e4a4fda93c39d595780cb40b161b310244b736a4", size = 95171956 }
|
1138 |
+
wheels = [
|
1139 |
+
{ 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 },
|
1140 |
+
{ 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 },
|
1141 |
+
{ 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 },
|
1142 |
+
{ 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 },
|
1143 |
+
{ url = "https://files.pythonhosted.org/packages/fb/d7/1d5941a9dde095468b288d989ff6539dd69cd429dbf1b9e839013d21b6f0/opencv_python-4.11.0.86-cp37-abi3-win32.whl", hash = "sha256:810549cb2a4aedaa84ad9a1c92fbfdfc14090e2749cedf2c1589ad8359aa169b", size = 29384337 },
|
1144 |
+
{ 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 },
|
1145 |
+
]
|
1146 |
+
|
1147 |
[[package]]
|
1148 |
name = "orjson"
|
1149 |
version = "3.10.16"
|
|
|
1650 |
{ url = "https://files.pythonhosted.org/packages/4d/c0/1108ad9f01567f66b3154063605b350b69c3c9366732e09e45f9fd0d1deb/safehttpx-0.1.6-py3-none-any.whl", hash = "sha256:407cff0b410b071623087c63dd2080c3b44dc076888d8c5823c00d1e58cb381c", size = 8692 },
|
1651 |
]
|
1652 |
|
1653 |
+
[[package]]
|
1654 |
+
name = "safetensors"
|
1655 |
+
version = "0.5.3"
|
1656 |
+
source = { registry = "https://pypi.org/simple" }
|
1657 |
+
sdist = { url = "https://files.pythonhosted.org/packages/71/7e/2d5d6ee7b40c0682315367ec7475693d110f512922d582fef1bd4a63adc3/safetensors-0.5.3.tar.gz", hash = "sha256:b6b0d6ecacec39a4fdd99cc19f4576f5219ce858e6fd8dbe7609df0b8dc56965", size = 67210 }
|
1658 |
+
wheels = [
|
1659 |
+
{ url = "https://files.pythonhosted.org/packages/18/ae/88f6c49dbd0cc4da0e08610019a3c78a7d390879a919411a410a1876d03a/safetensors-0.5.3-cp38-abi3-macosx_10_12_x86_64.whl", hash = "sha256:bd20eb133db8ed15b40110b7c00c6df51655a2998132193de2f75f72d99c7073", size = 436917 },
|
1660 |
+
{ url = "https://files.pythonhosted.org/packages/b8/3b/11f1b4a2f5d2ab7da34ecc062b0bc301f2be024d110a6466726bec8c055c/safetensors-0.5.3-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:21d01c14ff6c415c485616b8b0bf961c46b3b343ca59110d38d744e577f9cce7", size = 418419 },
|
1661 |
+
{ url = "https://files.pythonhosted.org/packages/5d/9a/add3e6fef267658075c5a41573c26d42d80c935cdc992384dfae435feaef/safetensors-0.5.3-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:11bce6164887cd491ca75c2326a113ba934be596e22b28b1742ce27b1d076467", size = 459493 },
|
1662 |
+
{ url = "https://files.pythonhosted.org/packages/df/5c/bf2cae92222513cc23b3ff85c4a1bb2811a2c3583ac0f8e8d502751de934/safetensors-0.5.3-cp38-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4a243be3590bc3301c821da7a18d87224ef35cbd3e5f5727e4e0728b8172411e", size = 472400 },
|
1663 |
+
{ url = "https://files.pythonhosted.org/packages/58/11/7456afb740bd45782d0f4c8e8e1bb9e572f1bf82899fb6ace58af47b4282/safetensors-0.5.3-cp38-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8bd84b12b1670a6f8e50f01e28156422a2bc07fb16fc4e98bded13039d688a0d", size = 522891 },
|
1664 |
+
{ url = "https://files.pythonhosted.org/packages/57/3d/fe73a9d2ace487e7285f6e157afee2383bd1ddb911b7cb44a55cf812eae3/safetensors-0.5.3-cp38-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:391ac8cab7c829452175f871fcaf414aa1e292b5448bd02620f675a7f3e7abb9", size = 537694 },
|
1665 |
+
{ url = "https://files.pythonhosted.org/packages/a6/f8/dae3421624fcc87a89d42e1898a798bc7ff72c61f38973a65d60df8f124c/safetensors-0.5.3-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cead1fa41fc54b1e61089fa57452e8834f798cb1dc7a09ba3524f1eb08e0317a", size = 471642 },
|
1666 |
+
{ url = "https://files.pythonhosted.org/packages/ce/20/1fbe16f9b815f6c5a672f5b760951e20e17e43f67f231428f871909a37f6/safetensors-0.5.3-cp38-abi3-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1077f3e94182d72618357b04b5ced540ceb71c8a813d3319f1aba448e68a770d", size = 502241 },
|
1667 |
+
{ url = "https://files.pythonhosted.org/packages/5f/18/8e108846b506487aa4629fe4116b27db65c3dde922de2c8e0cc1133f3f29/safetensors-0.5.3-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:799021e78287bac619c7b3f3606730a22da4cda27759ddf55d37c8db7511c74b", size = 638001 },
|
1668 |
+
{ url = "https://files.pythonhosted.org/packages/82/5a/c116111d8291af6c8c8a8b40628fe833b9db97d8141c2a82359d14d9e078/safetensors-0.5.3-cp38-abi3-musllinux_1_2_armv7l.whl", hash = "sha256:df26da01aaac504334644e1b7642fa000bfec820e7cef83aeac4e355e03195ff", size = 734013 },
|
1669 |
+
{ url = "https://files.pythonhosted.org/packages/7d/ff/41fcc4d3b7de837963622e8610d998710705bbde9a8a17221d85e5d0baad/safetensors-0.5.3-cp38-abi3-musllinux_1_2_i686.whl", hash = "sha256:32c3ef2d7af8b9f52ff685ed0bc43913cdcde135089ae322ee576de93eae5135", size = 670687 },
|
1670 |
+
{ url = "https://files.pythonhosted.org/packages/40/ad/2b113098e69c985a3d8fbda4b902778eae4a35b7d5188859b4a63d30c161/safetensors-0.5.3-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:37f1521be045e56fc2b54c606d4455573e717b2d887c579ee1dbba5f868ece04", size = 643147 },
|
1671 |
+
{ url = "https://files.pythonhosted.org/packages/0a/0c/95aeb51d4246bd9a3242d3d8349c1112b4ee7611a4b40f0c5c93b05f001d/safetensors-0.5.3-cp38-abi3-win32.whl", hash = "sha256:cfc0ec0846dcf6763b0ed3d1846ff36008c6e7290683b61616c4b040f6a54ace", size = 296677 },
|
1672 |
+
{ url = "https://files.pythonhosted.org/packages/69/e2/b011c38e5394c4c18fb5500778a55ec43ad6106126e74723ffaee246f56e/safetensors-0.5.3-cp38-abi3-win_amd64.whl", hash = "sha256:836cbbc320b47e80acd40e44c8682db0e8ad7123209f69b093def21ec7cafd11", size = 308878 },
|
1673 |
+
]
|
1674 |
+
|
1675 |
[[package]]
|
1676 |
name = "semantic-version"
|
1677 |
version = "2.10.0"
|
|
|
1681 |
{ url = "https://files.pythonhosted.org/packages/6a/23/8146aad7d88f4fcb3a6218f41a60f6c2d4e3a72de72da1825dc7c8f7877c/semantic_version-2.10.0-py2.py3-none-any.whl", hash = "sha256:de78a3b8e0feda74cabc54aab2da702113e33ac9d9eb9d2389bcf1f58b7d9177", size = 15552 },
|
1682 |
]
|
1683 |
|
1684 |
+
[[package]]
|
1685 |
+
name = "setuptools"
|
1686 |
+
version = "80.0.0"
|
1687 |
+
source = { registry = "https://pypi.org/simple" }
|
1688 |
+
sdist = { url = "https://files.pythonhosted.org/packages/44/80/97e25f0f1e4067677806084b7382a6ff9979f3d15119375c475c288db9d7/setuptools-80.0.0.tar.gz", hash = "sha256:c40a5b3729d58dd749c0f08f1a07d134fb8a0a3d7f87dc33e7c5e1f762138650", size = 1354221 }
|
1689 |
+
wheels = [
|
1690 |
+
{ url = "https://files.pythonhosted.org/packages/23/63/5517029d6696ddf2bd378d46f63f479be001c31b462303170a1da57650cb/setuptools-80.0.0-py3-none-any.whl", hash = "sha256:a38f898dcd6e5380f4da4381a87ec90bd0a7eec23d204a5552e80ee3cab6bd27", size = 1240907 },
|
1691 |
+
]
|
1692 |
+
|
1693 |
[[package]]
|
1694 |
name = "shellingham"
|
1695 |
version = "1.5.4"
|
|
|
1762 |
{ url = "https://files.pythonhosted.org/packages/8b/0c/9d30a4ebeb6db2b25a841afbb80f6ef9a854fc3b41be131d249a977b4959/starlette-0.46.2-py3-none-any.whl", hash = "sha256:595633ce89f8ffa71a015caed34a5b2dc1c0cdb3f0f1fbd1e69339cf2abeec35", size = 72037 },
|
1763 |
]
|
1764 |
|
1765 |
+
[[package]]
|
1766 |
+
name = "sympy"
|
1767 |
+
version = "1.14.0"
|
1768 |
+
source = { registry = "https://pypi.org/simple" }
|
1769 |
+
dependencies = [
|
1770 |
+
{ name = "mpmath" },
|
1771 |
+
]
|
1772 |
+
sdist = { url = "https://files.pythonhosted.org/packages/83/d3/803453b36afefb7c2bb238361cd4ae6125a569b4db67cd9e79846ba2d68c/sympy-1.14.0.tar.gz", hash = "sha256:d3d3fe8df1e5a0b42f0e7bdf50541697dbe7d23746e894990c030e2b05e72517", size = 7793921 }
|
1773 |
+
wheels = [
|
1774 |
+
{ url = "https://files.pythonhosted.org/packages/a2/09/77d55d46fd61b4a135c444fc97158ef34a095e5681d0a6c10b75bf356191/sympy-1.14.0-py3-none-any.whl", hash = "sha256:e091cc3e99d2141a0ba2847328f5479b05d94a6635cb96148ccb3f34671bd8f5", size = 6299353 },
|
1775 |
+
]
|
1776 |
+
|
1777 |
[[package]]
|
1778 |
name = "tiktoken"
|
1779 |
version = "0.9.0"
|
|
|
1798 |
{ url = "https://files.pythonhosted.org/packages/de/a8/8f499c179ec900783ffe133e9aab10044481679bb9aad78436d239eee716/tiktoken-0.9.0-cp313-cp313-win_amd64.whl", hash = "sha256:5ea0edb6f83dc56d794723286215918c1cde03712cbbafa0348b33448faf5b95", size = 894669 },
|
1799 |
]
|
1800 |
|
1801 |
+
[[package]]
|
1802 |
+
name = "timm"
|
1803 |
+
version = "1.0.15"
|
1804 |
+
source = { registry = "https://pypi.org/simple" }
|
1805 |
+
dependencies = [
|
1806 |
+
{ name = "huggingface-hub" },
|
1807 |
+
{ name = "pyyaml" },
|
1808 |
+
{ name = "safetensors" },
|
1809 |
+
{ name = "torch" },
|
1810 |
+
{ name = "torchvision" },
|
1811 |
+
]
|
1812 |
+
sdist = { url = "https://files.pythonhosted.org/packages/bc/0c/66b0f9b4a4cb9ffdac7b52b17b37c7d3c4f75623b469e388b0c6d89b4e88/timm-1.0.15.tar.gz", hash = "sha256:756a3bc30c96565f056e608a9b559daed904617eaadb6be536f96874879b1055", size = 2230258 }
|
1813 |
+
wheels = [
|
1814 |
+
{ url = "https://files.pythonhosted.org/packages/6c/d0/179abca8b984b3deefd996f362b612c39da73b60f685921e6cd58b6125b4/timm-1.0.15-py3-none-any.whl", hash = "sha256:5a3dc460c24e322ecc7fd1f3e3eb112423ddee320cb059cc1956fbc9731748ef", size = 2361373 },
|
1815 |
+
]
|
1816 |
+
|
1817 |
[[package]]
|
1818 |
name = "tokenizers"
|
1819 |
version = "0.21.1"
|
|
|
1848 |
{ url = "https://files.pythonhosted.org/packages/f9/b6/a447b5e4ec71e13871be01ba81f5dfc9d0af7e473da256ff46bc0e24026f/tomlkit-0.13.2-py3-none-any.whl", hash = "sha256:7a974427f6e119197f670fbbbeae7bef749a6c14e793db934baefc1b5f03efde", size = 37955 },
|
1849 |
]
|
1850 |
|
1851 |
+
[[package]]
|
1852 |
+
name = "torch"
|
1853 |
+
version = "2.7.0"
|
1854 |
+
source = { registry = "https://pypi.org/simple" }
|
1855 |
+
dependencies = [
|
1856 |
+
{ name = "filelock" },
|
1857 |
+
{ name = "fsspec" },
|
1858 |
+
{ name = "jinja2" },
|
1859 |
+
{ name = "networkx" },
|
1860 |
+
{ name = "nvidia-cublas-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" },
|
1861 |
+
{ name = "nvidia-cuda-cupti-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" },
|
1862 |
+
{ name = "nvidia-cuda-nvrtc-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" },
|
1863 |
+
{ name = "nvidia-cuda-runtime-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" },
|
1864 |
+
{ name = "nvidia-cudnn-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" },
|
1865 |
+
{ name = "nvidia-cufft-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" },
|
1866 |
+
{ name = "nvidia-cufile-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" },
|
1867 |
+
{ name = "nvidia-curand-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" },
|
1868 |
+
{ name = "nvidia-cusolver-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" },
|
1869 |
+
{ name = "nvidia-cusparse-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" },
|
1870 |
+
{ name = "nvidia-cusparselt-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" },
|
1871 |
+
{ name = "nvidia-nccl-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" },
|
1872 |
+
{ name = "nvidia-nvjitlink-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" },
|
1873 |
+
{ name = "nvidia-nvtx-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" },
|
1874 |
+
{ name = "setuptools" },
|
1875 |
+
{ name = "sympy" },
|
1876 |
+
{ name = "triton", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" },
|
1877 |
+
{ name = "typing-extensions" },
|
1878 |
+
]
|
1879 |
+
wheels = [
|
1880 |
+
{ url = "https://files.pythonhosted.org/packages/aa/5e/ac759f4c0ab7c01feffa777bd68b43d2ac61560a9770eeac074b450f81d4/torch-2.7.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:36a6368c7ace41ad1c0f69f18056020b6a5ca47bedaca9a2f3b578f5a104c26c", size = 99013250 },
|
1881 |
+
{ url = "https://files.pythonhosted.org/packages/9c/58/2d245b6f1ef61cf11dfc4aceeaacbb40fea706ccebac3f863890c720ab73/torch-2.7.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:15aab3e31c16feb12ae0a88dba3434a458874636f360c567caa6a91f6bfba481", size = 865042157 },
|
1882 |
+
{ url = "https://files.pythonhosted.org/packages/44/80/b353c024e6b624cd9ce1d66dcb9d24e0294680f95b369f19280e241a0159/torch-2.7.0-cp312-cp312-win_amd64.whl", hash = "sha256:f56d4b2510934e072bab3ab8987e00e60e1262fb238176168f5e0c43a1320c6d", size = 212482262 },
|
1883 |
+
{ url = "https://files.pythonhosted.org/packages/ee/8d/b2939e5254be932db1a34b2bd099070c509e8887e0c5a90c498a917e4032/torch-2.7.0-cp312-none-macosx_11_0_arm64.whl", hash = "sha256:30b7688a87239a7de83f269333651d8e582afffce6f591fff08c046f7787296e", size = 68574294 },
|
1884 |
+
{ url = "https://files.pythonhosted.org/packages/14/24/720ea9a66c29151b315ea6ba6f404650834af57a26b2a04af23ec246b2d5/torch-2.7.0-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:868ccdc11798535b5727509480cd1d86d74220cfdc42842c4617338c1109a205", size = 99015553 },
|
1885 |
+
{ url = "https://files.pythonhosted.org/packages/4b/27/285a8cf12bd7cd71f9f211a968516b07dcffed3ef0be585c6e823675ab91/torch-2.7.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:9b52347118116cf3dff2ab5a3c3dd97c719eb924ac658ca2a7335652076df708", size = 865046389 },
|
1886 |
+
{ url = "https://files.pythonhosted.org/packages/74/c8/2ab2b6eadc45554af8768ae99668c5a8a8552e2012c7238ded7e9e4395e1/torch-2.7.0-cp313-cp313-win_amd64.whl", hash = "sha256:434cf3b378340efc87c758f250e884f34460624c0523fe5c9b518d205c91dd1b", size = 212490304 },
|
1887 |
+
{ url = "https://files.pythonhosted.org/packages/28/fd/74ba6fde80e2b9eef4237fe668ffae302c76f0e4221759949a632ca13afa/torch-2.7.0-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:edad98dddd82220465b106506bb91ee5ce32bd075cddbcf2b443dfaa2cbd83bf", size = 68856166 },
|
1888 |
+
{ url = "https://files.pythonhosted.org/packages/cb/b4/8df3f9fe6bdf59e56a0e538592c308d18638eb5f5dc4b08d02abb173c9f0/torch-2.7.0-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:2a885fc25afefb6e6eb18a7d1e8bfa01cc153e92271d980a49243b250d5ab6d9", size = 99091348 },
|
1889 |
+
{ url = "https://files.pythonhosted.org/packages/9d/f5/0bd30e9da04c3036614aa1b935a9f7e505a9e4f1f731b15e165faf8a4c74/torch-2.7.0-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:176300ff5bc11a5f5b0784e40bde9e10a35c4ae9609beed96b4aeb46a27f5fae", size = 865104023 },
|
1890 |
+
{ url = "https://files.pythonhosted.org/packages/d1/b7/2235d0c3012c596df1c8d39a3f4afc1ee1b6e318d469eda4c8bb68566448/torch-2.7.0-cp313-cp313t-win_amd64.whl", hash = "sha256:d0ca446a93f474985d81dc866fcc8dccefb9460a29a456f79d99c29a78a66993", size = 212750916 },
|
1891 |
+
{ url = "https://files.pythonhosted.org/packages/90/48/7e6477cf40d48cc0a61fa0d41ee9582b9a316b12772fcac17bc1a40178e7/torch-2.7.0-cp313-none-macosx_11_0_arm64.whl", hash = "sha256:27f5007bdf45f7bb7af7f11d1828d5c2487e030690afb3d89a651fd7036a390e", size = 68575074 },
|
1892 |
+
]
|
1893 |
+
|
1894 |
+
[[package]]
|
1895 |
+
name = "torchvision"
|
1896 |
+
version = "0.22.0"
|
1897 |
+
source = { registry = "https://pypi.org/simple" }
|
1898 |
+
dependencies = [
|
1899 |
+
{ name = "numpy" },
|
1900 |
+
{ name = "pillow" },
|
1901 |
+
{ name = "torch" },
|
1902 |
+
]
|
1903 |
+
wheels = [
|
1904 |
+
{ url = "https://files.pythonhosted.org/packages/cb/ea/887d1d61cf4431a46280972de665f350af1898ce5006cd046326e5d0a2f2/torchvision-0.22.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:31c3165418fe21c3d81fe3459e51077c2f948801b8933ed18169f54652796a0f", size = 1947826 },
|
1905 |
+
{ url = "https://files.pythonhosted.org/packages/72/ef/21f8b6122e13ae045b8e49658029c695fd774cd21083b3fa5c3f9c5d3e35/torchvision-0.22.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:8f116bc82e0c076e70ba7776e611ed392b9666aa443662e687808b08993d26af", size = 2514571 },
|
1906 |
+
{ url = "https://files.pythonhosted.org/packages/7c/48/5f7617f6c60d135f86277c53f9d5682dfa4e66f4697f505f1530e8b69fb1/torchvision-0.22.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:ce4dc334ebd508de2c534817c9388e928bc2500cf981906ae8d6e2ca3bf4727a", size = 7446522 },
|
1907 |
+
{ url = "https://files.pythonhosted.org/packages/99/94/a015e93955f5d3a68689cc7c385a3cfcd2d62b84655d18b61f32fb04eb67/torchvision-0.22.0-cp312-cp312-win_amd64.whl", hash = "sha256:24b8c9255c209ca419cc7174906da2791c8b557b75c23496663ec7d73b55bebf", size = 1716664 },
|
1908 |
+
{ url = "https://files.pythonhosted.org/packages/e1/2a/9b34685599dcb341d12fc2730055155623db7a619d2415a8d31f17050952/torchvision-0.22.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:ece17995857dd328485c9c027c0b20ffc52db232e30c84ff6c95ab77201112c5", size = 1947823 },
|
1909 |
+
{ url = "https://files.pythonhosted.org/packages/77/77/88f64879483d66daf84f1d1c4d5c31ebb08e640411139042a258d5f7dbfe/torchvision-0.22.0-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:471c6dd75bb984c6ebe4f60322894a290bf3d4b195e769d80754f3689cd7f238", size = 2471592 },
|
1910 |
+
{ url = "https://files.pythonhosted.org/packages/f7/82/2f813eaae7c1fae1f9d9e7829578f5a91f39ef48d6c1c588a8900533dd3d/torchvision-0.22.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:2b839ac0610a38f56bef115ee5b9eaca5f9c2da3c3569a68cc62dbcc179c157f", size = 7446333 },
|
1911 |
+
{ url = "https://files.pythonhosted.org/packages/58/19/ca7a4f8907a56351dfe6ae0a708f4e6b3569b5c61d282e3e7f61cf42a4ce/torchvision-0.22.0-cp313-cp313-win_amd64.whl", hash = "sha256:4ada1c08b2f761443cd65b7c7b4aec9e2fc28f75b0d4e1b1ebc9d3953ebccc4d", size = 1716693 },
|
1912 |
+
{ url = "https://files.pythonhosted.org/packages/6f/a7/f43e9c8d13118b4ffbaebea664c9338ab20fa115a908125afd2238ff16e7/torchvision-0.22.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:cdc96daa4658b47ce9384154c86ed1e70cba9d972a19f5de6e33f8f94a626790", size = 2137621 },
|
1913 |
+
{ url = "https://files.pythonhosted.org/packages/6a/9a/2b59f5758ba7e3f23bc84e16947493bbce97392ec6d18efba7bdf0a3b10e/torchvision-0.22.0-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:753d3c84eeadd5979a33b3b73a25ecd0aa4af44d6b45ed2c70d44f5e0ac68312", size = 2476555 },
|
1914 |
+
{ url = "https://files.pythonhosted.org/packages/7d/40/a7bc2ab9b1e56d10a7fd9ae83191bb425fa308caa23d148f1c568006e02c/torchvision-0.22.0-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:b30e3ed29e4a61f7499bca50f57d8ebd23dfc52b14608efa17a534a55ee59a03", size = 7617924 },
|
1915 |
+
{ url = "https://files.pythonhosted.org/packages/c1/7b/30d423bdb2546250d719d7821aaf9058cc093d165565b245b159c788a9dd/torchvision-0.22.0-cp313-cp313t-win_amd64.whl", hash = "sha256:e5d680162694fac4c8a374954e261ddfb4eb0ce103287b0f693e4e9c579ef957", size = 1638621 },
|
1916 |
+
]
|
1917 |
+
|
1918 |
[[package]]
|
1919 |
name = "tqdm"
|
1920 |
version = "4.67.1"
|
|
|
1927 |
{ url = "https://files.pythonhosted.org/packages/d0/30/dc54f88dd4a2b5dc8a0279bdd7270e735851848b762aeb1c1184ed1f6b14/tqdm-4.67.1-py3-none-any.whl", hash = "sha256:26445eca388f82e72884e0d580d5464cd801a3ea01e63e5601bdff9ba6a48de2", size = 78540 },
|
1928 |
]
|
1929 |
|
1930 |
+
[[package]]
|
1931 |
+
name = "transformers"
|
1932 |
+
version = "4.51.3"
|
1933 |
+
source = { registry = "https://pypi.org/simple" }
|
1934 |
+
dependencies = [
|
1935 |
+
{ name = "filelock" },
|
1936 |
+
{ name = "huggingface-hub" },
|
1937 |
+
{ name = "numpy" },
|
1938 |
+
{ name = "packaging" },
|
1939 |
+
{ name = "pyyaml" },
|
1940 |
+
{ name = "regex" },
|
1941 |
+
{ name = "requests" },
|
1942 |
+
{ name = "safetensors" },
|
1943 |
+
{ name = "tokenizers" },
|
1944 |
+
{ name = "tqdm" },
|
1945 |
+
]
|
1946 |
+
sdist = { url = "https://files.pythonhosted.org/packages/f1/11/7414d5bc07690002ce4d7553602107bf969af85144bbd02830f9fb471236/transformers-4.51.3.tar.gz", hash = "sha256:e292fcab3990c6defe6328f0f7d2004283ca81a7a07b2de9a46d67fd81ea1409", size = 8941266 }
|
1947 |
+
wheels = [
|
1948 |
+
{ url = "https://files.pythonhosted.org/packages/a9/b6/5257d04ae327b44db31f15cce39e6020cc986333c715660b1315a9724d82/transformers-4.51.3-py3-none-any.whl", hash = "sha256:fd3279633ceb2b777013234bbf0b4f5c2d23c4626b05497691f00cfda55e8a83", size = 10383940 },
|
1949 |
+
]
|
1950 |
+
|
1951 |
+
[[package]]
|
1952 |
+
name = "triton"
|
1953 |
+
version = "3.3.0"
|
1954 |
+
source = { registry = "https://pypi.org/simple" }
|
1955 |
+
dependencies = [
|
1956 |
+
{ name = "setuptools", marker = "(platform_machine != 'aarch64' and sys_platform == 'linux') or (sys_platform != 'darwin' and sys_platform != 'linux')" },
|
1957 |
+
]
|
1958 |
+
wheels = [
|
1959 |
+
{ url = "https://files.pythonhosted.org/packages/11/53/ce18470914ab6cfbec9384ee565d23c4d1c55f0548160b1c7b33000b11fd/triton-3.3.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b68c778f6c4218403a6bd01be7484f6dc9e20fe2083d22dd8aef33e3b87a10a3", size = 156504509 },
|
1960 |
+
{ url = "https://files.pythonhosted.org/packages/7d/74/4bf2702b65e93accaa20397b74da46fb7a0356452c1bb94dbabaf0582930/triton-3.3.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:47bc87ad66fa4ef17968299acacecaab71ce40a238890acc6ad197c3abe2b8f1", size = 156516468 },
|
1961 |
+
{ url = "https://files.pythonhosted.org/packages/0a/93/f28a696fa750b9b608baa236f8225dd3290e5aff27433b06143adc025961/triton-3.3.0-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ce4700fc14032af1e049005ae94ba908e71cd6c2df682239aed08e49bc71b742", size = 156580729 },
|
1962 |
+
]
|
1963 |
+
|
1964 |
[[package]]
|
1965 |
name = "typer"
|
1966 |
version = "0.15.2"
|
|
|
2133 |
{ url = "https://files.pythonhosted.org/packages/ea/1f/70c57b3d7278e94ed22d85e09685d3f0a38ebdd8c5c73b65ba4c0d0fe002/yarl-1.20.0-py3-none-any.whl", hash = "sha256:5d0fe6af927a47a230f31e6004621fd0959eaa915fc62acfafa67ff7229a3124", size = 46124 },
|
2134 |
]
|
2135 |
|
2136 |
+
[[package]]
|
2137 |
+
name = "yt-dlp"
|
2138 |
+
version = "2025.3.31"
|
2139 |
+
source = { registry = "https://pypi.org/simple" }
|
2140 |
+
sdist = { url = "https://files.pythonhosted.org/packages/a2/11/333d16f88b1515d4c601e1dfbf1028e6798f0b2a8ff1dc5aaa7b797aa9e8/yt_dlp-2025.3.31.tar.gz", hash = "sha256:1bfe0e660d1a70a09e27b2d58f92e30b1e2e362cc487829f2f824346ae49fb91", size = 2967466 }
|
2141 |
+
wheels = [
|
2142 |
+
{ url = "https://files.pythonhosted.org/packages/a8/bf/7b0affb8f163376309696cfd1c677818fa0969fbb9d88225087208799afe/yt_dlp-2025.3.31-py3-none-any.whl", hash = "sha256:8ecb3aa218a3bebe431119f513a8972b9b9d992edf67168c00ab92329a03baec", size = 3226021 },
|
2143 |
+
]
|
2144 |
+
|
2145 |
[[package]]
|
2146 |
name = "zipp"
|
2147 |
version = "3.21.0"
|