Spaces:
Runtime error
Runtime error
semioz
commited on
Commit
·
85b2bbc
1
Parent(s):
89836e0
supabase
Browse files- agent.py +25 -33
- pyproject.toml +1 -0
- uv.lock +154 -0
agent.py
CHANGED
@@ -8,15 +8,16 @@ from langchain_huggingface import (
|
|
8 |
)
|
9 |
from langgraph.graph import START, MessagesState, StateGraph
|
10 |
from langgraph.prebuilt import ToolNode, tools_condition
|
11 |
-
from langchain_community.vectorstores import
|
12 |
from langchain.tools.retriever import create_retriever_tool
|
13 |
-
from
|
14 |
-
import uuid
|
15 |
|
16 |
from tools import tools
|
|
|
17 |
|
18 |
logger = logging.getLogger(__name__)
|
19 |
|
|
|
20 |
# ----- Initializing vector store and retriever tool -------
|
21 |
|
22 |
with open("system_prompt.txt", encoding="utf-8") as f:
|
@@ -29,6 +30,21 @@ embeddings = HuggingFaceEmbeddings(
|
|
29 |
model_name="sentence-transformers/all-mpnet-base-v2"
|
30 |
)
|
31 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
32 |
def build_graph(provider: str = "groq"):
|
33 |
"""Build the graph"""
|
34 |
if provider == "groq":
|
@@ -45,17 +61,7 @@ def build_graph(provider: str = "groq"):
|
|
45 |
)
|
46 |
else:
|
47 |
raise ValueError("Invalid provider. Choose 'groq' or 'huggingface'.")
|
48 |
-
llm_with_tools = llm.bind_tools(tools)
|
49 |
-
|
50 |
-
def convert_messages_to_documents(messages: list[HumanMessage]) -> list[Document]:
|
51 |
-
return [
|
52 |
-
Document(
|
53 |
-
page_content=msg.content,
|
54 |
-
metadata={"role": "user", "index": idx, "id": str(uuid.uuid4())}
|
55 |
-
)
|
56 |
-
for idx, msg in enumerate(messages)
|
57 |
-
]
|
58 |
-
|
59 |
|
60 |
# Node
|
61 |
def assistant(state: MessagesState):
|
@@ -64,26 +70,12 @@ def build_graph(provider: str = "groq"):
|
|
64 |
|
65 |
|
66 |
def retriever(state: MessagesState):
|
67 |
-
"""Retriever node
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
create_retriever_tool = create_retriever_tool(
|
72 |
-
retriever=vector_store.as_retriever(),
|
73 |
-
name="Question Search",
|
74 |
-
description="A tool to retrieve similar questions from a vector store.",
|
75 |
)
|
76 |
-
|
77 |
-
query = state["messages"][0].content
|
78 |
-
similar = vector_store.similarity_search(query)
|
79 |
-
|
80 |
-
if similar:
|
81 |
-
example_msg = HumanMessage(
|
82 |
-
content=f"Here I provide a similar question and answer for reference: \n\n{similar[0].page_content}"
|
83 |
-
)
|
84 |
-
return {"messages": [sys_msg] + state["messages"] + [example_msg]}
|
85 |
-
else:
|
86 |
-
return {"messages": [sys_msg] + state["messages"]}
|
87 |
|
88 |
|
89 |
builder = StateGraph(MessagesState)
|
|
|
8 |
)
|
9 |
from langgraph.graph import START, MessagesState, StateGraph
|
10 |
from langgraph.prebuilt import ToolNode, tools_condition
|
11 |
+
from langchain_community.vectorstores import SupabaseVectorStore
|
12 |
from langchain.tools.retriever import create_retriever_tool
|
13 |
+
from supabase.client import Client, create_client
|
|
|
14 |
|
15 |
from tools import tools
|
16 |
+
import os
|
17 |
|
18 |
logger = logging.getLogger(__name__)
|
19 |
|
20 |
+
|
21 |
# ----- Initializing vector store and retriever tool -------
|
22 |
|
23 |
with open("system_prompt.txt", encoding="utf-8") as f:
|
|
|
30 |
model_name="sentence-transformers/all-mpnet-base-v2"
|
31 |
)
|
32 |
|
33 |
+
supabase: Client = create_client(
|
34 |
+
os.environ.get("SUPABASE_URL"),
|
35 |
+
os.environ.get("SUPABASE_SERVICE_KEY"))
|
36 |
+
vector_store = SupabaseVectorStore(
|
37 |
+
client=supabase,
|
38 |
+
embedding= embeddings,
|
39 |
+
table_name="documents",
|
40 |
+
query_name="match_documents_langchain",
|
41 |
+
)
|
42 |
+
create_retriever_tool = create_retriever_tool(
|
43 |
+
retriever=vector_store.as_retriever(),
|
44 |
+
name="Question Search",
|
45 |
+
description="A tool to retrieve similar questions from a vector store.",
|
46 |
+
)
|
47 |
+
|
48 |
def build_graph(provider: str = "groq"):
|
49 |
"""Build the graph"""
|
50 |
if provider == "groq":
|
|
|
61 |
)
|
62 |
else:
|
63 |
raise ValueError("Invalid provider. Choose 'groq' or 'huggingface'.")
|
64 |
+
llm_with_tools = llm.bind_tools(tools)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
65 |
|
66 |
# Node
|
67 |
def assistant(state: MessagesState):
|
|
|
70 |
|
71 |
|
72 |
def retriever(state: MessagesState):
|
73 |
+
"""Retriever node"""
|
74 |
+
similar_question = vector_store.similarity_search(state["messages"][0].content)
|
75 |
+
example_msg = HumanMessage(
|
76 |
+
content=f"Here I provide a similar question and answer for reference: \n\n{similar_question[0].page_content}",
|
|
|
|
|
|
|
|
|
77 |
)
|
78 |
+
return {"messages": [sys_msg] + state["messages"] + [example_msg]}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
79 |
|
80 |
|
81 |
builder = StateGraph(MessagesState)
|
pyproject.toml
CHANGED
@@ -10,6 +10,7 @@ dependencies = [
|
|
10 |
"langgraph>=0.5.4",
|
11 |
"polars>=1.31.0",
|
12 |
"pytesseract>=0.3.13",
|
|
|
13 |
]
|
14 |
|
15 |
[tool.ruff.lint]
|
|
|
10 |
"langgraph>=0.5.4",
|
11 |
"polars>=1.31.0",
|
12 |
"pytesseract>=0.3.13",
|
13 |
+
"supabase>=2.17.0",
|
14 |
]
|
15 |
|
16 |
[tool.ruff.lint]
|
uv.lock
CHANGED
@@ -309,6 +309,18 @@ wheels = [
|
|
309 |
{ url = "https://files.pythonhosted.org/packages/c3/be/d0d44e092656fe7a06b55e6103cbce807cdbdee17884a5367c68c9860853/dataclasses_json-0.6.7-py3-none-any.whl", hash = "sha256:0dbf33f26c8d5305befd61b39d2b3414e8a407bedc2834dea9b8d642666fb40a", size = 28686, upload-time = "2024-06-09T16:20:16.715Z" },
|
310 |
]
|
311 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
312 |
[[package]]
|
313 |
name = "distro"
|
314 |
version = "1.9.0"
|
@@ -419,6 +431,20 @@ wheels = [
|
|
419 |
{ url = "https://files.pythonhosted.org/packages/2f/e0/014d5d9d7a4564cf1c40b5039bc882db69fd881111e03ab3657ac0b218e2/fsspec-2025.7.0-py3-none-any.whl", hash = "sha256:8b012e39f63c7d5f10474de957f3ab793b47b45ae7d39f2fb735f8bbe25c0e21", size = 199597, upload-time = "2025-07-15T16:05:19.529Z" },
|
420 |
]
|
421 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
422 |
[[package]]
|
423 |
name = "gradio"
|
424 |
version = "5.38.1"
|
@@ -545,6 +571,19 @@ wheels = [
|
|
545 |
{ url = "https://files.pythonhosted.org/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl", hash = "sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86", size = 37515, upload-time = "2025-04-24T03:35:24.344Z" },
|
546 |
]
|
547 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
548 |
[[package]]
|
549 |
name = "hf-xet"
|
550 |
version = "1.1.5"
|
@@ -560,6 +599,15 @@ wheels = [
|
|
560 |
{ url = "https://files.pythonhosted.org/packages/f0/55/ef77a85ee443ae05a9e9cba1c9f0dd9241eb42da2aeba1dc50f51154c81a/hf_xet-1.1.5-cp37-abi3-win_amd64.whl", hash = "sha256:73e167d9807d166596b4b2f0b585c6d5bd84a26dea32843665a8b58f6edba245", size = 2738931, upload-time = "2025-06-20T21:48:39.482Z" },
|
561 |
]
|
562 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
563 |
[[package]]
|
564 |
name = "httpcore"
|
565 |
version = "1.0.9"
|
@@ -588,6 +636,11 @@ wheels = [
|
|
588 |
{ url = "https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad", size = 73517, upload-time = "2024-12-06T15:37:21.509Z" },
|
589 |
]
|
590 |
|
|
|
|
|
|
|
|
|
|
|
591 |
[[package]]
|
592 |
name = "httpx-sse"
|
593 |
version = "0.4.1"
|
@@ -616,6 +669,15 @@ wheels = [
|
|
616 |
{ url = "https://files.pythonhosted.org/packages/33/d5/d9e9b75d8dc9cf125fff16fb0cd51d864a29e8b46b6880d8808940989405/huggingface_hub-0.33.5-py3-none-any.whl", hash = "sha256:29b4e64982c2064006021af297e1b17d44c85a8aaf90a0d7efeff7e7d2426296", size = 515705, upload-time = "2025-07-24T12:30:29.55Z" },
|
617 |
]
|
618 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
619 |
[[package]]
|
620 |
name = "idna"
|
621 |
version = "3.10"
|
@@ -637,6 +699,7 @@ dependencies = [
|
|
637 |
{ name = "langgraph" },
|
638 |
{ name = "polars" },
|
639 |
{ name = "pytesseract" },
|
|
|
640 |
]
|
641 |
|
642 |
[package.metadata]
|
@@ -648,6 +711,7 @@ requires-dist = [
|
|
648 |
{ name = "langgraph", specifier = ">=0.5.4" },
|
649 |
{ name = "polars", specifier = ">=1.31.0" },
|
650 |
{ name = "pytesseract", specifier = ">=0.3.13" },
|
|
|
651 |
]
|
652 |
|
653 |
[[package]]
|
@@ -1224,6 +1288,20 @@ wheels = [
|
|
1224 |
{ url = "https://files.pythonhosted.org/packages/40/4b/0673a68ac4d6527fac951970e929c3b4440c654f994f0c957bd5556deb38/polars-1.31.0-cp39-abi3-win_arm64.whl", hash = "sha256:62ef23bb9d10dca4c2b945979f9a50812ac4ace4ed9e158a6b5d32a7322e6f75", size = 31469078, upload-time = "2025-06-18T11:59:59.242Z" },
|
1225 |
]
|
1226 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1227 |
[[package]]
|
1228 |
name = "propcache"
|
1229 |
version = "0.3.2"
|
@@ -1379,6 +1457,15 @@ wheels = [
|
|
1379 |
{ url = "https://files.pythonhosted.org/packages/c7/21/705964c7812476f378728bdf590ca4b771ec72385c533964653c68e86bdc/pygments-2.19.2-py3-none-any.whl", hash = "sha256:86540386c03d588bb81d44bc3928634ff26449851e99741617ecb9037ee5ec0b", size = 1225217, upload-time = "2025-06-21T13:39:07.939Z" },
|
1380 |
]
|
1381 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1382 |
[[package]]
|
1383 |
name = "pytesseract"
|
1384 |
version = "0.3.13"
|
@@ -1457,6 +1544,20 @@ wheels = [
|
|
1457 |
{ url = "https://files.pythonhosted.org/packages/fa/de/02b54f42487e3d3c6efb3f89428677074ca7bf43aae402517bc7cca949f3/PyYAML-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563", size = 156446, upload-time = "2024-08-06T20:33:04.33Z" },
|
1458 |
]
|
1459 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1460 |
[[package]]
|
1461 |
name = "requests"
|
1462 |
version = "2.32.4"
|
@@ -1612,6 +1713,59 @@ wheels = [
|
|
1612 |
{ url = "https://files.pythonhosted.org/packages/f7/1f/b876b1f83aef204198a42dc101613fefccb32258e5428b5f9259677864b4/starlette-0.47.2-py3-none-any.whl", hash = "sha256:c5847e96134e5c5371ee9fac6fdf1a67336d5815e09eb2a01fdb57a351ef915b", size = 72984, upload-time = "2025-07-20T17:31:56.738Z" },
|
1613 |
]
|
1614 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1615 |
[[package]]
|
1616 |
name = "tenacity"
|
1617 |
version = "9.1.2"
|
|
|
309 |
{ url = "https://files.pythonhosted.org/packages/c3/be/d0d44e092656fe7a06b55e6103cbce807cdbdee17884a5367c68c9860853/dataclasses_json-0.6.7-py3-none-any.whl", hash = "sha256:0dbf33f26c8d5305befd61b39d2b3414e8a407bedc2834dea9b8d642666fb40a", size = 28686, upload-time = "2024-06-09T16:20:16.715Z" },
|
310 |
]
|
311 |
|
312 |
+
[[package]]
|
313 |
+
name = "deprecation"
|
314 |
+
version = "2.1.0"
|
315 |
+
source = { registry = "https://pypi.org/simple" }
|
316 |
+
dependencies = [
|
317 |
+
{ name = "packaging" },
|
318 |
+
]
|
319 |
+
sdist = { url = "https://files.pythonhosted.org/packages/5a/d3/8ae2869247df154b64c1884d7346d412fed0c49df84db635aab2d1c40e62/deprecation-2.1.0.tar.gz", hash = "sha256:72b3bde64e5d778694b0cf68178aed03d15e15477116add3fb773e581f9518ff", size = 173788, upload-time = "2020-04-20T14:23:38.738Z" }
|
320 |
+
wheels = [
|
321 |
+
{ url = "https://files.pythonhosted.org/packages/02/c3/253a89ee03fc9b9682f1541728eb66db7db22148cd94f89ab22528cd1e1b/deprecation-2.1.0-py2.py3-none-any.whl", hash = "sha256:a10811591210e1fb0e768a8c25517cabeabcba6f0bf96564f8ff45189f90b14a", size = 11178, upload-time = "2020-04-20T14:23:36.581Z" },
|
322 |
+
]
|
323 |
+
|
324 |
[[package]]
|
325 |
name = "distro"
|
326 |
version = "1.9.0"
|
|
|
431 |
{ url = "https://files.pythonhosted.org/packages/2f/e0/014d5d9d7a4564cf1c40b5039bc882db69fd881111e03ab3657ac0b218e2/fsspec-2025.7.0-py3-none-any.whl", hash = "sha256:8b012e39f63c7d5f10474de957f3ab793b47b45ae7d39f2fb735f8bbe25c0e21", size = 199597, upload-time = "2025-07-15T16:05:19.529Z" },
|
432 |
]
|
433 |
|
434 |
+
[[package]]
|
435 |
+
name = "gotrue"
|
436 |
+
version = "2.12.3"
|
437 |
+
source = { registry = "https://pypi.org/simple" }
|
438 |
+
dependencies = [
|
439 |
+
{ name = "httpx", extra = ["http2"] },
|
440 |
+
{ name = "pydantic" },
|
441 |
+
{ name = "pyjwt" },
|
442 |
+
]
|
443 |
+
sdist = { url = "https://files.pythonhosted.org/packages/fe/67/ae47f68daae1bbb56a9fbf960dfb7d08b3dec52a6ad1e96f69c2ba5b3116/gotrue-2.12.3.tar.gz", hash = "sha256:f874cf9d0b2f0335bfbd0d6e29e3f7aff79998cd1c14d2ad814db8c06cee3852", size = 38323, upload-time = "2025-07-04T06:50:03.941Z" }
|
444 |
+
wheels = [
|
445 |
+
{ url = "https://files.pythonhosted.org/packages/42/fa/4165d298ef89254c9f742faa3f99a61fe6fd3552b4ba44df6924f8d307d7/gotrue-2.12.3-py3-none-any.whl", hash = "sha256:b1a3c6a5fe3f92e854a026c4c19de58706a96fd5fbdcc3d620b2802f6a46a26b", size = 44022, upload-time = "2025-07-04T06:50:02.591Z" },
|
446 |
+
]
|
447 |
+
|
448 |
[[package]]
|
449 |
name = "gradio"
|
450 |
version = "5.38.1"
|
|
|
571 |
{ url = "https://files.pythonhosted.org/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl", hash = "sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86", size = 37515, upload-time = "2025-04-24T03:35:24.344Z" },
|
572 |
]
|
573 |
|
574 |
+
[[package]]
|
575 |
+
name = "h2"
|
576 |
+
version = "4.2.0"
|
577 |
+
source = { registry = "https://pypi.org/simple" }
|
578 |
+
dependencies = [
|
579 |
+
{ name = "hpack" },
|
580 |
+
{ name = "hyperframe" },
|
581 |
+
]
|
582 |
+
sdist = { url = "https://files.pythonhosted.org/packages/1b/38/d7f80fd13e6582fb8e0df8c9a653dcc02b03ca34f4d72f34869298c5baf8/h2-4.2.0.tar.gz", hash = "sha256:c8a52129695e88b1a0578d8d2cc6842bbd79128ac685463b887ee278126ad01f", size = 2150682, upload-time = "2025-02-02T07:43:51.815Z" }
|
583 |
+
wheels = [
|
584 |
+
{ url = "https://files.pythonhosted.org/packages/d0/9e/984486f2d0a0bd2b024bf4bc1c62688fcafa9e61991f041fb0e2def4a982/h2-4.2.0-py3-none-any.whl", hash = "sha256:479a53ad425bb29af087f3458a61d30780bc818e4ebcf01f0b536ba916462ed0", size = 60957, upload-time = "2025-02-01T11:02:26.481Z" },
|
585 |
+
]
|
586 |
+
|
587 |
[[package]]
|
588 |
name = "hf-xet"
|
589 |
version = "1.1.5"
|
|
|
599 |
{ url = "https://files.pythonhosted.org/packages/f0/55/ef77a85ee443ae05a9e9cba1c9f0dd9241eb42da2aeba1dc50f51154c81a/hf_xet-1.1.5-cp37-abi3-win_amd64.whl", hash = "sha256:73e167d9807d166596b4b2f0b585c6d5bd84a26dea32843665a8b58f6edba245", size = 2738931, upload-time = "2025-06-20T21:48:39.482Z" },
|
600 |
]
|
601 |
|
602 |
+
[[package]]
|
603 |
+
name = "hpack"
|
604 |
+
version = "4.1.0"
|
605 |
+
source = { registry = "https://pypi.org/simple" }
|
606 |
+
sdist = { url = "https://files.pythonhosted.org/packages/2c/48/71de9ed269fdae9c8057e5a4c0aa7402e8bb16f2c6e90b3aa53327b113f8/hpack-4.1.0.tar.gz", hash = "sha256:ec5eca154f7056aa06f196a557655c5b009b382873ac8d1e66e79e87535f1dca", size = 51276, upload-time = "2025-01-22T21:44:58.347Z" }
|
607 |
+
wheels = [
|
608 |
+
{ url = "https://files.pythonhosted.org/packages/07/c6/80c95b1b2b94682a72cbdbfb85b81ae2daffa4291fbfa1b1464502ede10d/hpack-4.1.0-py3-none-any.whl", hash = "sha256:157ac792668d995c657d93111f46b4535ed114f0c9c8d672271bbec7eae1b496", size = 34357, upload-time = "2025-01-22T21:44:56.92Z" },
|
609 |
+
]
|
610 |
+
|
611 |
[[package]]
|
612 |
name = "httpcore"
|
613 |
version = "1.0.9"
|
|
|
636 |
{ url = "https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad", size = 73517, upload-time = "2024-12-06T15:37:21.509Z" },
|
637 |
]
|
638 |
|
639 |
+
[package.optional-dependencies]
|
640 |
+
http2 = [
|
641 |
+
{ name = "h2" },
|
642 |
+
]
|
643 |
+
|
644 |
[[package]]
|
645 |
name = "httpx-sse"
|
646 |
version = "0.4.1"
|
|
|
669 |
{ url = "https://files.pythonhosted.org/packages/33/d5/d9e9b75d8dc9cf125fff16fb0cd51d864a29e8b46b6880d8808940989405/huggingface_hub-0.33.5-py3-none-any.whl", hash = "sha256:29b4e64982c2064006021af297e1b17d44c85a8aaf90a0d7efeff7e7d2426296", size = 515705, upload-time = "2025-07-24T12:30:29.55Z" },
|
670 |
]
|
671 |
|
672 |
+
[[package]]
|
673 |
+
name = "hyperframe"
|
674 |
+
version = "6.1.0"
|
675 |
+
source = { registry = "https://pypi.org/simple" }
|
676 |
+
sdist = { url = "https://files.pythonhosted.org/packages/02/e7/94f8232d4a74cc99514c13a9f995811485a6903d48e5d952771ef6322e30/hyperframe-6.1.0.tar.gz", hash = "sha256:f630908a00854a7adeabd6382b43923a4c4cd4b821fcb527e6ab9e15382a3b08", size = 26566, upload-time = "2025-01-22T21:41:49.302Z" }
|
677 |
+
wheels = [
|
678 |
+
{ url = "https://files.pythonhosted.org/packages/48/30/47d0bf6072f7252e6521f3447ccfa40b421b6824517f82854703d0f5a98b/hyperframe-6.1.0-py3-none-any.whl", hash = "sha256:b03380493a519fce58ea5af42e4a42317bf9bd425596f7a0835ffce80f1a42e5", size = 13007, upload-time = "2025-01-22T21:41:47.295Z" },
|
679 |
+
]
|
680 |
+
|
681 |
[[package]]
|
682 |
name = "idna"
|
683 |
version = "3.10"
|
|
|
699 |
{ name = "langgraph" },
|
700 |
{ name = "polars" },
|
701 |
{ name = "pytesseract" },
|
702 |
+
{ name = "supabase" },
|
703 |
]
|
704 |
|
705 |
[package.metadata]
|
|
|
711 |
{ name = "langgraph", specifier = ">=0.5.4" },
|
712 |
{ name = "polars", specifier = ">=1.31.0" },
|
713 |
{ name = "pytesseract", specifier = ">=0.3.13" },
|
714 |
+
{ name = "supabase", specifier = ">=2.17.0" },
|
715 |
]
|
716 |
|
717 |
[[package]]
|
|
|
1288 |
{ url = "https://files.pythonhosted.org/packages/40/4b/0673a68ac4d6527fac951970e929c3b4440c654f994f0c957bd5556deb38/polars-1.31.0-cp39-abi3-win_arm64.whl", hash = "sha256:62ef23bb9d10dca4c2b945979f9a50812ac4ace4ed9e158a6b5d32a7322e6f75", size = 31469078, upload-time = "2025-06-18T11:59:59.242Z" },
|
1289 |
]
|
1290 |
|
1291 |
+
[[package]]
|
1292 |
+
name = "postgrest"
|
1293 |
+
version = "1.1.1"
|
1294 |
+
source = { registry = "https://pypi.org/simple" }
|
1295 |
+
dependencies = [
|
1296 |
+
{ name = "deprecation" },
|
1297 |
+
{ name = "httpx", extra = ["http2"] },
|
1298 |
+
{ name = "pydantic" },
|
1299 |
+
]
|
1300 |
+
sdist = { url = "https://files.pythonhosted.org/packages/6e/3e/1b50568e1f5db0bdced4a82c7887e37326585faef7ca43ead86849cb4861/postgrest-1.1.1.tar.gz", hash = "sha256:f3bb3e8c4602775c75c844a31f565f5f3dd584df4d36d683f0b67d01a86be322", size = 15431, upload-time = "2025-06-23T19:21:34.742Z" }
|
1301 |
+
wheels = [
|
1302 |
+
{ url = "https://files.pythonhosted.org/packages/a4/71/188a50ea64c17f73ff4df5196ec1553a8f1723421eb2d1069c73bab47d78/postgrest-1.1.1-py3-none-any.whl", hash = "sha256:98a6035ee1d14288484bfe36235942c5fb2d26af6d8120dfe3efbe007859251a", size = 22366, upload-time = "2025-06-23T19:21:33.637Z" },
|
1303 |
+
]
|
1304 |
+
|
1305 |
[[package]]
|
1306 |
name = "propcache"
|
1307 |
version = "0.3.2"
|
|
|
1457 |
{ url = "https://files.pythonhosted.org/packages/c7/21/705964c7812476f378728bdf590ca4b771ec72385c533964653c68e86bdc/pygments-2.19.2-py3-none-any.whl", hash = "sha256:86540386c03d588bb81d44bc3928634ff26449851e99741617ecb9037ee5ec0b", size = 1225217, upload-time = "2025-06-21T13:39:07.939Z" },
|
1458 |
]
|
1459 |
|
1460 |
+
[[package]]
|
1461 |
+
name = "pyjwt"
|
1462 |
+
version = "2.10.1"
|
1463 |
+
source = { registry = "https://pypi.org/simple" }
|
1464 |
+
sdist = { url = "https://files.pythonhosted.org/packages/e7/46/bd74733ff231675599650d3e47f361794b22ef3e3770998dda30d3b63726/pyjwt-2.10.1.tar.gz", hash = "sha256:3cc5772eb20009233caf06e9d8a0577824723b44e6648ee0a2aedb6cf9381953", size = 87785, upload-time = "2024-11-28T03:43:29.933Z" }
|
1465 |
+
wheels = [
|
1466 |
+
{ url = "https://files.pythonhosted.org/packages/61/ad/689f02752eeec26aed679477e80e632ef1b682313be70793d798c1d5fc8f/PyJWT-2.10.1-py3-none-any.whl", hash = "sha256:dcdd193e30abefd5debf142f9adfcdd2b58004e644f25406ffaebd50bd98dacb", size = 22997, upload-time = "2024-11-28T03:43:27.893Z" },
|
1467 |
+
]
|
1468 |
+
|
1469 |
[[package]]
|
1470 |
name = "pytesseract"
|
1471 |
version = "0.3.13"
|
|
|
1544 |
{ url = "https://files.pythonhosted.org/packages/fa/de/02b54f42487e3d3c6efb3f89428677074ca7bf43aae402517bc7cca949f3/PyYAML-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563", size = 156446, upload-time = "2024-08-06T20:33:04.33Z" },
|
1545 |
]
|
1546 |
|
1547 |
+
[[package]]
|
1548 |
+
name = "realtime"
|
1549 |
+
version = "2.6.0"
|
1550 |
+
source = { registry = "https://pypi.org/simple" }
|
1551 |
+
dependencies = [
|
1552 |
+
{ name = "pydantic" },
|
1553 |
+
{ name = "typing-extensions" },
|
1554 |
+
{ name = "websockets" },
|
1555 |
+
]
|
1556 |
+
sdist = { url = "https://files.pythonhosted.org/packages/fc/a8/83a691e9fd8f8724dac98948608371442ffb3ee4818130337ac400bd0415/realtime-2.6.0.tar.gz", hash = "sha256:f68743cff85d3113659fa19835a868674e720465649bf833e1cd47d7da0f7bbd", size = 18372, upload-time = "2025-07-10T19:51:44.399Z" }
|
1557 |
+
wheels = [
|
1558 |
+
{ url = "https://files.pythonhosted.org/packages/46/a3/8a49cd4764cb96101d8b3374502dbc9a84f687a12f09e2af28d52035ebcd/realtime-2.6.0-py3-none-any.whl", hash = "sha256:a0512d71044c2621455bc87d1c171739967edc161381994de54e0989ca6c348e", size = 21803, upload-time = "2025-07-10T19:51:42.922Z" },
|
1559 |
+
]
|
1560 |
+
|
1561 |
[[package]]
|
1562 |
name = "requests"
|
1563 |
version = "2.32.4"
|
|
|
1713 |
{ url = "https://files.pythonhosted.org/packages/f7/1f/b876b1f83aef204198a42dc101613fefccb32258e5428b5f9259677864b4/starlette-0.47.2-py3-none-any.whl", hash = "sha256:c5847e96134e5c5371ee9fac6fdf1a67336d5815e09eb2a01fdb57a351ef915b", size = 72984, upload-time = "2025-07-20T17:31:56.738Z" },
|
1714 |
]
|
1715 |
|
1716 |
+
[[package]]
|
1717 |
+
name = "storage3"
|
1718 |
+
version = "0.12.0"
|
1719 |
+
source = { registry = "https://pypi.org/simple" }
|
1720 |
+
dependencies = [
|
1721 |
+
{ name = "deprecation" },
|
1722 |
+
{ name = "httpx", extra = ["http2"] },
|
1723 |
+
{ name = "python-dateutil" },
|
1724 |
+
]
|
1725 |
+
sdist = { url = "https://files.pythonhosted.org/packages/c5/86/9eae84e8ad4ba73f575f3eaf5536d949f2fd7d6adc85829f9af04bce97e2/storage3-0.12.0.tar.gz", hash = "sha256:94243f20922d57738bf42e96b9f5582b4d166e8bf209eccf20b146909f3f71b0", size = 10024, upload-time = "2025-06-19T17:50:51.763Z" }
|
1726 |
+
wheels = [
|
1727 |
+
{ url = "https://files.pythonhosted.org/packages/b0/7e/693d6d603db142eb5e6f3cb76eb6e9c439582b7539e2695e175e2de3ac44/storage3-0.12.0-py3-none-any.whl", hash = "sha256:1c4585693ca42243ded1512b58e54c697111e91a20916cd14783eebc37e7c87d", size = 18422, upload-time = "2025-06-19T17:50:50.294Z" },
|
1728 |
+
]
|
1729 |
+
|
1730 |
+
[[package]]
|
1731 |
+
name = "strenum"
|
1732 |
+
version = "0.4.15"
|
1733 |
+
source = { registry = "https://pypi.org/simple" }
|
1734 |
+
sdist = { url = "https://files.pythonhosted.org/packages/85/ad/430fb60d90e1d112a62ff57bdd1f286ec73a2a0331272febfddd21f330e1/StrEnum-0.4.15.tar.gz", hash = "sha256:878fb5ab705442070e4dd1929bb5e2249511c0bcf2b0eeacf3bcd80875c82eff", size = 23384, upload-time = "2023-06-29T22:02:58.399Z" }
|
1735 |
+
wheels = [
|
1736 |
+
{ url = "https://files.pythonhosted.org/packages/81/69/297302c5f5f59c862faa31e6cb9a4cd74721cd1e052b38e464c5b402df8b/StrEnum-0.4.15-py3-none-any.whl", hash = "sha256:a30cda4af7cc6b5bf52c8055bc4bf4b2b6b14a93b574626da33df53cf7740659", size = 8851, upload-time = "2023-06-29T22:02:56.947Z" },
|
1737 |
+
]
|
1738 |
+
|
1739 |
+
[[package]]
|
1740 |
+
name = "supabase"
|
1741 |
+
version = "2.17.0"
|
1742 |
+
source = { registry = "https://pypi.org/simple" }
|
1743 |
+
dependencies = [
|
1744 |
+
{ name = "gotrue" },
|
1745 |
+
{ name = "httpx" },
|
1746 |
+
{ name = "postgrest" },
|
1747 |
+
{ name = "realtime" },
|
1748 |
+
{ name = "storage3" },
|
1749 |
+
{ name = "supafunc" },
|
1750 |
+
]
|
1751 |
+
sdist = { url = "https://files.pythonhosted.org/packages/9d/e6/1f2ab6be273897d097574e792a2f9e469e21a604d9fe0ae4fb5925c4248e/supabase-2.17.0.tar.gz", hash = "sha256:3207314b540db7e3339fa2500bd977541517afb4d20b7ff93a89b97a05f9df38", size = 14710, upload-time = "2025-07-17T23:55:22.588Z" }
|
1752 |
+
wheels = [
|
1753 |
+
{ url = "https://files.pythonhosted.org/packages/be/6a/e6f2bd8960d4a6baaa54b0c5ea514f6131af5eb533ffe3aeb08ebc47eb4a/supabase-2.17.0-py3-none-any.whl", hash = "sha256:2dd804fae8850cebccc9ab8711c2ee9e2f009e847f4c95c092a4423778e3c3f6", size = 17771, upload-time = "2025-07-17T23:55:19.976Z" },
|
1754 |
+
]
|
1755 |
+
|
1756 |
+
[[package]]
|
1757 |
+
name = "supafunc"
|
1758 |
+
version = "0.10.1"
|
1759 |
+
source = { registry = "https://pypi.org/simple" }
|
1760 |
+
dependencies = [
|
1761 |
+
{ name = "httpx", extra = ["http2"] },
|
1762 |
+
{ name = "strenum" },
|
1763 |
+
]
|
1764 |
+
sdist = { url = "https://files.pythonhosted.org/packages/e8/4b/16f94bcae8a49f5e09544a4fb0e6ad1c2288038036cefdeedb72fcffd92c/supafunc-0.10.1.tar.gz", hash = "sha256:a5b33c8baecb6b5297d25da29a2503e2ec67ee6986f3d44c137e651b8a59a17d", size = 5036, upload-time = "2025-06-23T18:26:50.327Z" }
|
1765 |
+
wheels = [
|
1766 |
+
{ url = "https://files.pythonhosted.org/packages/76/4a/9cbea12d86a741d4e73a6e278c2b1d6479fb03d1002efb00e8e71aea76db/supafunc-0.10.1-py3-none-any.whl", hash = "sha256:26df9bd25ff2ef56cb5bfb8962de98f43331f7f8ff69572bac3ed9c3a9672040", size = 8028, upload-time = "2025-06-23T18:26:49.176Z" },
|
1767 |
+
]
|
1768 |
+
|
1769 |
[[package]]
|
1770 |
name = "tenacity"
|
1771 |
version = "9.1.2"
|