Aasher commited on
Commit
7c8e7f2
·
1 Parent(s): 9093b0a

Implement code changes to enhance functionality and improve performance

Browse files
Files changed (4) hide show
  1. .gitignore +2 -1
  2. core/config.py +30 -0
  3. pyproject.toml +6 -0
  4. uv.lock +253 -3
.gitignore CHANGED
@@ -10,5 +10,6 @@ wheels/
10
  .venv
11
  .env
12
 
 
13
  *.ipynb
14
-
 
10
  .venv
11
  .env
12
 
13
+ # Project Specific
14
  *.ipynb
15
+ ingestion/
core/config.py ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from pydantic_settings import BaseSettings, SettingsConfigDict
2
+ from pathlib import Path
3
+
4
+ class Settings(BaseSettings):
5
+ model_config = SettingsConfigDict(
6
+ env_file=".env", extra="ignore", env_file_encoding="utf-8"
7
+ )
8
+ # --- Application Configuration ---
9
+ APP_NAME: str = "Makhfi AI"
10
+ APP_VERSION: str = "0.1.0"
11
+
12
+ # --- Graph DB Configuration ---
13
+ NEO4J_URI: str
14
+ NEO4J_USER: str
15
+ NEO4J_PASSWORD: str
16
+
17
+ # --- Models Configuration ---
18
+ OPENAI_API_KEY: str
19
+ GOOGLE_API_KEY: str
20
+ DEFAULT_MODEL: str = "gemini-2.5-flash"
21
+ EMBEDDINGS_MODEL: str = "text-embedding-004"
22
+ KNOWLEDGE_GRAPH_BUILDER: str = "gemini-2.0-flash"
23
+
24
+
25
+ settings = Settings()
26
+
27
+ ROOT_DIR = Path(__file__).parent.parent
28
+ INGESTION_DIR = ROOT_DIR / "ingestion"
29
+ DOCUMENTS_DIR = INGESTION_DIR / "data"
30
+ METADATA_FILE = INGESTION_DIR / "metadata.csv"
pyproject.toml CHANGED
@@ -5,13 +5,19 @@ description = "Add your description here"
5
  readme = "README.md"
6
  requires-python = ">=3.11"
7
  dependencies = [
 
8
  "fastapi>=0.115.14",
9
  "ipykernel>=6.29.5",
10
  "langchain>=0.3.26",
 
11
  "langchain-google-genai>=2.1.6",
 
12
  "langchain-pinecone>=0.2.8",
13
  "langgraph>=0.5.0",
 
 
14
  "pinecone>=7.3.0",
 
15
  "python-dotenv>=1.1.1",
16
  "sqlmodel>=0.0.24",
17
  ]
 
5
  readme = "README.md"
6
  requires-python = ">=3.11"
7
  dependencies = [
8
+ "falkordb>=1.2.0",
9
  "fastapi>=0.115.14",
10
  "ipykernel>=6.29.5",
11
  "langchain>=0.3.26",
12
+ "langchain-community>=0.3.27",
13
  "langchain-google-genai>=2.1.6",
14
+ "langchain-groq>=0.3.5",
15
  "langchain-pinecone>=0.2.8",
16
  "langgraph>=0.5.0",
17
+ "neo4j>=5.28.1",
18
+ "pandas>=2.3.0",
19
  "pinecone>=7.3.0",
20
+ "pydantic-settings>=2.10.1",
21
  "python-dotenv>=1.1.1",
22
  "sqlmodel>=0.0.24",
23
  ]
uv.lock CHANGED
@@ -151,6 +151,15 @@ wheels = [
151
  { url = "https://files.pythonhosted.org/packages/25/8a/c46dcc25341b5bce5472c718902eb3d38600a903b14fa6aeecef3f21a46f/asttokens-3.0.0-py3-none-any.whl", hash = "sha256:e3078351a059199dd5138cb1c706e6430c05eff2ff136af5eb4790f9d28932e2", size = 26918 },
152
  ]
153
 
 
 
 
 
 
 
 
 
 
154
  [[package]]
155
  name = "attrs"
156
  version = "25.3.0"
@@ -292,6 +301,19 @@ wheels = [
292
  { url = "https://files.pythonhosted.org/packages/e6/75/49e5bfe642f71f272236b5b2d2691cf915a7283cc0ceda56357b61daa538/comm-0.2.2-py3-none-any.whl", hash = "sha256:e6fb86cb70ff661ee8c9c14e7d36d6de3b4066f1441be4063df9c5009f0a64d3", size = 7180 },
293
  ]
294
 
 
 
 
 
 
 
 
 
 
 
 
 
 
295
  [[package]]
296
  name = "debugpy"
297
  version = "1.8.14"
@@ -340,6 +362,19 @@ wheels = [
340
  { url = "https://files.pythonhosted.org/packages/7b/8f/c4d9bafc34ad7ad5d8dc16dd1347ee0e507a52c3adb6bfa8887e1c6a26ba/executing-2.2.0-py2.py3-none-any.whl", hash = "sha256:11387150cad388d62750327a53d3339fad4888b39a6fe233c3afbb54ecffd3aa", size = 26702 },
341
  ]
342
 
 
 
 
 
 
 
 
 
 
 
 
 
 
343
  [[package]]
344
  name = "fastapi"
345
  version = "0.115.14"
@@ -545,6 +580,23 @@ wheels = [
545
  { url = "https://files.pythonhosted.org/packages/5c/4f/aab73ecaa6b3086a4c89863d94cf26fa84cbff63f52ce9bc4342b3087a06/greenlet-3.2.3-cp314-cp314-win_amd64.whl", hash = "sha256:8c47aae8fbbfcf82cc13327ae802ba13c9c36753b67e760023fd116bc124a62a", size = 301236 },
546
  ]
547
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
548
  [[package]]
549
  name = "grpcio"
550
  version = "1.73.1"
@@ -634,6 +686,15 @@ wheels = [
634
  { url = "https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad", size = 73517 },
635
  ]
636
 
 
 
 
 
 
 
 
 
 
637
  [[package]]
638
  name = "idna"
639
  version = "3.10"
@@ -851,6 +912,29 @@ wheels = [
851
  { url = "https://files.pythonhosted.org/packages/f1/f2/c09a2e383283e3af1db669ab037ac05a45814f4b9c472c48dc24c0cef039/langchain-0.3.26-py3-none-any.whl", hash = "sha256:361bb2e61371024a8c473da9f9c55f4ee50f269c5ab43afdb2b1309cb7ac36cf", size = 1012336 },
852
  ]
853
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
854
  [[package]]
855
  name = "langchain-core"
856
  version = "0.3.67"
@@ -884,6 +968,19 @@ wheels = [
884
  { url = "https://files.pythonhosted.org/packages/fa/b9/0ae7d6f8e38c426ba52b658ce41483ab26ee8bc838fd2c151dc9567c809a/langchain_google_genai-2.1.6-py3-none-any.whl", hash = "sha256:2fba640cb4e86c2f2111deb6964e0918d0c4f4f1cedc1a28c4221ca3c1ec9bea", size = 47368 },
885
  ]
886
 
 
 
 
 
 
 
 
 
 
 
 
 
 
887
  [[package]]
888
  name = "langchain-openai"
889
  version = "0.3.27"
@@ -1027,26 +1124,38 @@ name = "makhfi-ai"
1027
  version = "0.1.0"
1028
  source = { virtual = "." }
1029
  dependencies = [
 
1030
  { name = "fastapi" },
1031
  { name = "ipykernel" },
1032
  { name = "langchain" },
 
1033
  { name = "langchain-google-genai" },
 
1034
  { name = "langchain-pinecone" },
1035
  { name = "langgraph" },
 
 
1036
  { name = "pinecone" },
 
1037
  { name = "python-dotenv" },
1038
  { name = "sqlmodel" },
1039
  ]
1040
 
1041
  [package.metadata]
1042
  requires-dist = [
 
1043
  { name = "fastapi", specifier = ">=0.115.14" },
1044
  { name = "ipykernel", specifier = ">=6.29.5" },
1045
  { name = "langchain", specifier = ">=0.3.26" },
 
1046
  { name = "langchain-google-genai", specifier = ">=2.1.6" },
 
1047
  { name = "langchain-pinecone", specifier = ">=0.2.8" },
1048
  { name = "langgraph", specifier = ">=0.5.0" },
 
 
1049
  { name = "pinecone", specifier = ">=7.3.0" },
 
1050
  { name = "python-dotenv", specifier = ">=1.1.1" },
1051
  { name = "sqlmodel", specifier = ">=0.0.24" },
1052
  ]
@@ -1063,6 +1172,18 @@ wheels = [
1063
  { url = "https://files.pythonhosted.org/packages/42/d7/1ec15b46af6af88f19b8e5ffea08fa375d433c998b8a7639e76935c14f1f/markdown_it_py-3.0.0-py3-none-any.whl", hash = "sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1", size = 87528 },
1064
  ]
1065
 
 
 
 
 
 
 
 
 
 
 
 
 
1066
  [[package]]
1067
  name = "matplotlib-inline"
1068
  version = "0.1.7"
@@ -1165,6 +1286,27 @@ wheels = [
1165
  { url = "https://files.pythonhosted.org/packages/d8/30/9aec301e9772b098c1f5c0ca0279237c9766d94b97802e9888010c64b0ed/multidict-6.6.3-py3-none-any.whl", hash = "sha256:8db10f29c7541fc5da4defd8cd697e1ca429db743fa716325f236079b96f775a", size = 12313 },
1166
  ]
1167
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1168
  [[package]]
1169
  name = "nest-asyncio"
1170
  version = "1.6.0"
@@ -1345,6 +1487,47 @@ wheels = [
1345
  { url = "https://files.pythonhosted.org/packages/88/ef/eb23f262cca3c0c4eb7ab1933c3b1f03d021f2c48f54763065b6f0e321be/packaging-24.2-py3-none-any.whl", hash = "sha256:09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759", size = 65451 },
1346
  ]
1347
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1348
  [[package]]
1349
  name = "parso"
1350
  version = "0.8.4"
@@ -1693,6 +1876,20 @@ wheels = [
1693
  { url = "https://files.pythonhosted.org/packages/32/56/8a7ca5d2cd2cda1d245d34b1c9a942920a718082ae8e54e5f3e5a58b7add/pydantic_core-2.33.2-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:329467cecfb529c925cf2bbd4d60d2c509bc2fb52a20c1045bf09bb70971a9c1", size = 2066757 },
1694
  ]
1695
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1696
  [[package]]
1697
  name = "pygments"
1698
  version = "2.19.2"
@@ -1702,6 +1899,15 @@ wheels = [
1702
  { url = "https://files.pythonhosted.org/packages/c7/21/705964c7812476f378728bdf590ca4b771ec72385c533964653c68e86bdc/pygments-2.19.2-py3-none-any.whl", hash = "sha256:86540386c03d588bb81d44bc3928634ff26449851e99741617ecb9037ee5ec0b", size = 1225217 },
1703
  ]
1704
 
 
 
 
 
 
 
 
 
 
1705
  [[package]]
1706
  name = "pytest"
1707
  version = "8.4.1"
@@ -1809,6 +2015,15 @@ wheels = [
1809
  { url = "https://files.pythonhosted.org/packages/5f/ed/539768cf28c661b5b068d66d96a2f155c4971a5d55684a514c1a0e0dec2f/python_dotenv-1.1.1-py3-none-any.whl", hash = "sha256:31f23644fe2602f88ff55e1f5c79ba497e01224ee7737937930c448e4d0e24dc", size = 20556 },
1810
  ]
1811
 
 
 
 
 
 
 
 
 
 
1812
  [[package]]
1813
  name = "pywin32"
1814
  version = "310"
@@ -1905,6 +2120,19 @@ wheels = [
1905
  { url = "https://files.pythonhosted.org/packages/be/8a/4a3764a68abc02e2fbb0668d225b6fda5cd39586dd099cee8b2ed6ab0452/pyzmq-27.0.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:9df43a2459cd3a3563404c1456b2c4c69564daa7dbaf15724c09821a3329ce46", size = 544726 },
1906
  ]
1907
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1908
  [[package]]
1909
  name = "regex"
1910
  version = "2024.11.6"
@@ -2119,11 +2347,11 @@ wheels = [
2119
 
2120
  [[package]]
2121
  name = "tenacity"
2122
- version = "9.1.2"
2123
  source = { registry = "https://pypi.org/simple" }
2124
- sdist = { url = "https://files.pythonhosted.org/packages/0a/d4/2b0cd0fe285e14b36db076e78c93766ff1d529d70408bd1d2a5a84f1d929/tenacity-9.1.2.tar.gz", hash = "sha256:1169d376c297e7de388d18b4481760d478b0e99a777cad3a9c86e556f4b697cb", size = 48036 }
2125
  wheels = [
2126
- { url = "https://files.pythonhosted.org/packages/e5/30/643397144bfbfec6f6ef821f36f33e57d35946c44a2352d3c9f0ae847619/tenacity-9.1.2-py3-none-any.whl", hash = "sha256:f77bf36710d8b73a50b2dd155c97b870017ad21afe6ab300326b0371b3b05138", size = 28248 },
2127
  ]
2128
 
2129
  [[package]]
@@ -2205,6 +2433,19 @@ wheels = [
2205
  { url = "https://files.pythonhosted.org/packages/69/e0/552843e0d356fbb5256d21449fa957fa4eff3bbc135a74a691ee70c7c5da/typing_extensions-4.14.0-py3-none-any.whl", hash = "sha256:a1514509136dd0b477638fc68d6a91497af5076466ad0fa6c338e44e359944af", size = 43839 },
2206
  ]
2207
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2208
  [[package]]
2209
  name = "typing-inspection"
2210
  version = "0.4.1"
@@ -2217,6 +2458,15 @@ wheels = [
2217
  { url = "https://files.pythonhosted.org/packages/17/69/cd203477f944c353c31bade965f880aa1061fd6bf05ded0726ca845b6ff7/typing_inspection-0.4.1-py3-none-any.whl", hash = "sha256:389055682238f53b04f7badcb49b989835495a96700ced5dab2d8feae4b26f51", size = 14552 },
2218
  ]
2219
 
 
 
 
 
 
 
 
 
 
2220
  [[package]]
2221
  name = "urllib3"
2222
  version = "1.26.20"
 
151
  { url = "https://files.pythonhosted.org/packages/25/8a/c46dcc25341b5bce5472c718902eb3d38600a903b14fa6aeecef3f21a46f/asttokens-3.0.0-py3-none-any.whl", hash = "sha256:e3078351a059199dd5138cb1c706e6430c05eff2ff136af5eb4790f9d28932e2", size = 26918 },
152
  ]
153
 
154
+ [[package]]
155
+ name = "async-timeout"
156
+ version = "5.0.1"
157
+ source = { registry = "https://pypi.org/simple" }
158
+ sdist = { url = "https://files.pythonhosted.org/packages/a5/ae/136395dfbfe00dfc94da3f3e136d0b13f394cba8f4841120e34226265780/async_timeout-5.0.1.tar.gz", hash = "sha256:d9321a7a3d5a6a5e187e824d2fa0793ce379a202935782d555d6e9d2735677d3", size = 9274 }
159
+ wheels = [
160
+ { url = "https://files.pythonhosted.org/packages/fe/ba/e2081de779ca30d473f21f5b30e0e737c438205440784c7dfc81efc2b029/async_timeout-5.0.1-py3-none-any.whl", hash = "sha256:39e3809566ff85354557ec2398b55e096c8364bacac9405a7a1fa429e77fe76c", size = 6233 },
161
+ ]
162
+
163
  [[package]]
164
  name = "attrs"
165
  version = "25.3.0"
 
301
  { url = "https://files.pythonhosted.org/packages/e6/75/49e5bfe642f71f272236b5b2d2691cf915a7283cc0ceda56357b61daa538/comm-0.2.2-py3-none-any.whl", hash = "sha256:e6fb86cb70ff661ee8c9c14e7d36d6de3b4066f1441be4063df9c5009f0a64d3", size = 7180 },
302
  ]
303
 
304
+ [[package]]
305
+ name = "dataclasses-json"
306
+ version = "0.6.7"
307
+ source = { registry = "https://pypi.org/simple" }
308
+ dependencies = [
309
+ { name = "marshmallow" },
310
+ { name = "typing-inspect" },
311
+ ]
312
+ sdist = { url = "https://files.pythonhosted.org/packages/64/a4/f71d9cf3a5ac257c993b5ca3f93df5f7fb395c725e7f1e6479d2514173c3/dataclasses_json-0.6.7.tar.gz", hash = "sha256:b6b3e528266ea45b9535223bc53ca645f5208833c29229e847b3f26a1cc55fc0", size = 32227 }
313
+ wheels = [
314
+ { url = "https://files.pythonhosted.org/packages/c3/be/d0d44e092656fe7a06b55e6103cbce807cdbdee17884a5367c68c9860853/dataclasses_json-0.6.7-py3-none-any.whl", hash = "sha256:0dbf33f26c8d5305befd61b39d2b3414e8a407bedc2834dea9b8d642666fb40a", size = 28686 },
315
+ ]
316
+
317
  [[package]]
318
  name = "debugpy"
319
  version = "1.8.14"
 
362
  { url = "https://files.pythonhosted.org/packages/7b/8f/c4d9bafc34ad7ad5d8dc16dd1347ee0e507a52c3adb6bfa8887e1c6a26ba/executing-2.2.0-py2.py3-none-any.whl", hash = "sha256:11387150cad388d62750327a53d3339fad4888b39a6fe233c3afbb54ecffd3aa", size = 26702 },
363
  ]
364
 
365
+ [[package]]
366
+ name = "falkordb"
367
+ version = "1.2.0"
368
+ source = { registry = "https://pypi.org/simple" }
369
+ dependencies = [
370
+ { name = "python-dateutil" },
371
+ { name = "redis" },
372
+ ]
373
+ sdist = { url = "https://files.pythonhosted.org/packages/9e/3b/2d846e877aec104841c523e99e1c584d4aa2423a0e31afee5b8369e3c8c5/falkordb-1.2.0.tar.gz", hash = "sha256:ce57365b86722d538e75aa5d438de67ecd8eb9478da612506d9812cd7f182d0b", size = 28976 }
374
+ wheels = [
375
+ { url = "https://files.pythonhosted.org/packages/39/81/1265e623c989bb8c12fe566645bad390d04e66fa62b84ca656e5bafce1f0/falkordb-1.2.0-py3-none-any.whl", hash = "sha256:7572d9cc377735d22efc52fe6fe73c7a435422c827b6ea3ca223a850a77be12e", size = 34737 },
376
+ ]
377
+
378
  [[package]]
379
  name = "fastapi"
380
  version = "0.115.14"
 
580
  { url = "https://files.pythonhosted.org/packages/5c/4f/aab73ecaa6b3086a4c89863d94cf26fa84cbff63f52ce9bc4342b3087a06/greenlet-3.2.3-cp314-cp314-win_amd64.whl", hash = "sha256:8c47aae8fbbfcf82cc13327ae802ba13c9c36753b67e760023fd116bc124a62a", size = 301236 },
581
  ]
582
 
583
+ [[package]]
584
+ name = "groq"
585
+ version = "0.29.0"
586
+ source = { registry = "https://pypi.org/simple" }
587
+ dependencies = [
588
+ { name = "anyio" },
589
+ { name = "distro" },
590
+ { name = "httpx" },
591
+ { name = "pydantic" },
592
+ { name = "sniffio" },
593
+ { name = "typing-extensions" },
594
+ ]
595
+ sdist = { url = "https://files.pythonhosted.org/packages/8c/d6/db0c61bad6ff6a2ba7083a943c62790f37969cb337d96a5a914cd3ac4311/groq-0.29.0.tar.gz", hash = "sha256:109dc4d696c05d44e4c2cd157652c4c6600c3e96f093f6e158facb5691e37847", size = 133989 }
596
+ wheels = [
597
+ { url = "https://files.pythonhosted.org/packages/a2/0b/ef7a92ec5ec23a7012975ed59ca3cef541d50a9f0d2dea947fe2723d011f/groq-0.29.0-py3-none-any.whl", hash = "sha256:03515ec46be1ef1feef0cd9d876b6f30a39ee2742e76516153d84acd7c97f23a", size = 130814 },
598
+ ]
599
+
600
  [[package]]
601
  name = "grpcio"
602
  version = "1.73.1"
 
686
  { url = "https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad", size = 73517 },
687
  ]
688
 
689
+ [[package]]
690
+ name = "httpx-sse"
691
+ version = "0.4.1"
692
+ source = { registry = "https://pypi.org/simple" }
693
+ sdist = { url = "https://files.pythonhosted.org/packages/6e/fa/66bd985dd0b7c109a3bcb89272ee0bfb7e2b4d06309ad7b38ff866734b2a/httpx_sse-0.4.1.tar.gz", hash = "sha256:8f44d34414bc7b21bf3602713005c5df4917884f76072479b21f68befa4ea26e", size = 12998 }
694
+ wheels = [
695
+ { url = "https://files.pythonhosted.org/packages/25/0a/6269e3473b09aed2dab8aa1a600c70f31f00ae1349bee30658f7e358a159/httpx_sse-0.4.1-py3-none-any.whl", hash = "sha256:cba42174344c3a5b06f255ce65b350880f962d99ead85e776f23c6618a377a37", size = 8054 },
696
+ ]
697
+
698
  [[package]]
699
  name = "idna"
700
  version = "3.10"
 
912
  { url = "https://files.pythonhosted.org/packages/f1/f2/c09a2e383283e3af1db669ab037ac05a45814f4b9c472c48dc24c0cef039/langchain-0.3.26-py3-none-any.whl", hash = "sha256:361bb2e61371024a8c473da9f9c55f4ee50f269c5ab43afdb2b1309cb7ac36cf", size = 1012336 },
913
  ]
914
 
915
+ [[package]]
916
+ name = "langchain-community"
917
+ version = "0.3.27"
918
+ source = { registry = "https://pypi.org/simple" }
919
+ dependencies = [
920
+ { name = "aiohttp" },
921
+ { name = "dataclasses-json" },
922
+ { name = "httpx-sse" },
923
+ { name = "langchain" },
924
+ { name = "langchain-core" },
925
+ { name = "langsmith" },
926
+ { name = "numpy" },
927
+ { name = "pydantic-settings" },
928
+ { name = "pyyaml" },
929
+ { name = "requests" },
930
+ { name = "sqlalchemy" },
931
+ { name = "tenacity" },
932
+ ]
933
+ sdist = { url = "https://files.pythonhosted.org/packages/5c/76/200494f6de488217a196c4369e665d26b94c8c3642d46e2fd62f9daf0a3a/langchain_community-0.3.27.tar.gz", hash = "sha256:e1037c3b9da0c6d10bf06e838b034eb741e016515c79ef8f3f16e53ead33d882", size = 33237737 }
934
+ wheels = [
935
+ { url = "https://files.pythonhosted.org/packages/c8/bc/f8c7dae8321d37ed39ac9d7896617c4203248240a4835b136e3724b3bb62/langchain_community-0.3.27-py3-none-any.whl", hash = "sha256:581f97b795f9633da738ea95da9cb78f8879b538090c9b7a68c0aed49c828f0d", size = 2530442 },
936
+ ]
937
+
938
  [[package]]
939
  name = "langchain-core"
940
  version = "0.3.67"
 
968
  { url = "https://files.pythonhosted.org/packages/fa/b9/0ae7d6f8e38c426ba52b658ce41483ab26ee8bc838fd2c151dc9567c809a/langchain_google_genai-2.1.6-py3-none-any.whl", hash = "sha256:2fba640cb4e86c2f2111deb6964e0918d0c4f4f1cedc1a28c4221ca3c1ec9bea", size = 47368 },
969
  ]
970
 
971
+ [[package]]
972
+ name = "langchain-groq"
973
+ version = "0.3.5"
974
+ source = { registry = "https://pypi.org/simple" }
975
+ dependencies = [
976
+ { name = "groq" },
977
+ { name = "langchain-core" },
978
+ ]
979
+ sdist = { url = "https://files.pythonhosted.org/packages/45/05/3fb16fcc1aedb63cee7d7615de501538e927ad632e5cd5fb8538e7cf077b/langchain_groq-0.3.5.tar.gz", hash = "sha256:aadef09287847ff6b02bc6d0d070936e0c37a8d82b4724495b650b069c9fc4e6", size = 23280 }
980
+ wheels = [
981
+ { url = "https://files.pythonhosted.org/packages/ba/b0/1381a66f8b53e4e3e7389d4e2ac7a528023d0d41b31ebe1397970e83114f/langchain_groq-0.3.5-py3-none-any.whl", hash = "sha256:0f86559ccd3838015aa8e6ff3047ae08d6204eb3fe2e8386d21a21d907c2acf8", size = 15958 },
982
+ ]
983
+
984
  [[package]]
985
  name = "langchain-openai"
986
  version = "0.3.27"
 
1124
  version = "0.1.0"
1125
  source = { virtual = "." }
1126
  dependencies = [
1127
+ { name = "falkordb" },
1128
  { name = "fastapi" },
1129
  { name = "ipykernel" },
1130
  { name = "langchain" },
1131
+ { name = "langchain-community" },
1132
  { name = "langchain-google-genai" },
1133
+ { name = "langchain-groq" },
1134
  { name = "langchain-pinecone" },
1135
  { name = "langgraph" },
1136
+ { name = "neo4j" },
1137
+ { name = "pandas" },
1138
  { name = "pinecone" },
1139
+ { name = "pydantic-settings" },
1140
  { name = "python-dotenv" },
1141
  { name = "sqlmodel" },
1142
  ]
1143
 
1144
  [package.metadata]
1145
  requires-dist = [
1146
+ { name = "falkordb", specifier = ">=1.2.0" },
1147
  { name = "fastapi", specifier = ">=0.115.14" },
1148
  { name = "ipykernel", specifier = ">=6.29.5" },
1149
  { name = "langchain", specifier = ">=0.3.26" },
1150
+ { name = "langchain-community", specifier = ">=0.3.27" },
1151
  { name = "langchain-google-genai", specifier = ">=2.1.6" },
1152
+ { name = "langchain-groq", specifier = ">=0.3.5" },
1153
  { name = "langchain-pinecone", specifier = ">=0.2.8" },
1154
  { name = "langgraph", specifier = ">=0.5.0" },
1155
+ { name = "neo4j", specifier = ">=5.28.1" },
1156
+ { name = "pandas", specifier = ">=2.3.0" },
1157
  { name = "pinecone", specifier = ">=7.3.0" },
1158
+ { name = "pydantic-settings", specifier = ">=2.10.1" },
1159
  { name = "python-dotenv", specifier = ">=1.1.1" },
1160
  { name = "sqlmodel", specifier = ">=0.0.24" },
1161
  ]
 
1172
  { url = "https://files.pythonhosted.org/packages/42/d7/1ec15b46af6af88f19b8e5ffea08fa375d433c998b8a7639e76935c14f1f/markdown_it_py-3.0.0-py3-none-any.whl", hash = "sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1", size = 87528 },
1173
  ]
1174
 
1175
+ [[package]]
1176
+ name = "marshmallow"
1177
+ version = "3.26.1"
1178
+ source = { registry = "https://pypi.org/simple" }
1179
+ dependencies = [
1180
+ { name = "packaging" },
1181
+ ]
1182
+ sdist = { url = "https://files.pythonhosted.org/packages/ab/5e/5e53d26b42ab75491cda89b871dab9e97c840bf12c63ec58a1919710cd06/marshmallow-3.26.1.tar.gz", hash = "sha256:e6d8affb6cb61d39d26402096dc0aee12d5a26d490a121f118d2e81dc0719dc6", size = 221825 }
1183
+ wheels = [
1184
+ { url = "https://files.pythonhosted.org/packages/34/75/51952c7b2d3873b44a0028b1bd26a25078c18f92f256608e8d1dc61b39fd/marshmallow-3.26.1-py3-none-any.whl", hash = "sha256:3350409f20a70a7e4e11a27661187b77cdcaeb20abca41c1454fe33636bea09c", size = 50878 },
1185
+ ]
1186
+
1187
  [[package]]
1188
  name = "matplotlib-inline"
1189
  version = "0.1.7"
 
1286
  { url = "https://files.pythonhosted.org/packages/d8/30/9aec301e9772b098c1f5c0ca0279237c9766d94b97802e9888010c64b0ed/multidict-6.6.3-py3-none-any.whl", hash = "sha256:8db10f29c7541fc5da4defd8cd697e1ca429db743fa716325f236079b96f775a", size = 12313 },
1287
  ]
1288
 
1289
+ [[package]]
1290
+ name = "mypy-extensions"
1291
+ version = "1.1.0"
1292
+ source = { registry = "https://pypi.org/simple" }
1293
+ sdist = { url = "https://files.pythonhosted.org/packages/a2/6e/371856a3fb9d31ca8dac321cda606860fa4548858c0cc45d9d1d4ca2628b/mypy_extensions-1.1.0.tar.gz", hash = "sha256:52e68efc3284861e772bbcd66823fde5ae21fd2fdb51c62a211403730b916558", size = 6343 }
1294
+ wheels = [
1295
+ { url = "https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl", hash = "sha256:1be4cccdb0f2482337c4743e60421de3a356cd97508abadd57d47403e94f5505", size = 4963 },
1296
+ ]
1297
+
1298
+ [[package]]
1299
+ name = "neo4j"
1300
+ version = "5.28.1"
1301
+ source = { registry = "https://pypi.org/simple" }
1302
+ dependencies = [
1303
+ { name = "pytz" },
1304
+ ]
1305
+ sdist = { url = "https://files.pythonhosted.org/packages/4b/20/733dac16f7cedc80b23093415822c9763302519cba0e7c8bcdb5c01fc512/neo4j-5.28.1.tar.gz", hash = "sha256:ae8e37a1d895099062c75bc359b2cce62099baac7be768d0eba7180c1298e214", size = 231094 }
1306
+ wheels = [
1307
+ { url = "https://files.pythonhosted.org/packages/6a/57/94225fe5e9dabdc0ff60c88cbfcedf11277f4b34e7ab1373d3e62dbdd207/neo4j-5.28.1-py3-none-any.whl", hash = "sha256:6755ef9e5f4e14b403aef1138fb6315b120631a0075c138b5ddb2a06b87b09fd", size = 312258 },
1308
+ ]
1309
+
1310
  [[package]]
1311
  name = "nest-asyncio"
1312
  version = "1.6.0"
 
1487
  { url = "https://files.pythonhosted.org/packages/88/ef/eb23f262cca3c0c4eb7ab1933c3b1f03d021f2c48f54763065b6f0e321be/packaging-24.2-py3-none-any.whl", hash = "sha256:09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759", size = 65451 },
1488
  ]
1489
 
1490
+ [[package]]
1491
+ name = "pandas"
1492
+ version = "2.3.0"
1493
+ source = { registry = "https://pypi.org/simple" }
1494
+ dependencies = [
1495
+ { name = "numpy" },
1496
+ { name = "python-dateutil" },
1497
+ { name = "pytz" },
1498
+ { name = "tzdata" },
1499
+ ]
1500
+ sdist = { url = "https://files.pythonhosted.org/packages/72/51/48f713c4c728d7c55ef7444ba5ea027c26998d96d1a40953b346438602fc/pandas-2.3.0.tar.gz", hash = "sha256:34600ab34ebf1131a7613a260a61dbe8b62c188ec0ea4c296da7c9a06b004133", size = 4484490 }
1501
+ wheels = [
1502
+ { url = "https://files.pythonhosted.org/packages/96/1e/ba313812a699fe37bf62e6194265a4621be11833f5fce46d9eae22acb5d7/pandas-2.3.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:8adff9f138fc614347ff33812046787f7d43b3cef7c0f0171b3340cae333f6ca", size = 11551836 },
1503
+ { url = "https://files.pythonhosted.org/packages/1b/cc/0af9c07f8d714ea563b12383a7e5bde9479cf32413ee2f346a9c5a801f22/pandas-2.3.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e5f08eb9a445d07720776df6e641975665c9ea12c9d8a331e0f6890f2dcd76ef", size = 10807977 },
1504
+ { url = "https://files.pythonhosted.org/packages/ee/3e/8c0fb7e2cf4a55198466ced1ca6a9054ae3b7e7630df7757031df10001fd/pandas-2.3.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fa35c266c8cd1a67d75971a1912b185b492d257092bdd2709bbdebe574ed228d", size = 11788230 },
1505
+ { url = "https://files.pythonhosted.org/packages/14/22/b493ec614582307faf3f94989be0f7f0a71932ed6f56c9a80c0bb4a3b51e/pandas-2.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:14a0cc77b0f089d2d2ffe3007db58f170dae9b9f54e569b299db871a3ab5bf46", size = 12370423 },
1506
+ { url = "https://files.pythonhosted.org/packages/9f/74/b012addb34cda5ce855218a37b258c4e056a0b9b334d116e518d72638737/pandas-2.3.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:c06f6f144ad0a1bf84699aeea7eff6068ca5c63ceb404798198af7eb86082e33", size = 12990594 },
1507
+ { url = "https://files.pythonhosted.org/packages/95/81/b310e60d033ab64b08e66c635b94076488f0b6ce6a674379dd5b224fc51c/pandas-2.3.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:ed16339bc354a73e0a609df36d256672c7d296f3f767ac07257801aa064ff73c", size = 13745952 },
1508
+ { url = "https://files.pythonhosted.org/packages/25/ac/f6ee5250a8881b55bd3aecde9b8cfddea2f2b43e3588bca68a4e9aaf46c8/pandas-2.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:fa07e138b3f6c04addfeaf56cc7fdb96c3b68a3fe5e5401251f231fce40a0d7a", size = 11094534 },
1509
+ { url = "https://files.pythonhosted.org/packages/94/46/24192607058dd607dbfacdd060a2370f6afb19c2ccb617406469b9aeb8e7/pandas-2.3.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:2eb4728a18dcd2908c7fccf74a982e241b467d178724545a48d0caf534b38ebf", size = 11573865 },
1510
+ { url = "https://files.pythonhosted.org/packages/9f/cc/ae8ea3b800757a70c9fdccc68b67dc0280a6e814efcf74e4211fd5dea1ca/pandas-2.3.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b9d8c3187be7479ea5c3d30c32a5d73d62a621166675063b2edd21bc47614027", size = 10702154 },
1511
+ { url = "https://files.pythonhosted.org/packages/d8/ba/a7883d7aab3d24c6540a2768f679e7414582cc389876d469b40ec749d78b/pandas-2.3.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9ff730713d4c4f2f1c860e36c005c7cefc1c7c80c21c0688fd605aa43c9fcf09", size = 11262180 },
1512
+ { url = "https://files.pythonhosted.org/packages/01/a5/931fc3ad333d9d87b10107d948d757d67ebcfc33b1988d5faccc39c6845c/pandas-2.3.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba24af48643b12ffe49b27065d3babd52702d95ab70f50e1b34f71ca703e2c0d", size = 11991493 },
1513
+ { url = "https://files.pythonhosted.org/packages/d7/bf/0213986830a92d44d55153c1d69b509431a972eb73f204242988c4e66e86/pandas-2.3.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:404d681c698e3c8a40a61d0cd9412cc7364ab9a9cc6e144ae2992e11a2e77a20", size = 12470733 },
1514
+ { url = "https://files.pythonhosted.org/packages/a4/0e/21eb48a3a34a7d4bac982afc2c4eb5ab09f2d988bdf29d92ba9ae8e90a79/pandas-2.3.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:6021910b086b3ca756755e86ddc64e0ddafd5e58e076c72cb1585162e5ad259b", size = 13212406 },
1515
+ { url = "https://files.pythonhosted.org/packages/1f/d9/74017c4eec7a28892d8d6e31ae9de3baef71f5a5286e74e6b7aad7f8c837/pandas-2.3.0-cp312-cp312-win_amd64.whl", hash = "sha256:094e271a15b579650ebf4c5155c05dcd2a14fd4fdd72cf4854b2f7ad31ea30be", size = 10976199 },
1516
+ { url = "https://files.pythonhosted.org/packages/d3/57/5cb75a56a4842bbd0511c3d1c79186d8315b82dac802118322b2de1194fe/pandas-2.3.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:2c7e2fc25f89a49a11599ec1e76821322439d90820108309bf42130d2f36c983", size = 11518913 },
1517
+ { url = "https://files.pythonhosted.org/packages/05/01/0c8785610e465e4948a01a059562176e4c8088aa257e2e074db868f86d4e/pandas-2.3.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:c6da97aeb6a6d233fb6b17986234cc723b396b50a3c6804776351994f2a658fd", size = 10655249 },
1518
+ { url = "https://files.pythonhosted.org/packages/e8/6a/47fd7517cd8abe72a58706aab2b99e9438360d36dcdb052cf917b7bf3bdc/pandas-2.3.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bb32dc743b52467d488e7a7c8039b821da2826a9ba4f85b89ea95274f863280f", size = 11328359 },
1519
+ { url = "https://files.pythonhosted.org/packages/2a/b3/463bfe819ed60fb7e7ddffb4ae2ee04b887b3444feee6c19437b8f834837/pandas-2.3.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:213cd63c43263dbb522c1f8a7c9d072e25900f6975596f883f4bebd77295d4f3", size = 12024789 },
1520
+ { url = "https://files.pythonhosted.org/packages/04/0c/e0704ccdb0ac40aeb3434d1c641c43d05f75c92e67525df39575ace35468/pandas-2.3.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:1d2b33e68d0ce64e26a4acc2e72d747292084f4e8db4c847c6f5f6cbe56ed6d8", size = 12480734 },
1521
+ { url = "https://files.pythonhosted.org/packages/e9/df/815d6583967001153bb27f5cf075653d69d51ad887ebbf4cfe1173a1ac58/pandas-2.3.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:430a63bae10b5086995db1b02694996336e5a8ac9a96b4200572b413dfdfccb9", size = 13223381 },
1522
+ { url = "https://files.pythonhosted.org/packages/79/88/ca5973ed07b7f484c493e941dbff990861ca55291ff7ac67c815ce347395/pandas-2.3.0-cp313-cp313-win_amd64.whl", hash = "sha256:4930255e28ff5545e2ca404637bcc56f031893142773b3468dc021c6c32a1390", size = 10970135 },
1523
+ { url = "https://files.pythonhosted.org/packages/24/fb/0994c14d1f7909ce83f0b1fb27958135513c4f3f2528bde216180aa73bfc/pandas-2.3.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:f925f1ef673b4bd0271b1809b72b3270384f2b7d9d14a189b12b7fc02574d575", size = 12141356 },
1524
+ { url = "https://files.pythonhosted.org/packages/9d/a2/9b903e5962134497ac4f8a96f862ee3081cb2506f69f8e4778ce3d9c9d82/pandas-2.3.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:e78ad363ddb873a631e92a3c063ade1ecfb34cae71e9a2be6ad100f875ac1042", size = 11474674 },
1525
+ { url = "https://files.pythonhosted.org/packages/81/3a/3806d041bce032f8de44380f866059437fb79e36d6b22c82c187e65f765b/pandas-2.3.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:951805d146922aed8357e4cc5671b8b0b9be1027f0619cea132a9f3f65f2f09c", size = 11439876 },
1526
+ { url = "https://files.pythonhosted.org/packages/15/aa/3fc3181d12b95da71f5c2537c3e3b3af6ab3a8c392ab41ebb766e0929bc6/pandas-2.3.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1a881bc1309f3fce34696d07b00f13335c41f5f5a8770a33b09ebe23261cfc67", size = 11966182 },
1527
+ { url = "https://files.pythonhosted.org/packages/37/e7/e12f2d9b0a2c4a2cc86e2aabff7ccfd24f03e597d770abfa2acd313ee46b/pandas-2.3.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:e1991bbb96f4050b09b5f811253c4f3cf05ee89a589379aa36cd623f21a31d6f", size = 12547686 },
1528
+ { url = "https://files.pythonhosted.org/packages/39/c2/646d2e93e0af70f4e5359d870a63584dacbc324b54d73e6b3267920ff117/pandas-2.3.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:bb3be958022198531eb7ec2008cfc78c5b1eed51af8600c6c5d9160d89d8d249", size = 13231847 },
1529
+ ]
1530
+
1531
  [[package]]
1532
  name = "parso"
1533
  version = "0.8.4"
 
1876
  { url = "https://files.pythonhosted.org/packages/32/56/8a7ca5d2cd2cda1d245d34b1c9a942920a718082ae8e54e5f3e5a58b7add/pydantic_core-2.33.2-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:329467cecfb529c925cf2bbd4d60d2c509bc2fb52a20c1045bf09bb70971a9c1", size = 2066757 },
1877
  ]
1878
 
1879
+ [[package]]
1880
+ name = "pydantic-settings"
1881
+ version = "2.10.1"
1882
+ source = { registry = "https://pypi.org/simple" }
1883
+ dependencies = [
1884
+ { name = "pydantic" },
1885
+ { name = "python-dotenv" },
1886
+ { name = "typing-inspection" },
1887
+ ]
1888
+ sdist = { url = "https://files.pythonhosted.org/packages/68/85/1ea668bbab3c50071ca613c6ab30047fb36ab0da1b92fa8f17bbc38fd36c/pydantic_settings-2.10.1.tar.gz", hash = "sha256:06f0062169818d0f5524420a360d632d5857b83cffd4d42fe29597807a1614ee", size = 172583 }
1889
+ wheels = [
1890
+ { url = "https://files.pythonhosted.org/packages/58/f0/427018098906416f580e3cf1366d3b1abfb408a0652e9f31600c24a1903c/pydantic_settings-2.10.1-py3-none-any.whl", hash = "sha256:a60952460b99cf661dc25c29c0ef171721f98bfcb52ef8d9ea4c943d7c8cc796", size = 45235 },
1891
+ ]
1892
+
1893
  [[package]]
1894
  name = "pygments"
1895
  version = "2.19.2"
 
1899
  { url = "https://files.pythonhosted.org/packages/c7/21/705964c7812476f378728bdf590ca4b771ec72385c533964653c68e86bdc/pygments-2.19.2-py3-none-any.whl", hash = "sha256:86540386c03d588bb81d44bc3928634ff26449851e99741617ecb9037ee5ec0b", size = 1225217 },
1900
  ]
1901
 
1902
+ [[package]]
1903
+ name = "pyjwt"
1904
+ version = "2.9.0"
1905
+ source = { registry = "https://pypi.org/simple" }
1906
+ sdist = { url = "https://files.pythonhosted.org/packages/fb/68/ce067f09fca4abeca8771fe667d89cc347d1e99da3e093112ac329c6020e/pyjwt-2.9.0.tar.gz", hash = "sha256:7e1e5b56cc735432a7369cbfa0efe50fa113ebecdc04ae6922deba8b84582d0c", size = 78825 }
1907
+ wheels = [
1908
+ { url = "https://files.pythonhosted.org/packages/79/84/0fdf9b18ba31d69877bd39c9cd6052b47f3761e9910c15de788e519f079f/PyJWT-2.9.0-py3-none-any.whl", hash = "sha256:3b02fb0f44517787776cf48f2ae25d8e14f300e6d7545a4315cee571a415e850", size = 22344 },
1909
+ ]
1910
+
1911
  [[package]]
1912
  name = "pytest"
1913
  version = "8.4.1"
 
2015
  { url = "https://files.pythonhosted.org/packages/5f/ed/539768cf28c661b5b068d66d96a2f155c4971a5d55684a514c1a0e0dec2f/python_dotenv-1.1.1-py3-none-any.whl", hash = "sha256:31f23644fe2602f88ff55e1f5c79ba497e01224ee7737937930c448e4d0e24dc", size = 20556 },
2016
  ]
2017
 
2018
+ [[package]]
2019
+ name = "pytz"
2020
+ version = "2025.2"
2021
+ source = { registry = "https://pypi.org/simple" }
2022
+ sdist = { url = "https://files.pythonhosted.org/packages/f8/bf/abbd3cdfb8fbc7fb3d4d38d320f2441b1e7cbe29be4f23797b4a2b5d8aac/pytz-2025.2.tar.gz", hash = "sha256:360b9e3dbb49a209c21ad61809c7fb453643e048b38924c765813546746e81c3", size = 320884 }
2023
+ wheels = [
2024
+ { url = "https://files.pythonhosted.org/packages/81/c4/34e93fe5f5429d7570ec1fa436f1986fb1f00c3e0f43a589fe2bbcd22c3f/pytz-2025.2-py2.py3-none-any.whl", hash = "sha256:5ddf76296dd8c44c26eb8f4b6f35488f3ccbf6fbbd7adee0b7262d43f0ec2f00", size = 509225 },
2025
+ ]
2026
+
2027
  [[package]]
2028
  name = "pywin32"
2029
  version = "310"
 
2120
  { url = "https://files.pythonhosted.org/packages/be/8a/4a3764a68abc02e2fbb0668d225b6fda5cd39586dd099cee8b2ed6ab0452/pyzmq-27.0.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:9df43a2459cd3a3563404c1456b2c4c69564daa7dbaf15724c09821a3329ce46", size = 544726 },
2121
  ]
2122
 
2123
+ [[package]]
2124
+ name = "redis"
2125
+ version = "5.3.0"
2126
+ source = { registry = "https://pypi.org/simple" }
2127
+ dependencies = [
2128
+ { name = "async-timeout", marker = "python_full_version < '3.11.3'" },
2129
+ { name = "pyjwt" },
2130
+ ]
2131
+ sdist = { url = "https://files.pythonhosted.org/packages/71/dd/2b37032f4119dff2a2f9bbcaade03221b100ba26051bb96e275de3e5db7a/redis-5.3.0.tar.gz", hash = "sha256:8d69d2dde11a12dc85d0dbf5c45577a5af048e2456f7077d87ad35c1c81c310e", size = 4626288 }
2132
+ wheels = [
2133
+ { url = "https://files.pythonhosted.org/packages/45/b0/aa601efe12180ba492b02e270554877e68467e66bda5d73e51eaa8ecc78a/redis-5.3.0-py3-none-any.whl", hash = "sha256:f1deeca1ea2ef25c1e4e46b07f4ea1275140526b1feea4c6459c0ec27a10ef83", size = 272836 },
2134
+ ]
2135
+
2136
  [[package]]
2137
  name = "regex"
2138
  version = "2024.11.6"
 
2347
 
2348
  [[package]]
2349
  name = "tenacity"
2350
+ version = "8.5.0"
2351
  source = { registry = "https://pypi.org/simple" }
2352
+ sdist = { url = "https://files.pythonhosted.org/packages/a3/4d/6a19536c50b849338fcbe9290d562b52cbdcf30d8963d3588a68a4107df1/tenacity-8.5.0.tar.gz", hash = "sha256:8bc6c0c8a09b31e6cad13c47afbed1a567518250a9a171418582ed8d9c20ca78", size = 47309 }
2353
  wheels = [
2354
+ { url = "https://files.pythonhosted.org/packages/d2/3f/8ba87d9e287b9d385a02a7114ddcef61b26f86411e121c9003eb509a1773/tenacity-8.5.0-py3-none-any.whl", hash = "sha256:b594c2a5945830c267ce6b79a166228323ed52718f30302c1359836112346687", size = 28165 },
2355
  ]
2356
 
2357
  [[package]]
 
2433
  { url = "https://files.pythonhosted.org/packages/69/e0/552843e0d356fbb5256d21449fa957fa4eff3bbc135a74a691ee70c7c5da/typing_extensions-4.14.0-py3-none-any.whl", hash = "sha256:a1514509136dd0b477638fc68d6a91497af5076466ad0fa6c338e44e359944af", size = 43839 },
2434
  ]
2435
 
2436
+ [[package]]
2437
+ name = "typing-inspect"
2438
+ version = "0.9.0"
2439
+ source = { registry = "https://pypi.org/simple" }
2440
+ dependencies = [
2441
+ { name = "mypy-extensions" },
2442
+ { name = "typing-extensions" },
2443
+ ]
2444
+ sdist = { url = "https://files.pythonhosted.org/packages/dc/74/1789779d91f1961fa9438e9a8710cdae6bd138c80d7303996933d117264a/typing_inspect-0.9.0.tar.gz", hash = "sha256:b23fc42ff6f6ef6954e4852c1fb512cdd18dbea03134f91f856a95ccc9461f78", size = 13825 }
2445
+ wheels = [
2446
+ { url = "https://files.pythonhosted.org/packages/65/f3/107a22063bf27bdccf2024833d3445f4eea42b2e598abfbd46f6a63b6cb0/typing_inspect-0.9.0-py3-none-any.whl", hash = "sha256:9ee6fc59062311ef8547596ab6b955e1b8aa46242d854bfc78f4f6b0eff35f9f", size = 8827 },
2447
+ ]
2448
+
2449
  [[package]]
2450
  name = "typing-inspection"
2451
  version = "0.4.1"
 
2458
  { url = "https://files.pythonhosted.org/packages/17/69/cd203477f944c353c31bade965f880aa1061fd6bf05ded0726ca845b6ff7/typing_inspection-0.4.1-py3-none-any.whl", hash = "sha256:389055682238f53b04f7badcb49b989835495a96700ced5dab2d8feae4b26f51", size = 14552 },
2459
  ]
2460
 
2461
+ [[package]]
2462
+ name = "tzdata"
2463
+ version = "2025.2"
2464
+ source = { registry = "https://pypi.org/simple" }
2465
+ sdist = { url = "https://files.pythonhosted.org/packages/95/32/1a225d6164441be760d75c2c42e2780dc0873fe382da3e98a2e1e48361e5/tzdata-2025.2.tar.gz", hash = "sha256:b60a638fcc0daffadf82fe0f57e53d06bdec2f36c4df66280ae79bce6bd6f2b9", size = 196380 }
2466
+ wheels = [
2467
+ { url = "https://files.pythonhosted.org/packages/5c/23/c7abc0ca0a1526a0774eca151daeb8de62ec457e77262b66b359c3c7679e/tzdata-2025.2-py2.py3-none-any.whl", hash = "sha256:1a403fada01ff9221ca8044d701868fa132215d84beb92242d9acd2147f667a8", size = 347839 },
2468
+ ]
2469
+
2470
  [[package]]
2471
  name = "urllib3"
2472
  version = "1.26.20"