Humanlearning commited on
Commit
d7b323e
·
1 Parent(s): 0989d5f

updated code agent

Browse files
README.md CHANGED
@@ -12,4 +12,10 @@ hf_oauth: true
12
  hf_oauth_expiration_minutes: 480
13
  ---
14
 
15
- Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
 
 
 
 
 
 
12
  hf_oauth_expiration_minutes: 480
13
  ---
14
 
15
+ Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
16
+
17
+ To generate a `requirements.txt` file compatible with **Python 3.10** for deployment on a Hugging Face Space, run the following command:
18
+
19
+ ```bash
20
+ uv pip compile pyproject.toml --python 3.10 -o requirements.txt
21
+ ```
__pycache__/code_agent.cpython-313.pyc CHANGED
Binary files a/__pycache__/code_agent.cpython-313.pyc and b/__pycache__/code_agent.cpython-313.pyc differ
 
__pycache__/langraph_agent.cpython-313.pyc CHANGED
Binary files a/__pycache__/langraph_agent.cpython-313.pyc and b/__pycache__/langraph_agent.cpython-313.pyc differ
 
code_agent.py CHANGED
@@ -33,6 +33,8 @@ import traceback
33
  from dataclasses import dataclass, replace
34
  from typing import Any, Optional
35
  import re # For stripping markdown fences
 
 
36
 
37
  from langchain_groq import ChatGroq
38
  from langchain_core.messages import AIMessage, HumanMessage, SystemMessage
@@ -50,6 +52,16 @@ TIMEOUT_SEC = int(os.getenv("LANGGRAPH_TIMEOUT_SEC", "30"))
50
  # 1. Code‑execution tool (whitelisted built‑ins)
51
  ###############################################################################
52
 
 
 
 
 
 
 
 
 
 
 
53
  ALLOWED_BUILTINS: dict[str, Any] = {
54
  "print": print,
55
  "range": range,
@@ -58,13 +70,20 @@ ALLOWED_BUILTINS: dict[str, Any] = {
58
  "sum": sum,
59
  "min": min,
60
  "max": max,
 
 
61
  }
62
 
63
  @tool
64
  def python_exec(code: str) -> str:
65
  """Execute **Python** inside a restricted namespace and capture STDOUT."""
66
  code = textwrap.dedent(code)
67
- exec_globals = {"__builtins__": ALLOWED_BUILTINS}
 
 
 
 
 
68
  local_ns: dict[str, Any] = {}
69
  stdout = io.StringIO()
70
  try:
 
33
  from dataclasses import dataclass, replace
34
  from typing import Any, Optional
35
  import re # For stripping markdown fences
36
+ import cv2 # OpenCV – image manipulation
37
+ import pandas as pd # Pandas – DataFrame / CSV utilities
38
 
39
  from langchain_groq import ChatGroq
40
  from langchain_core.messages import AIMessage, HumanMessage, SystemMessage
 
52
  # 1. Code‑execution tool (whitelisted built‑ins)
53
  ###############################################################################
54
 
55
+ # ---------------------------------------------------------------------------
56
+ # Limited import helper – only expose specific third-party libs to user code
57
+ # ---------------------------------------------------------------------------
58
+
59
+ def _safe_import(name, globals=None, locals=None, fromlist=(), level=0):
60
+ """Whitelisted __import__ permitting just `cv2` and `pandas`."""
61
+ if name in {"cv2", "pandas"}:
62
+ return __import__(name, globals, locals, fromlist, level)
63
+ raise ImportError(f"Import of module '{name}' is disabled in this sandbox.")
64
+
65
  ALLOWED_BUILTINS: dict[str, Any] = {
66
  "print": print,
67
  "range": range,
 
70
  "sum": sum,
71
  "min": min,
72
  "max": max,
73
+ "open": open, # Needed by pandas for file I/O
74
+ "__import__": _safe_import, # Allow limited, safe imports
75
  }
76
 
77
  @tool
78
  def python_exec(code: str) -> str:
79
  """Execute **Python** inside a restricted namespace and capture STDOUT."""
80
  code = textwrap.dedent(code)
81
+ exec_globals = {
82
+ "__builtins__": ALLOWED_BUILTINS,
83
+ "cv2": cv2,
84
+ "pd": pd, # Common alias
85
+ "pandas": pd, # Full name
86
+ }
87
  local_ns: dict[str, Any] = {}
88
  stdout = io.StringIO()
89
  try:
pyproject.toml CHANGED
@@ -26,6 +26,8 @@ dependencies = [
26
  "llama-index-readers-wikipedia>=0.3.0",
27
  "llama-index-tools-duckduckgo>=0.3.0",
28
  "llama-index-tools-tavily-research>=0.3.0",
 
 
29
  "rich>=14.0.0",
30
  "sentence-transformers>=4.1.0",
31
  "supabase>=2.15.3",
 
26
  "llama-index-readers-wikipedia>=0.3.0",
27
  "llama-index-tools-duckduckgo>=0.3.0",
28
  "llama-index-tools-tavily-research>=0.3.0",
29
+ "opencv-python>=4.11.0.86",
30
+ "pandas>=2.2.3",
31
  "rich>=14.0.0",
32
  "sentence-transformers>=4.1.0",
33
  "supabase>=2.15.3",
requirements.txt CHANGED
@@ -1,5 +1,7 @@
1
  # This file was autogenerated by uv via the following command:
2
  # uv pip compile pyproject.toml --python 3.10 -o requirements.txt
 
 
3
  aiohappyeyeballs==2.6.1
4
  # via aiohttp
5
  aiohttp==3.12.9
@@ -15,9 +17,11 @@ annotated-types==0.7.0
15
  # via pydantic
16
  anyio==4.9.0
17
  # via
 
18
  # groq
19
  # httpx
20
  # openai
 
21
  arxiv==2.2.0
22
  # via llama-index-readers-papers
23
  asttokens==3.0.0
@@ -51,6 +55,8 @@ click==8.2.1
51
  # duckduckgo-search
52
  # llama-cloud-services
53
  # nltk
 
 
54
  colorama==0.4.6
55
  # via
56
  # click
@@ -95,8 +101,12 @@ exceptiongroup==1.3.0
95
  # pytest
96
  executing==2.2.0
97
  # via stack-data
 
 
98
  feedparser==6.0.11
99
  # via arxiv
 
 
100
  filelock==3.18.0
101
  # via
102
  # huggingface-hub
@@ -112,6 +122,7 @@ frozenlist==1.6.2
112
  # aiosignal
113
  fsspec==2025.5.1
114
  # via
 
115
  # huggingface-hub
116
  # llama-index-core
117
  # torch
@@ -131,10 +142,16 @@ googleapis-common-protos==1.70.0
131
  # opentelemetry-exporter-otlp-proto-http
132
  gotrue==2.12.0
133
  # via supabase
 
 
 
 
134
  greenlet==3.2.3
135
  # via sqlalchemy
136
  griffe==1.7.3
137
  # via banks
 
 
138
  groq==0.28.0
139
  # via langchain-groq
140
  grpcio==1.72.1
@@ -145,7 +162,9 @@ grpcio==1.72.1
145
  grpcio-status==1.71.0
146
  # via google-api-core
147
  h11==0.16.0
148
- # via httpcore
 
 
149
  h2==4.2.0
150
  # via httpx
151
  hf-xet==1.1.3
@@ -159,6 +178,8 @@ httpcore==1.0.9
159
  httpx==0.28.1
160
  # via
161
  # gotrue
 
 
162
  # groq
163
  # langfuse
164
  # langgraph-sdk
@@ -167,6 +188,7 @@ httpx==0.28.1
167
  # llama-index-core
168
  # openai
169
  # postgrest
 
170
  # storage3
171
  # supabase
172
  # supafunc
@@ -176,6 +198,8 @@ httpx-sse==0.4.0
176
  huggingface-hub==0.32.4
177
  # via
178
  # final-assignment-template (pyproject.toml)
 
 
179
  # langchain-huggingface
180
  # llama-index-llms-huggingface-api
181
  # sentence-transformers
@@ -206,6 +230,7 @@ jedi==0.19.2
206
  jinja2==3.1.6
207
  # via
208
  # banks
 
209
  # torch
210
  jiter==0.10.0
211
  # via openai
@@ -238,6 +263,7 @@ langchain-core==0.3.65
238
  # langchain-google-genai
239
  # langchain-groq
240
  # langchain-huggingface
 
241
  # langchain-text-splitters
242
  # langgraph
243
  # langgraph-checkpoint
@@ -248,6 +274,8 @@ langchain-groq==0.3.2
248
  # via final-assignment-template (pyproject.toml)
249
  langchain-huggingface==0.3.0
250
  # via final-assignment-template (pyproject.toml)
 
 
251
  langchain-text-splitters==0.3.8
252
  # via langchain
253
  langfuse==3.0.0
@@ -342,7 +370,9 @@ llama-parse==0.6.30
342
  markdown-it-py==3.0.0
343
  # via rich
344
  markupsafe==3.0.2
345
- # via jinja2
 
 
346
  marshmallow==3.26.1
347
  # via dataclasses-json
348
  matplotlib-inline==0.1.7
@@ -373,17 +403,22 @@ nltk==3.9.1
373
  # llama-index-core
374
  numpy==2.2.6
375
  # via
 
376
  # langchain-community
377
  # llama-index-core
 
378
  # pandas
379
  # scikit-learn
380
  # scipy
381
  # transformers
382
- openai==1.84.0
383
  # via
 
384
  # llama-index-agent-openai
385
  # llama-index-embeddings-openai
386
  # llama-index-llms-openai
 
 
387
  opentelemetry-api==1.34.0
388
  # via
389
  # langfuse
@@ -415,6 +450,7 @@ opentelemetry-semantic-conventions==0.55b0
415
  # via opentelemetry-sdk
416
  orjson==3.10.18
417
  # via
 
418
  # langgraph-sdk
419
  # langsmith
420
  ormsgpack==1.10.0
@@ -422,6 +458,8 @@ ormsgpack==1.10.0
422
  packaging==24.2
423
  # via
424
  # deprecation
 
 
425
  # huggingface-hub
426
  # ipykernel
427
  # langchain-core
@@ -431,11 +469,15 @@ packaging==24.2
431
  # pytest
432
  # transformers
433
  pandas==2.2.3
434
- # via llama-index-readers-file
 
 
 
435
  parso==0.8.4
436
  # via jedi
437
  pillow==11.2.1
438
  # via
 
439
  # llama-index-core
440
  # sentence-transformers
441
  platformdirs==4.3.8
@@ -480,7 +522,9 @@ pyasn1-modules==0.4.2
480
  pydantic==2.11.5
481
  # via
482
  # banks
 
483
  # gotrue
 
484
  # groq
485
  # langchain
486
  # langchain-core
@@ -498,6 +542,8 @@ pydantic-core==2.33.2
498
  # via pydantic
499
  pydantic-settings==2.9.1
500
  # via langchain-community
 
 
501
  pygments==2.19.1
502
  # via
503
  # ipython
@@ -522,12 +568,15 @@ python-dotenv==1.1.0
522
  # dotenv
523
  # llama-cloud-services
524
  # pydantic-settings
 
 
525
  pytz==2025.2
526
  # via pandas
527
- # pywin32==310
528
  # via jupyter-core
529
  pyyaml==6.0.2
530
  # via
 
531
  # huggingface-hub
532
  # langchain
533
  # langchain-community
@@ -564,9 +613,15 @@ requests==2.32.3
564
  requests-toolbelt==1.0.0
565
  # via langsmith
566
  rich==14.0.0
567
- # via final-assignment-template (pyproject.toml)
 
 
568
  rsa==4.9.1
569
  # via google-auth
 
 
 
 
570
  safetensors==0.5.3
571
  # via transformers
572
  scikit-learn==1.7.0
@@ -575,10 +630,14 @@ scipy==1.15.3
575
  # via
576
  # scikit-learn
577
  # sentence-transformers
 
 
578
  sentence-transformers==4.1.0
579
  # via final-assignment-template (pyproject.toml)
580
  sgmllib3k==1.0.0
581
  # via feedparser
 
 
582
  six==1.17.0
583
  # via python-dateutil
584
  sniffio==1.3.1
@@ -595,6 +654,10 @@ sqlalchemy==2.0.41
595
  # llama-index-core
596
  stack-data==0.6.3
597
  # via ipython
 
 
 
 
598
  storage3==0.11.3
599
  # via supabase
600
  strenum==0.4.15
@@ -620,6 +683,7 @@ threadpoolctl==3.6.0
620
  # via scikit-learn
621
  tiktoken==0.9.0
622
  # via
 
623
  # llama-index-core
624
  # tavily-python
625
  tokenizers==0.21.1
@@ -628,6 +692,8 @@ tokenizers==0.21.1
628
  # transformers
629
  tomli==2.2.1
630
  # via pytest
 
 
631
  torch==2.7.1
632
  # via sentence-transformers
633
  tornado==6.5.1
@@ -653,12 +719,17 @@ traitlets==5.14.3
653
  # matplotlib-inline
654
  transformers==4.52.4
655
  # via sentence-transformers
 
 
656
  typing-extensions==4.14.0
657
  # via
658
  # aiosqlite
659
  # anyio
660
  # beautifulsoup4
661
  # exceptiongroup
 
 
 
662
  # groq
663
  # huggingface-hub
664
  # ipython
@@ -679,8 +750,10 @@ typing-extensions==4.14.0
679
  # sentence-transformers
680
  # sqlalchemy
681
  # torch
 
682
  # typing-inspect
683
  # typing-inspection
 
684
  typing-inspect==0.9.0
685
  # via
686
  # dataclasses-json
@@ -693,10 +766,14 @@ tzdata==2025.2
693
  # via pandas
694
  urllib3==2.4.0
695
  # via requests
 
 
696
  wcwidth==0.2.13
697
  # via prompt-toolkit
698
  websockets==14.2
699
- # via realtime
 
 
700
  widgetsnbextension==4.0.14
701
  # via ipywidgets
702
  wikipedia==1.4.0
 
1
  # This file was autogenerated by uv via the following command:
2
  # uv pip compile pyproject.toml --python 3.10 -o requirements.txt
3
+ aiofiles==24.1.0
4
+ # via gradio
5
  aiohappyeyeballs==2.6.1
6
  # via aiohttp
7
  aiohttp==3.12.9
 
17
  # via pydantic
18
  anyio==4.9.0
19
  # via
20
+ # gradio
21
  # groq
22
  # httpx
23
  # openai
24
+ # starlette
25
  arxiv==2.2.0
26
  # via llama-index-readers-papers
27
  asttokens==3.0.0
 
55
  # duckduckgo-search
56
  # llama-cloud-services
57
  # nltk
58
+ # typer
59
+ # uvicorn
60
  colorama==0.4.6
61
  # via
62
  # click
 
101
  # pytest
102
  executing==2.2.0
103
  # via stack-data
104
+ fastapi==0.115.13
105
+ # via gradio
106
  feedparser==6.0.11
107
  # via arxiv
108
+ ffmpy==0.6.0
109
+ # via gradio
110
  filelock==3.18.0
111
  # via
112
  # huggingface-hub
 
122
  # aiosignal
123
  fsspec==2025.5.1
124
  # via
125
+ # gradio-client
126
  # huggingface-hub
127
  # llama-index-core
128
  # torch
 
142
  # opentelemetry-exporter-otlp-proto-http
143
  gotrue==2.12.0
144
  # via supabase
145
+ gradio==5.34.2
146
+ # via final-assignment-template (pyproject.toml)
147
+ gradio-client==1.10.3
148
+ # via gradio
149
  greenlet==3.2.3
150
  # via sqlalchemy
151
  griffe==1.7.3
152
  # via banks
153
+ groovy==0.1.2
154
+ # via gradio
155
  groq==0.28.0
156
  # via langchain-groq
157
  grpcio==1.72.1
 
162
  grpcio-status==1.71.0
163
  # via google-api-core
164
  h11==0.16.0
165
+ # via
166
+ # httpcore
167
+ # uvicorn
168
  h2==4.2.0
169
  # via httpx
170
  hf-xet==1.1.3
 
178
  httpx==0.28.1
179
  # via
180
  # gotrue
181
+ # gradio
182
+ # gradio-client
183
  # groq
184
  # langfuse
185
  # langgraph-sdk
 
188
  # llama-index-core
189
  # openai
190
  # postgrest
191
+ # safehttpx
192
  # storage3
193
  # supabase
194
  # supafunc
 
198
  huggingface-hub==0.32.4
199
  # via
200
  # final-assignment-template (pyproject.toml)
201
+ # gradio
202
+ # gradio-client
203
  # langchain-huggingface
204
  # llama-index-llms-huggingface-api
205
  # sentence-transformers
 
230
  jinja2==3.1.6
231
  # via
232
  # banks
233
+ # gradio
234
  # torch
235
  jiter==0.10.0
236
  # via openai
 
263
  # langchain-google-genai
264
  # langchain-groq
265
  # langchain-huggingface
266
+ # langchain-openai
267
  # langchain-text-splitters
268
  # langgraph
269
  # langgraph-checkpoint
 
274
  # via final-assignment-template (pyproject.toml)
275
  langchain-huggingface==0.3.0
276
  # via final-assignment-template (pyproject.toml)
277
+ langchain-openai==0.3.24
278
+ # via final-assignment-template (pyproject.toml)
279
  langchain-text-splitters==0.3.8
280
  # via langchain
281
  langfuse==3.0.0
 
370
  markdown-it-py==3.0.0
371
  # via rich
372
  markupsafe==3.0.2
373
+ # via
374
+ # gradio
375
+ # jinja2
376
  marshmallow==3.26.1
377
  # via dataclasses-json
378
  matplotlib-inline==0.1.7
 
403
  # llama-index-core
404
  numpy==2.2.6
405
  # via
406
+ # gradio
407
  # langchain-community
408
  # llama-index-core
409
+ # opencv-python
410
  # pandas
411
  # scikit-learn
412
  # scipy
413
  # transformers
414
+ openai==1.88.0
415
  # via
416
+ # langchain-openai
417
  # llama-index-agent-openai
418
  # llama-index-embeddings-openai
419
  # llama-index-llms-openai
420
+ opencv-python==4.11.0.86
421
+ # via final-assignment-template (pyproject.toml)
422
  opentelemetry-api==1.34.0
423
  # via
424
  # langfuse
 
450
  # via opentelemetry-sdk
451
  orjson==3.10.18
452
  # via
453
+ # gradio
454
  # langgraph-sdk
455
  # langsmith
456
  ormsgpack==1.10.0
 
458
  packaging==24.2
459
  # via
460
  # deprecation
461
+ # gradio
462
+ # gradio-client
463
  # huggingface-hub
464
  # ipykernel
465
  # langchain-core
 
469
  # pytest
470
  # transformers
471
  pandas==2.2.3
472
+ # via
473
+ # final-assignment-template (pyproject.toml)
474
+ # gradio
475
+ # llama-index-readers-file
476
  parso==0.8.4
477
  # via jedi
478
  pillow==11.2.1
479
  # via
480
+ # gradio
481
  # llama-index-core
482
  # sentence-transformers
483
  platformdirs==4.3.8
 
522
  pydantic==2.11.5
523
  # via
524
  # banks
525
+ # fastapi
526
  # gotrue
527
+ # gradio
528
  # groq
529
  # langchain
530
  # langchain-core
 
542
  # via pydantic
543
  pydantic-settings==2.9.1
544
  # via langchain-community
545
+ pydub==0.25.1
546
+ # via gradio
547
  pygments==2.19.1
548
  # via
549
  # ipython
 
568
  # dotenv
569
  # llama-cloud-services
570
  # pydantic-settings
571
+ python-multipart==0.0.20
572
+ # via gradio
573
  pytz==2025.2
574
  # via pandas
575
+ pywin32==310
576
  # via jupyter-core
577
  pyyaml==6.0.2
578
  # via
579
+ # gradio
580
  # huggingface-hub
581
  # langchain
582
  # langchain-community
 
613
  requests-toolbelt==1.0.0
614
  # via langsmith
615
  rich==14.0.0
616
+ # via
617
+ # final-assignment-template (pyproject.toml)
618
+ # typer
619
  rsa==4.9.1
620
  # via google-auth
621
+ ruff==0.12.0
622
+ # via gradio
623
+ safehttpx==0.1.6
624
+ # via gradio
625
  safetensors==0.5.3
626
  # via transformers
627
  scikit-learn==1.7.0
 
630
  # via
631
  # scikit-learn
632
  # sentence-transformers
633
+ semantic-version==2.10.0
634
+ # via gradio
635
  sentence-transformers==4.1.0
636
  # via final-assignment-template (pyproject.toml)
637
  sgmllib3k==1.0.0
638
  # via feedparser
639
+ shellingham==1.5.4
640
+ # via typer
641
  six==1.17.0
642
  # via python-dateutil
643
  sniffio==1.3.1
 
654
  # llama-index-core
655
  stack-data==0.6.3
656
  # via ipython
657
+ starlette==0.46.2
658
+ # via
659
+ # fastapi
660
+ # gradio
661
  storage3==0.11.3
662
  # via supabase
663
  strenum==0.4.15
 
683
  # via scikit-learn
684
  tiktoken==0.9.0
685
  # via
686
+ # langchain-openai
687
  # llama-index-core
688
  # tavily-python
689
  tokenizers==0.21.1
 
692
  # transformers
693
  tomli==2.2.1
694
  # via pytest
695
+ tomlkit==0.13.3
696
+ # via gradio
697
  torch==2.7.1
698
  # via sentence-transformers
699
  tornado==6.5.1
 
719
  # matplotlib-inline
720
  transformers==4.52.4
721
  # via sentence-transformers
722
+ typer==0.16.0
723
+ # via gradio
724
  typing-extensions==4.14.0
725
  # via
726
  # aiosqlite
727
  # anyio
728
  # beautifulsoup4
729
  # exceptiongroup
730
+ # fastapi
731
+ # gradio
732
+ # gradio-client
733
  # groq
734
  # huggingface-hub
735
  # ipython
 
750
  # sentence-transformers
751
  # sqlalchemy
752
  # torch
753
+ # typer
754
  # typing-inspect
755
  # typing-inspection
756
+ # uvicorn
757
  typing-inspect==0.9.0
758
  # via
759
  # dataclasses-json
 
766
  # via pandas
767
  urllib3==2.4.0
768
  # via requests
769
+ uvicorn==0.34.3
770
+ # via gradio
771
  wcwidth==0.2.13
772
  # via prompt-toolkit
773
  websockets==14.2
774
+ # via
775
+ # gradio-client
776
+ # realtime
777
  widgetsnbextension==4.0.14
778
  # via ipywidgets
779
  wikipedia==1.4.0
uv.lock CHANGED
@@ -1,6 +1,11 @@
1
  version = 1
2
  revision = 1
3
  requires-python = ">=3.13"
 
 
 
 
 
4
 
5
  [[package]]
6
  name = "aiofiles"
@@ -511,6 +516,8 @@ dependencies = [
511
  { name = "llama-index-readers-wikipedia" },
512
  { name = "llama-index-tools-duckduckgo" },
513
  { name = "llama-index-tools-tavily-research" },
 
 
514
  { name = "rich" },
515
  { name = "sentence-transformers" },
516
  { name = "supabase" },
@@ -540,6 +547,8 @@ requires-dist = [
540
  { name = "llama-index-readers-wikipedia", specifier = ">=0.3.0" },
541
  { name = "llama-index-tools-duckduckgo", specifier = ">=0.3.0" },
542
  { name = "llama-index-tools-tavily-research", specifier = ">=0.3.0" },
 
 
543
  { name = "rich", specifier = ">=14.0.0" },
544
  { name = "sentence-transformers", specifier = ">=4.1.0" },
545
  { name = "supabase", specifier = ">=2.15.3" },
@@ -1938,7 +1947,7 @@ name = "nvidia-cudnn-cu12"
1938
  version = "9.5.1.17"
1939
  source = { registry = "https://pypi.org/simple" }
1940
  dependencies = [
1941
- { name = "nvidia-cublas-cu12" },
1942
  ]
1943
  wheels = [
1944
  { 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 },
@@ -1949,7 +1958,7 @@ name = "nvidia-cufft-cu12"
1949
  version = "11.3.0.4"
1950
  source = { registry = "https://pypi.org/simple" }
1951
  dependencies = [
1952
- { name = "nvidia-nvjitlink-cu12" },
1953
  ]
1954
  wheels = [
1955
  { 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 },
@@ -1978,9 +1987,9 @@ name = "nvidia-cusolver-cu12"
1978
  version = "11.7.1.2"
1979
  source = { registry = "https://pypi.org/simple" }
1980
  dependencies = [
1981
- { name = "nvidia-cublas-cu12" },
1982
- { name = "nvidia-cusparse-cu12" },
1983
- { name = "nvidia-nvjitlink-cu12" },
1984
  ]
1985
  wheels = [
1986
  { 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 },
@@ -1992,7 +2001,7 @@ name = "nvidia-cusparse-cu12"
1992
  version = "12.5.4.2"
1993
  source = { registry = "https://pypi.org/simple" }
1994
  dependencies = [
1995
- { name = "nvidia-nvjitlink-cu12" },
1996
  ]
1997
  wheels = [
1998
  { 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 },
@@ -2051,6 +2060,23 @@ wheels = [
2051
  { url = "https://files.pythonhosted.org/packages/f4/03/ef68d77a38dd383cbed7fc898857d394d5a8b0520a35f054e7fe05dc3ac1/openai-1.88.0-py3-none-any.whl", hash = "sha256:7edd7826b3b83f5846562a6f310f040c79576278bf8e3687b30ba05bb5dff978", size = 734293 },
2052
  ]
2053
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2054
  [[package]]
2055
  name = "opentelemetry-api"
2056
  version = "1.34.0"
@@ -3291,7 +3317,7 @@ name = "triton"
3291
  version = "3.3.1"
3292
  source = { registry = "https://pypi.org/simple" }
3293
  dependencies = [
3294
- { name = "setuptools" },
3295
  ]
3296
  wheels = [
3297
  { url = "https://files.pythonhosted.org/packages/74/1f/dfb531f90a2d367d914adfee771babbd3f1a5b26c3f5fbc458dee21daa78/triton-3.3.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b89d846b5a4198317fec27a5d3a609ea96b6d557ff44b56c23176546023c4240", size = 155673035 },
 
1
  version = 1
2
  revision = 1
3
  requires-python = ">=3.13"
4
+ resolution-markers = [
5
+ "sys_platform == 'darwin'",
6
+ "platform_machine == 'aarch64' and sys_platform == 'linux'",
7
+ "(platform_machine != 'aarch64' and sys_platform == 'linux') or (sys_platform != 'darwin' and sys_platform != 'linux')",
8
+ ]
9
 
10
  [[package]]
11
  name = "aiofiles"
 
516
  { name = "llama-index-readers-wikipedia" },
517
  { name = "llama-index-tools-duckduckgo" },
518
  { name = "llama-index-tools-tavily-research" },
519
+ { name = "opencv-python" },
520
+ { name = "pandas" },
521
  { name = "rich" },
522
  { name = "sentence-transformers" },
523
  { name = "supabase" },
 
547
  { name = "llama-index-readers-wikipedia", specifier = ">=0.3.0" },
548
  { name = "llama-index-tools-duckduckgo", specifier = ">=0.3.0" },
549
  { name = "llama-index-tools-tavily-research", specifier = ">=0.3.0" },
550
+ { name = "opencv-python", specifier = ">=4.11.0.86" },
551
+ { name = "pandas", specifier = ">=2.2.3" },
552
  { name = "rich", specifier = ">=14.0.0" },
553
  { name = "sentence-transformers", specifier = ">=4.1.0" },
554
  { name = "supabase", specifier = ">=2.15.3" },
 
1947
  version = "9.5.1.17"
1948
  source = { registry = "https://pypi.org/simple" }
1949
  dependencies = [
1950
+ { name = "nvidia-cublas-cu12", marker = "(platform_machine != 'aarch64' and sys_platform == 'linux') or (sys_platform != 'darwin' and sys_platform != 'linux')" },
1951
  ]
1952
  wheels = [
1953
  { 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 },
 
1958
  version = "11.3.0.4"
1959
  source = { registry = "https://pypi.org/simple" }
1960
  dependencies = [
1961
+ { name = "nvidia-nvjitlink-cu12", marker = "(platform_machine != 'aarch64' and sys_platform == 'linux') or (sys_platform != 'darwin' and sys_platform != 'linux')" },
1962
  ]
1963
  wheels = [
1964
  { 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 },
 
1987
  version = "11.7.1.2"
1988
  source = { registry = "https://pypi.org/simple" }
1989
  dependencies = [
1990
+ { name = "nvidia-cublas-cu12", marker = "(platform_machine != 'aarch64' and sys_platform == 'linux') or (sys_platform != 'darwin' and sys_platform != 'linux')" },
1991
+ { name = "nvidia-cusparse-cu12", marker = "(platform_machine != 'aarch64' and sys_platform == 'linux') or (sys_platform != 'darwin' and sys_platform != 'linux')" },
1992
+ { name = "nvidia-nvjitlink-cu12", marker = "(platform_machine != 'aarch64' and sys_platform == 'linux') or (sys_platform != 'darwin' and sys_platform != 'linux')" },
1993
  ]
1994
  wheels = [
1995
  { 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 },
 
2001
  version = "12.5.4.2"
2002
  source = { registry = "https://pypi.org/simple" }
2003
  dependencies = [
2004
+ { name = "nvidia-nvjitlink-cu12", marker = "(platform_machine != 'aarch64' and sys_platform == 'linux') or (sys_platform != 'darwin' and sys_platform != 'linux')" },
2005
  ]
2006
  wheels = [
2007
  { 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 },
 
2060
  { url = "https://files.pythonhosted.org/packages/f4/03/ef68d77a38dd383cbed7fc898857d394d5a8b0520a35f054e7fe05dc3ac1/openai-1.88.0-py3-none-any.whl", hash = "sha256:7edd7826b3b83f5846562a6f310f040c79576278bf8e3687b30ba05bb5dff978", size = 734293 },
2061
  ]
2062
 
2063
+ [[package]]
2064
+ name = "opencv-python"
2065
+ version = "4.11.0.86"
2066
+ source = { registry = "https://pypi.org/simple" }
2067
+ dependencies = [
2068
+ { name = "numpy" },
2069
+ ]
2070
+ sdist = { url = "https://files.pythonhosted.org/packages/17/06/68c27a523103dad5837dc5b87e71285280c4f098c60e4fe8a8db6486ab09/opencv-python-4.11.0.86.tar.gz", hash = "sha256:03d60ccae62304860d232272e4a4fda93c39d595780cb40b161b310244b736a4", size = 95171956 }
2071
+ wheels = [
2072
+ { 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 },
2073
+ { 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 },
2074
+ { 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 },
2075
+ { 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 },
2076
+ { url = "https://files.pythonhosted.org/packages/fb/d7/1d5941a9dde095468b288d989ff6539dd69cd429dbf1b9e839013d21b6f0/opencv_python-4.11.0.86-cp37-abi3-win32.whl", hash = "sha256:810549cb2a4aedaa84ad9a1c92fbfdfc14090e2749cedf2c1589ad8359aa169b", size = 29384337 },
2077
+ { 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 },
2078
+ ]
2079
+
2080
  [[package]]
2081
  name = "opentelemetry-api"
2082
  version = "1.34.0"
 
3317
  version = "3.3.1"
3318
  source = { registry = "https://pypi.org/simple" }
3319
  dependencies = [
3320
+ { name = "setuptools", marker = "(platform_machine != 'aarch64' and sys_platform == 'linux') or (sys_platform != 'darwin' and sys_platform != 'linux')" },
3321
  ]
3322
  wheels = [
3323
  { url = "https://files.pythonhosted.org/packages/74/1f/dfb531f90a2d367d914adfee771babbd3f1a5b26c3f5fbc458dee21daa78/triton-3.3.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b89d846b5a4198317fec27a5d3a609ea96b6d557ff44b56c23176546023c4240", size = 155673035 },