Spaces:
No application file
No application file
first pass at gradio integration
Browse files- api/event_handlers/gradio_handler.py +55 -0
- api/event_handlers/print_handler.py +5 -1
- api/poetry.lock +830 -1
- api/pyproject.toml +2 -0
- api/scripts/freeplay_playground.py +27 -0
- api/scripts/generate_freeplay_dataset.py +38 -0
- api/server_gradio.py +134 -0
- api/utils/freeplay_helpers.py +58 -0
- api/utils/zep_helpers.py +1 -1
- api/workflows/base.py +8 -6
- docker-compose.yaml +2 -1
api/event_handlers/gradio_handler.py
ADDED
@@ -0,0 +1,55 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import queue
|
2 |
+
from colorama import Fore, Style
|
3 |
+
from langchain_core.callbacks import AsyncCallbackHandler
|
4 |
+
from langchain_core.outputs.llm_result import LLMResult
|
5 |
+
from typing import List
|
6 |
+
from langchain_core.messages import BaseMessage
|
7 |
+
|
8 |
+
|
9 |
+
class GradioEventHandler(AsyncCallbackHandler):
|
10 |
+
"""
|
11 |
+
Example async event handler: prints streaming tokens and tool results.
|
12 |
+
Replace with websocket or other side effects as needed.
|
13 |
+
"""
|
14 |
+
|
15 |
+
def __init__(self, *args, **kwargs):
|
16 |
+
super().__init__(*args, **kwargs)
|
17 |
+
self.queue = queue.Queue()
|
18 |
+
|
19 |
+
def info_box(self, message: str):
|
20 |
+
self.queue.put(
|
21 |
+
{
|
22 |
+
"type": "info",
|
23 |
+
"message": message,
|
24 |
+
}
|
25 |
+
)
|
26 |
+
|
27 |
+
async def on_chat_model_start(self, *args, **kwargs):
|
28 |
+
self.info_box('[CHAT START]')
|
29 |
+
|
30 |
+
async def on_llm_new_token(self, token: str, **kwargs):
|
31 |
+
if token:
|
32 |
+
self.queue.put(token)
|
33 |
+
|
34 |
+
async def on_llm_end(self, result: LLMResult, *args, **kwargs):
|
35 |
+
if self.is_chat_stream_end(result):
|
36 |
+
self.queue.put(None)
|
37 |
+
|
38 |
+
async def on_tool_end(self, output: any, **kwargs):
|
39 |
+
print(f"\n{Fore.CYAN}[TOOL RESULT] {output}{Style.RESET_ALL}")
|
40 |
+
|
41 |
+
async def on_tool_start(self, input: any, *args, **kwargs):
|
42 |
+
self.info_box(f"[TOOL START]")
|
43 |
+
|
44 |
+
async def on_workflow_end(self, state, *args, **kwargs):
|
45 |
+
print(f"\n{Fore.CYAN}[WORKFLOW END]{Style.RESET_ALL}")
|
46 |
+
for msg in state["messages"]:
|
47 |
+
print(f'{Fore.YELLOW}{msg.content}{Style.RESET_ALL}')
|
48 |
+
|
49 |
+
@staticmethod
|
50 |
+
def is_chat_stream_end(result: LLMResult) -> bool:
|
51 |
+
try:
|
52 |
+
content = result.generations[0][0].message.content
|
53 |
+
return bool(content and content.strip())
|
54 |
+
except (IndexError, AttributeError):
|
55 |
+
return False
|
api/event_handlers/print_handler.py
CHANGED
@@ -1,7 +1,8 @@
|
|
1 |
from colorama import Fore, Style
|
2 |
from langchain_core.callbacks import AsyncCallbackHandler
|
3 |
from langchain_core.outputs.llm_result import LLMResult
|
4 |
-
|
|
|
5 |
|
6 |
class PrintEventHandler(AsyncCallbackHandler):
|
7 |
"""
|
@@ -30,6 +31,9 @@ class PrintEventHandler(AsyncCallbackHandler):
|
|
30 |
async def on_tool_start(self, input: any, *args, **kwargs):
|
31 |
print(f"\n{Fore.CYAN}[TOOL START]{Style.RESET_ALL}")
|
32 |
|
|
|
|
|
|
|
33 |
@staticmethod
|
34 |
def is_chat_stream_end(result: LLMResult) -> bool:
|
35 |
try:
|
|
|
1 |
from colorama import Fore, Style
|
2 |
from langchain_core.callbacks import AsyncCallbackHandler
|
3 |
from langchain_core.outputs.llm_result import LLMResult
|
4 |
+
from typing import List
|
5 |
+
from langchain_core.messages import BaseMessage
|
6 |
|
7 |
class PrintEventHandler(AsyncCallbackHandler):
|
8 |
"""
|
|
|
31 |
async def on_tool_start(self, input: any, *args, **kwargs):
|
32 |
print(f"\n{Fore.CYAN}[TOOL START]{Style.RESET_ALL}")
|
33 |
|
34 |
+
async def on_workflow_end(self, state, *args, **kwargs):
|
35 |
+
print(f"\n{Fore.CYAN}[WORKFLOW END]{Style.RESET_ALL}")
|
36 |
+
|
37 |
@staticmethod
|
38 |
def is_chat_stream_end(result: LLMResult) -> bool:
|
39 |
try:
|
api/poetry.lock
CHANGED
@@ -1,5 +1,17 @@
|
|
1 |
# This file is automatically @generated by Poetry 2.1.3 and should not be changed by hand.
|
2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3 |
[[package]]
|
4 |
name = "annotated-types"
|
5 |
version = "0.7.0"
|
@@ -48,6 +60,50 @@ files = [
|
|
48 |
{file = "asyncio-3.4.3.tar.gz", hash = "sha256:83360ff8bc97980e4ff25c964c7bd3923d333d177aa4f7fb736b019f26c7cb41"},
|
49 |
]
|
50 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
51 |
[[package]]
|
52 |
name = "certifi"
|
53 |
version = "2025.1.31"
|
@@ -270,6 +326,21 @@ files = [
|
|
270 |
{file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"},
|
271 |
]
|
272 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
273 |
[[package]]
|
274 |
name = "debugpy"
|
275 |
version = "1.8.13"
|
@@ -339,6 +410,160 @@ typing-extensions = ">=4.8.0"
|
|
339 |
all = ["email-validator (>=2.0.0)", "fastapi-cli[standard] (>=0.0.5)", "httpx (>=0.23.0)", "itsdangerous (>=1.1.0)", "jinja2 (>=3.1.5)", "orjson (>=3.2.1)", "pydantic-extra-types (>=2.0.0)", "pydantic-settings (>=2.0.0)", "python-multipart (>=0.0.18)", "pyyaml (>=5.3.1)", "ujson (>=4.0.1,!=4.0.2,!=4.1.0,!=4.2.0,!=4.3.0,!=5.0.0,!=5.1.0)", "uvicorn[standard] (>=0.12.0)"]
|
340 |
standard = ["email-validator (>=2.0.0)", "fastapi-cli[standard] (>=0.0.5)", "httpx (>=0.23.0)", "jinja2 (>=3.1.5)", "python-multipart (>=0.0.18)", "uvicorn[standard] (>=0.12.0)"]
|
341 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
342 |
[[package]]
|
343 |
name = "greenlet"
|
344 |
version = "3.2.2"
|
@@ -351,6 +576,7 @@ files = [
|
|
351 |
{file = "greenlet-3.2.2-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:c49e9f7c6f625507ed83a7485366b46cbe325717c60837f7244fc99ba16ba9d6"},
|
352 |
{file = "greenlet-3.2.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c3cc1a3ed00ecfea8932477f729a9f616ad7347a5e55d50929efa50a86cb7be7"},
|
353 |
{file = "greenlet-3.2.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7c9896249fbef2c615853b890ee854f22c671560226c9221cfd27c995db97e5c"},
|
|
|
354 |
{file = "greenlet-3.2.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7791dcb496ec53d60c7f1c78eaa156c21f402dda38542a00afc3e20cae0f480f"},
|
355 |
{file = "greenlet-3.2.2-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d8009ae46259e31bc73dc183e402f548e980c96f33a6ef58cc2e7865db012e13"},
|
356 |
{file = "greenlet-3.2.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:fd9fb7c941280e2c837b603850efc93c999ae58aae2b40765ed682a6907ebbc5"},
|
@@ -359,6 +585,7 @@ files = [
|
|
359 |
{file = "greenlet-3.2.2-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:dcb9cebbf3f62cb1e5afacae90761ccce0effb3adaa32339a0670fe7805d8068"},
|
360 |
{file = "greenlet-3.2.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bf3fc9145141250907730886b031681dfcc0de1c158f3cc51c092223c0f381ce"},
|
361 |
{file = "greenlet-3.2.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:efcdfb9df109e8a3b475c016f60438fcd4be68cd13a365d42b35914cdab4bb2b"},
|
|
|
362 |
{file = "greenlet-3.2.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:71566302219b17ca354eb274dfd29b8da3c268e41b646f330e324e3967546a74"},
|
363 |
{file = "greenlet-3.2.2-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:3091bc45e6b0c73f225374fefa1536cd91b1e987377b12ef5b19129b07d93ebe"},
|
364 |
{file = "greenlet-3.2.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:44671c29da26539a5f142257eaba5110f71887c24d40df3ac87f1117df589e0e"},
|
@@ -367,6 +594,7 @@ files = [
|
|
367 |
{file = "greenlet-3.2.2-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:df4d1509efd4977e6a844ac96d8be0b9e5aa5d5c77aa27ca9f4d3f92d3fcf330"},
|
368 |
{file = "greenlet-3.2.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da956d534a6d1b9841f95ad0f18ace637668f680b1339ca4dcfb2c1837880a0b"},
|
369 |
{file = "greenlet-3.2.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9c7b15fb9b88d9ee07e076f5a683027bc3befd5bb5d25954bb633c385d8b737e"},
|
|
|
370 |
{file = "greenlet-3.2.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9ae572c996ae4b5e122331e12bbb971ea49c08cc7c232d1bd43150800a2d6c65"},
|
371 |
{file = "greenlet-3.2.2-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:02f5972ff02c9cf615357c17ab713737cccfd0eaf69b951084a9fd43f39833d3"},
|
372 |
{file = "greenlet-3.2.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:4fefc7aa68b34b9224490dfda2e70ccf2131368493add64b4ef2d372955c207e"},
|
@@ -375,6 +603,7 @@ files = [
|
|
375 |
{file = "greenlet-3.2.2-cp313-cp313-macosx_11_0_universal2.whl", hash = "sha256:3ab7194ee290302ca15449f601036007873028712e92ca15fc76597a0aeb4c59"},
|
376 |
{file = "greenlet-3.2.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2dc5c43bb65ec3669452af0ab10729e8fdc17f87a1f2ad7ec65d4aaaefabf6bf"},
|
377 |
{file = "greenlet-3.2.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:decb0658ec19e5c1f519faa9a160c0fc85a41a7e6654b3ce1b44b939f8bf1325"},
|
|
|
378 |
{file = "greenlet-3.2.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1919cbdc1c53ef739c94cf2985056bcc0838c1f217b57647cbf4578576c63825"},
|
379 |
{file = "greenlet-3.2.2-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:3885f85b61798f4192d544aac7b25a04ece5fe2704670b4ab73c2d2c14ab740d"},
|
380 |
{file = "greenlet-3.2.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:85f3e248507125bf4af607a26fd6cb8578776197bd4b66e35229cdf5acf1dfbf"},
|
@@ -382,6 +611,7 @@ files = [
|
|
382 |
{file = "greenlet-3.2.2-cp313-cp313-win_amd64.whl", hash = "sha256:fe46d4f8e94e637634d54477b0cfabcf93c53f29eedcbdeecaf2af32029b4421"},
|
383 |
{file = "greenlet-3.2.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ba30e88607fb6990544d84caf3c706c4b48f629e18853fc6a646f82db9629418"},
|
384 |
{file = "greenlet-3.2.2-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:055916fafad3e3388d27dd68517478933a97edc2fc54ae79d3bec827de2c64c4"},
|
|
|
385 |
{file = "greenlet-3.2.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:89c69e9a10670eb7a66b8cef6354c24671ba241f46152dd3eed447f79c29fb5b"},
|
386 |
{file = "greenlet-3.2.2-cp313-cp313t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:02a98600899ca1ca5d3a2590974c9e3ec259503b2d6ba6527605fcd74e08e207"},
|
387 |
{file = "greenlet-3.2.2-cp313-cp313t-musllinux_1_1_aarch64.whl", hash = "sha256:b50a8c5c162469c3209e5ec92ee4f95c8231b11db6a04db09bbe338176723bb8"},
|
@@ -390,18 +620,35 @@ files = [
|
|
390 |
{file = "greenlet-3.2.2-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:1e4747712c4365ef6765708f948acc9c10350719ca0545e362c24ab973017370"},
|
391 |
{file = "greenlet-3.2.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:782743700ab75716650b5238a4759f840bb2dcf7bff56917e9ffdf9f1f23ec59"},
|
392 |
{file = "greenlet-3.2.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:354f67445f5bed6604e493a06a9a49ad65675d3d03477d38a4db4a427e9aad0e"},
|
|
|
393 |
{file = "greenlet-3.2.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8cb8553ee954536500d88a1a2f58fcb867e45125e600e80f586ade399b3f8819"},
|
394 |
{file = "greenlet-3.2.2-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1592a615b598643dbfd566bac8467f06c8c8ab6e56f069e573832ed1d5d528cc"},
|
395 |
{file = "greenlet-3.2.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:1f72667cc341c95184f1c68f957cb2d4fc31eef81646e8e59358a10ce6689457"},
|
396 |
{file = "greenlet-3.2.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a8fa80665b1a29faf76800173ff5325095f3e66a78e62999929809907aca5659"},
|
397 |
{file = "greenlet-3.2.2-cp39-cp39-win32.whl", hash = "sha256:6629311595e3fe7304039c67f00d145cd1d38cf723bb5b99cc987b23c1433d61"},
|
398 |
{file = "greenlet-3.2.2-cp39-cp39-win_amd64.whl", hash = "sha256:eeb27bece45c0c2a5842ac4c5a1b5c2ceaefe5711078eed4e8043159fa05c834"},
|
|
|
399 |
]
|
400 |
|
401 |
[package.extras]
|
402 |
docs = ["Sphinx", "furo"]
|
403 |
test = ["objgraph", "psutil"]
|
404 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
405 |
[[package]]
|
406 |
name = "h11"
|
407 |
version = "0.14.0"
|
@@ -517,6 +764,42 @@ http2 = ["h2 (>=3,<5)"]
|
|
517 |
socks = ["socksio (==1.*)"]
|
518 |
zstd = ["zstandard (>=0.18.0)"]
|
519 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
520 |
[[package]]
|
521 |
name = "idna"
|
522 |
version = "3.10"
|
@@ -544,6 +827,24 @@ files = [
|
|
544 |
{file = "iniconfig-2.1.0.tar.gz", hash = "sha256:3abbd2e30b36733fee78f9c7f7308f2d0050e88f0087fd25c2645f63c773e1c7"},
|
545 |
]
|
546 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
547 |
[[package]]
|
548 |
name = "jiter"
|
549 |
version = "0.9.0"
|
@@ -851,6 +1152,116 @@ openai-agents = ["openai-agents (>=0.0.3,<0.1)"]
|
|
851 |
otel = ["opentelemetry-api (>=1.30.0,<2.0.0)", "opentelemetry-exporter-otlp-proto-http (>=1.30.0,<2.0.0)", "opentelemetry-sdk (>=1.30.0,<2.0.0)"]
|
852 |
pytest = ["pytest (>=7.0.0)", "rich (>=13.9.4,<14.0.0)"]
|
853 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
854 |
[[package]]
|
855 |
name = "numpy"
|
856 |
version = "2.2.5"
|
@@ -1088,6 +1499,189 @@ files = [
|
|
1088 |
{file = "packaging-24.2.tar.gz", hash = "sha256:c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f"},
|
1089 |
]
|
1090 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1091 |
[[package]]
|
1092 |
name = "pluggy"
|
1093 |
version = "1.5.0"
|
@@ -1251,6 +1845,51 @@ files = [
|
|
1251 |
[package.dependencies]
|
1252 |
typing-extensions = ">=4.6.0,<4.7.0 || >4.7.0"
|
1253 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1254 |
[[package]]
|
1255 |
name = "pytest"
|
1256 |
version = "7.4.4"
|
@@ -1272,6 +1911,21 @@ pluggy = ">=0.12,<2.0"
|
|
1272 |
[package.extras]
|
1273 |
testing = ["argcomplete", "attrs (>=19.2.0)", "hypothesis (>=3.56)", "mock", "nose", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"]
|
1274 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1275 |
[[package]]
|
1276 |
name = "python-dotenv"
|
1277 |
version = "1.1.0"
|
@@ -1287,6 +1941,18 @@ files = [
|
|
1287 |
[package.extras]
|
1288 |
cli = ["click (>=5.0)"]
|
1289 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1290 |
[[package]]
|
1291 |
name = "python-slugify"
|
1292 |
version = "8.0.4"
|
@@ -1305,6 +1971,18 @@ text-unidecode = ">=1.3"
|
|
1305 |
[package.extras]
|
1306 |
unidecode = ["Unidecode (>=1.1.1)"]
|
1307 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1308 |
[[package]]
|
1309 |
name = "pyyaml"
|
1310 |
version = "6.0.2"
|
@@ -1509,6 +2187,114 @@ files = [
|
|
1509 |
[package.dependencies]
|
1510 |
requests = ">=2.0.1,<3.0.0"
|
1511 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1512 |
[[package]]
|
1513 |
name = "sniffio"
|
1514 |
version = "1.3.1"
|
@@ -1711,6 +2497,18 @@ requests = ">=2.26.0"
|
|
1711 |
[package.extras]
|
1712 |
blobfile = ["blobfile (>=2)"]
|
1713 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1714 |
[[package]]
|
1715 |
name = "tqdm"
|
1716 |
version = "4.67.1"
|
@@ -1733,6 +2531,25 @@ notebook = ["ipywidgets (>=6)"]
|
|
1733 |
slack = ["slack-sdk"]
|
1734 |
telegram = ["requests"]
|
1735 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1736 |
[[package]]
|
1737 |
name = "typing-extensions"
|
1738 |
version = "4.13.1"
|
@@ -1760,6 +2577,18 @@ files = [
|
|
1760 |
[package.dependencies]
|
1761 |
typing-extensions = ">=4.12.0"
|
1762 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1763 |
[[package]]
|
1764 |
name = "urllib3"
|
1765 |
version = "2.4.0"
|
@@ -2286,4 +3115,4 @@ cffi = ["cffi (>=1.11)"]
|
|
2286 |
[metadata]
|
2287 |
lock-version = "2.1"
|
2288 |
python-versions = "^3.12"
|
2289 |
-
content-hash = "
|
|
|
1 |
# This file is automatically @generated by Poetry 2.1.3 and should not be changed by hand.
|
2 |
|
3 |
+
[[package]]
|
4 |
+
name = "aiofiles"
|
5 |
+
version = "24.1.0"
|
6 |
+
description = "File support for asyncio."
|
7 |
+
optional = false
|
8 |
+
python-versions = ">=3.8"
|
9 |
+
groups = ["main"]
|
10 |
+
files = [
|
11 |
+
{file = "aiofiles-24.1.0-py3-none-any.whl", hash = "sha256:b4ec55f4195e3eb5d7abd1bf7e061763e864dd4954231fb8539a0ef8bb8260e5"},
|
12 |
+
{file = "aiofiles-24.1.0.tar.gz", hash = "sha256:22a075c9e5a3810f0c2e48f3008c94d68c65d763b9b03857924c99e57355166c"},
|
13 |
+
]
|
14 |
+
|
15 |
[[package]]
|
16 |
name = "annotated-types"
|
17 |
version = "0.7.0"
|
|
|
60 |
{file = "asyncio-3.4.3.tar.gz", hash = "sha256:83360ff8bc97980e4ff25c964c7bd3923d333d177aa4f7fb736b019f26c7cb41"},
|
61 |
]
|
62 |
|
63 |
+
[[package]]
|
64 |
+
name = "audioop-lts"
|
65 |
+
version = "0.2.1"
|
66 |
+
description = "LTS Port of Python audioop"
|
67 |
+
optional = false
|
68 |
+
python-versions = ">=3.13"
|
69 |
+
groups = ["main"]
|
70 |
+
markers = "python_version >= \"3.13\""
|
71 |
+
files = [
|
72 |
+
{file = "audioop_lts-0.2.1-cp313-abi3-macosx_10_13_universal2.whl", hash = "sha256:fd1345ae99e17e6910f47ce7d52673c6a1a70820d78b67de1b7abb3af29c426a"},
|
73 |
+
{file = "audioop_lts-0.2.1-cp313-abi3-macosx_10_13_x86_64.whl", hash = "sha256:e175350da05d2087e12cea8e72a70a1a8b14a17e92ed2022952a4419689ede5e"},
|
74 |
+
{file = "audioop_lts-0.2.1-cp313-abi3-macosx_11_0_arm64.whl", hash = "sha256:4a8dd6a81770f6ecf019c4b6d659e000dc26571b273953cef7cd1d5ce2ff3ae6"},
|
75 |
+
{file = "audioop_lts-0.2.1-cp313-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d1cd3c0b6f2ca25c7d2b1c3adeecbe23e65689839ba73331ebc7d893fcda7ffe"},
|
76 |
+
{file = "audioop_lts-0.2.1-cp313-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ff3f97b3372c97782e9c6d3d7fdbe83bce8f70de719605bd7ee1839cd1ab360a"},
|
77 |
+
{file = "audioop_lts-0.2.1-cp313-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a351af79edefc2a1bd2234bfd8b339935f389209943043913a919df4b0f13300"},
|
78 |
+
{file = "audioop_lts-0.2.1-cp313-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2aeb6f96f7f6da80354330470b9134d81b4cf544cdd1c549f2f45fe964d28059"},
|
79 |
+
{file = "audioop_lts-0.2.1-cp313-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c589f06407e8340e81962575fcffbba1e92671879a221186c3d4662de9fe804e"},
|
80 |
+
{file = "audioop_lts-0.2.1-cp313-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:fbae5d6925d7c26e712f0beda5ed69ebb40e14212c185d129b8dfbfcc335eb48"},
|
81 |
+
{file = "audioop_lts-0.2.1-cp313-abi3-musllinux_1_2_i686.whl", hash = "sha256:d2d5434717f33117f29b5691fbdf142d36573d751716249a288fbb96ba26a281"},
|
82 |
+
{file = "audioop_lts-0.2.1-cp313-abi3-musllinux_1_2_ppc64le.whl", hash = "sha256:f626a01c0a186b08f7ff61431c01c055961ee28769591efa8800beadd27a2959"},
|
83 |
+
{file = "audioop_lts-0.2.1-cp313-abi3-musllinux_1_2_s390x.whl", hash = "sha256:05da64e73837f88ee5c6217d732d2584cf638003ac72df124740460531e95e47"},
|
84 |
+
{file = "audioop_lts-0.2.1-cp313-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:56b7a0a4dba8e353436f31a932f3045d108a67b5943b30f85a5563f4d8488d77"},
|
85 |
+
{file = "audioop_lts-0.2.1-cp313-abi3-win32.whl", hash = "sha256:6e899eb8874dc2413b11926b5fb3857ec0ab55222840e38016a6ba2ea9b7d5e3"},
|
86 |
+
{file = "audioop_lts-0.2.1-cp313-abi3-win_amd64.whl", hash = "sha256:64562c5c771fb0a8b6262829b9b4f37a7b886c01b4d3ecdbae1d629717db08b4"},
|
87 |
+
{file = "audioop_lts-0.2.1-cp313-abi3-win_arm64.whl", hash = "sha256:c45317debeb64002e980077642afbd977773a25fa3dfd7ed0c84dccfc1fafcb0"},
|
88 |
+
{file = "audioop_lts-0.2.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:3827e3fce6fee4d69d96a3d00cd2ab07f3c0d844cb1e44e26f719b34a5b15455"},
|
89 |
+
{file = "audioop_lts-0.2.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:161249db9343b3c9780ca92c0be0d1ccbfecdbccac6844f3d0d44b9c4a00a17f"},
|
90 |
+
{file = "audioop_lts-0.2.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:5b7b4ff9de7a44e0ad2618afdc2ac920b91f4a6d3509520ee65339d4acde5abf"},
|
91 |
+
{file = "audioop_lts-0.2.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:72e37f416adb43b0ced93419de0122b42753ee74e87070777b53c5d2241e7fab"},
|
92 |
+
{file = "audioop_lts-0.2.1-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:534ce808e6bab6adb65548723c8cbe189a3379245db89b9d555c4210b4aaa9b6"},
|
93 |
+
{file = "audioop_lts-0.2.1-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d2de9b6fb8b1cf9f03990b299a9112bfdf8b86b6987003ca9e8a6c4f56d39543"},
|
94 |
+
{file = "audioop_lts-0.2.1-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f24865991b5ed4b038add5edbf424639d1358144f4e2a3e7a84bc6ba23e35074"},
|
95 |
+
{file = "audioop_lts-0.2.1-cp313-cp313t-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bdb3b7912ccd57ea53197943f1bbc67262dcf29802c4a6df79ec1c715d45a78"},
|
96 |
+
{file = "audioop_lts-0.2.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:120678b208cca1158f0a12d667af592e067f7a50df9adc4dc8f6ad8d065a93fb"},
|
97 |
+
{file = "audioop_lts-0.2.1-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:54cd4520fc830b23c7d223693ed3e1b4d464997dd3abc7c15dce9a1f9bd76ab2"},
|
98 |
+
{file = "audioop_lts-0.2.1-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:d6bd20c7a10abcb0fb3d8aaa7508c0bf3d40dfad7515c572014da4b979d3310a"},
|
99 |
+
{file = "audioop_lts-0.2.1-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:f0ed1ad9bd862539ea875fb339ecb18fcc4148f8d9908f4502df28f94d23491a"},
|
100 |
+
{file = "audioop_lts-0.2.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:e1af3ff32b8c38a7d900382646e91f2fc515fd19dea37e9392275a5cbfdbff63"},
|
101 |
+
{file = "audioop_lts-0.2.1-cp313-cp313t-win32.whl", hash = "sha256:f51bb55122a89f7a0817d7ac2319744b4640b5b446c4c3efcea5764ea99ae509"},
|
102 |
+
{file = "audioop_lts-0.2.1-cp313-cp313t-win_amd64.whl", hash = "sha256:f0f2f336aa2aee2bce0b0dcc32bbba9178995454c7b979cf6ce086a8801e14c7"},
|
103 |
+
{file = "audioop_lts-0.2.1-cp313-cp313t-win_arm64.whl", hash = "sha256:78bfb3703388c780edf900be66e07de5a3d4105ca8e8720c5c4d67927e0b15d0"},
|
104 |
+
{file = "audioop_lts-0.2.1.tar.gz", hash = "sha256:e81268da0baa880431b68b1308ab7257eb33f356e57a5f9b1f915dfb13dd1387"},
|
105 |
+
]
|
106 |
+
|
107 |
[[package]]
|
108 |
name = "certifi"
|
109 |
version = "2025.1.31"
|
|
|
326 |
{file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"},
|
327 |
]
|
328 |
|
329 |
+
[[package]]
|
330 |
+
name = "dacite"
|
331 |
+
version = "1.9.2"
|
332 |
+
description = "Simple creation of data classes from dictionaries."
|
333 |
+
optional = false
|
334 |
+
python-versions = ">=3.7"
|
335 |
+
groups = ["main"]
|
336 |
+
files = [
|
337 |
+
{file = "dacite-1.9.2-py3-none-any.whl", hash = "sha256:053f7c3f5128ca2e9aceb66892b1a3c8936d02c686e707bee96e19deef4bc4a0"},
|
338 |
+
{file = "dacite-1.9.2.tar.gz", hash = "sha256:6ccc3b299727c7aa17582f0021f6ae14d5de47c7227932c47fec4cdfefd26f09"},
|
339 |
+
]
|
340 |
+
|
341 |
+
[package.extras]
|
342 |
+
dev = ["black", "coveralls", "mypy", "pre-commit", "pylint", "pytest (>=5)", "pytest-benchmark", "pytest-cov"]
|
343 |
+
|
344 |
[[package]]
|
345 |
name = "debugpy"
|
346 |
version = "1.8.13"
|
|
|
410 |
all = ["email-validator (>=2.0.0)", "fastapi-cli[standard] (>=0.0.5)", "httpx (>=0.23.0)", "itsdangerous (>=1.1.0)", "jinja2 (>=3.1.5)", "orjson (>=3.2.1)", "pydantic-extra-types (>=2.0.0)", "pydantic-settings (>=2.0.0)", "python-multipart (>=0.0.18)", "pyyaml (>=5.3.1)", "ujson (>=4.0.1,!=4.0.2,!=4.1.0,!=4.2.0,!=4.3.0,!=5.0.0,!=5.1.0)", "uvicorn[standard] (>=0.12.0)"]
|
411 |
standard = ["email-validator (>=2.0.0)", "fastapi-cli[standard] (>=0.0.5)", "httpx (>=0.23.0)", "jinja2 (>=3.1.5)", "python-multipart (>=0.0.18)", "uvicorn[standard] (>=0.12.0)"]
|
412 |
|
413 |
+
[[package]]
|
414 |
+
name = "ffmpy"
|
415 |
+
version = "0.5.0"
|
416 |
+
description = "A simple Python wrapper for FFmpeg"
|
417 |
+
optional = false
|
418 |
+
python-versions = "<4.0,>=3.8"
|
419 |
+
groups = ["main"]
|
420 |
+
files = [
|
421 |
+
{file = "ffmpy-0.5.0-py3-none-any.whl", hash = "sha256:df3799cf5816daa56d4959a023630ee53c6768b66009dae6d131519ba4b80233"},
|
422 |
+
{file = "ffmpy-0.5.0.tar.gz", hash = "sha256:277e131f246d18e9dcfee9bb514c50749031c43582ce5ef82c57b51e3d3955c3"},
|
423 |
+
]
|
424 |
+
|
425 |
+
[[package]]
|
426 |
+
name = "filelock"
|
427 |
+
version = "3.18.0"
|
428 |
+
description = "A platform independent file lock."
|
429 |
+
optional = false
|
430 |
+
python-versions = ">=3.9"
|
431 |
+
groups = ["main"]
|
432 |
+
files = [
|
433 |
+
{file = "filelock-3.18.0-py3-none-any.whl", hash = "sha256:c401f4f8377c4464e6db25fff06205fd89bdd83b65eb0488ed1b160f780e21de"},
|
434 |
+
{file = "filelock-3.18.0.tar.gz", hash = "sha256:adbc88eabb99d2fec8c9c1b229b171f18afa655400173ddc653d5d01501fb9f2"},
|
435 |
+
]
|
436 |
+
|
437 |
+
[package.extras]
|
438 |
+
docs = ["furo (>=2024.8.6)", "sphinx (>=8.1.3)", "sphinx-autodoc-typehints (>=3)"]
|
439 |
+
testing = ["covdefaults (>=2.3)", "coverage (>=7.6.10)", "diff-cover (>=9.2.1)", "pytest (>=8.3.4)", "pytest-asyncio (>=0.25.2)", "pytest-cov (>=6)", "pytest-mock (>=3.14)", "pytest-timeout (>=2.3.1)", "virtualenv (>=20.28.1)"]
|
440 |
+
typing = ["typing-extensions (>=4.12.2) ; python_version < \"3.11\""]
|
441 |
+
|
442 |
+
[[package]]
|
443 |
+
name = "freeplay"
|
444 |
+
version = "0.3.21"
|
445 |
+
description = ""
|
446 |
+
optional = false
|
447 |
+
python-versions = "<4,>=3.8"
|
448 |
+
groups = ["main"]
|
449 |
+
files = [
|
450 |
+
{file = "freeplay-0.3.21-py3-none-any.whl", hash = "sha256:963d2046bc656de840303a987942a3fc5d60ce706ce9b9adb8a199a8ca70106d"},
|
451 |
+
{file = "freeplay-0.3.21.tar.gz", hash = "sha256:19418e4b5c469e766262c3d4e027af2d58f06e591b59c307a089ab74e7e16496"},
|
452 |
+
]
|
453 |
+
|
454 |
+
[package.dependencies]
|
455 |
+
click = ">=8.1.7,<9.0.0"
|
456 |
+
dacite = ">=1.8.0,<2.0.0"
|
457 |
+
pystache = ">=0.6.5,<0.7.0"
|
458 |
+
requests = ">=2.20.0,<3.0.0dev"
|
459 |
+
|
460 |
+
[[package]]
|
461 |
+
name = "fsspec"
|
462 |
+
version = "2025.3.2"
|
463 |
+
description = "File-system specification"
|
464 |
+
optional = false
|
465 |
+
python-versions = ">=3.9"
|
466 |
+
groups = ["main"]
|
467 |
+
files = [
|
468 |
+
{file = "fsspec-2025.3.2-py3-none-any.whl", hash = "sha256:2daf8dc3d1dfa65b6aa37748d112773a7a08416f6c70d96b264c96476ecaf711"},
|
469 |
+
{file = "fsspec-2025.3.2.tar.gz", hash = "sha256:e52c77ef398680bbd6a98c0e628fbc469491282981209907bbc8aea76a04fdc6"},
|
470 |
+
]
|
471 |
+
|
472 |
+
[package.extras]
|
473 |
+
abfs = ["adlfs"]
|
474 |
+
adl = ["adlfs"]
|
475 |
+
arrow = ["pyarrow (>=1)"]
|
476 |
+
dask = ["dask", "distributed"]
|
477 |
+
dev = ["pre-commit", "ruff"]
|
478 |
+
doc = ["numpydoc", "sphinx", "sphinx-design", "sphinx-rtd-theme", "yarl"]
|
479 |
+
dropbox = ["dropbox", "dropboxdrivefs", "requests"]
|
480 |
+
full = ["adlfs", "aiohttp (!=4.0.0a0,!=4.0.0a1)", "dask", "distributed", "dropbox", "dropboxdrivefs", "fusepy", "gcsfs", "libarchive-c", "ocifs", "panel", "paramiko", "pyarrow (>=1)", "pygit2", "requests", "s3fs", "smbprotocol", "tqdm"]
|
481 |
+
fuse = ["fusepy"]
|
482 |
+
gcs = ["gcsfs"]
|
483 |
+
git = ["pygit2"]
|
484 |
+
github = ["requests"]
|
485 |
+
gs = ["gcsfs"]
|
486 |
+
gui = ["panel"]
|
487 |
+
hdfs = ["pyarrow (>=1)"]
|
488 |
+
http = ["aiohttp (!=4.0.0a0,!=4.0.0a1)"]
|
489 |
+
libarchive = ["libarchive-c"]
|
490 |
+
oci = ["ocifs"]
|
491 |
+
s3 = ["s3fs"]
|
492 |
+
sftp = ["paramiko"]
|
493 |
+
smb = ["smbprotocol"]
|
494 |
+
ssh = ["paramiko"]
|
495 |
+
test = ["aiohttp (!=4.0.0a0,!=4.0.0a1)", "numpy", "pytest", "pytest-asyncio (!=0.22.0)", "pytest-benchmark", "pytest-cov", "pytest-mock", "pytest-recording", "pytest-rerunfailures", "requests"]
|
496 |
+
test-downstream = ["aiobotocore (>=2.5.4,<3.0.0)", "dask[dataframe,test]", "moto[server] (>4,<5)", "pytest-timeout", "xarray"]
|
497 |
+
test-full = ["adlfs", "aiohttp (!=4.0.0a0,!=4.0.0a1)", "cloudpickle", "dask", "distributed", "dropbox", "dropboxdrivefs", "fastparquet", "fusepy", "gcsfs", "jinja2", "kerchunk", "libarchive-c", "lz4", "notebook", "numpy", "ocifs", "pandas", "panel", "paramiko", "pyarrow", "pyarrow (>=1)", "pyftpdlib", "pygit2", "pytest", "pytest-asyncio (!=0.22.0)", "pytest-benchmark", "pytest-cov", "pytest-mock", "pytest-recording", "pytest-rerunfailures", "python-snappy", "requests", "smbprotocol", "tqdm", "urllib3", "zarr", "zstandard"]
|
498 |
+
tqdm = ["tqdm"]
|
499 |
+
|
500 |
+
[[package]]
|
501 |
+
name = "gradio"
|
502 |
+
version = "5.29.1"
|
503 |
+
description = "Python library for easily interacting with trained machine learning models"
|
504 |
+
optional = false
|
505 |
+
python-versions = ">=3.10"
|
506 |
+
groups = ["main"]
|
507 |
+
files = [
|
508 |
+
{file = "gradio-5.29.1-py3-none-any.whl", hash = "sha256:e6fb5e984c514a8a863feaa7a6d56a8c5ded16e14c301bb3716ebe2c1ca0556c"},
|
509 |
+
{file = "gradio-5.29.1.tar.gz", hash = "sha256:34a39d1d2d21e73f01912ec59d15a507d6501b158840ebf63696b5cff1a9d8a6"},
|
510 |
+
]
|
511 |
+
|
512 |
+
[package.dependencies]
|
513 |
+
aiofiles = ">=22.0,<25.0"
|
514 |
+
anyio = ">=3.0,<5.0"
|
515 |
+
audioop-lts = {version = "<1.0", markers = "python_version >= \"3.13\""}
|
516 |
+
fastapi = ">=0.115.2,<1.0"
|
517 |
+
ffmpy = "*"
|
518 |
+
gradio-client = "1.10.1"
|
519 |
+
groovy = ">=0.1,<1.0"
|
520 |
+
httpx = ">=0.24.1"
|
521 |
+
huggingface-hub = ">=0.28.1"
|
522 |
+
jinja2 = "<4.0"
|
523 |
+
markupsafe = ">=2.0,<4.0"
|
524 |
+
numpy = ">=1.0,<3.0"
|
525 |
+
orjson = ">=3.0,<4.0"
|
526 |
+
packaging = "*"
|
527 |
+
pandas = ">=1.0,<3.0"
|
528 |
+
pillow = ">=8.0,<12.0"
|
529 |
+
pydantic = ">=2.0,<2.12"
|
530 |
+
pydub = "*"
|
531 |
+
python-multipart = ">=0.0.18"
|
532 |
+
pyyaml = ">=5.0,<7.0"
|
533 |
+
ruff = {version = ">=0.9.3", markers = "sys_platform != \"emscripten\""}
|
534 |
+
safehttpx = ">=0.1.6,<0.2.0"
|
535 |
+
semantic-version = ">=2.0,<3.0"
|
536 |
+
starlette = {version = ">=0.40.0,<1.0", markers = "sys_platform != \"emscripten\""}
|
537 |
+
tomlkit = ">=0.12.0,<0.14.0"
|
538 |
+
typer = {version = ">=0.12,<1.0", markers = "sys_platform != \"emscripten\""}
|
539 |
+
typing-extensions = ">=4.0,<5.0"
|
540 |
+
urllib3 = {version = ">=2.0,<3.0", markers = "sys_platform == \"emscripten\""}
|
541 |
+
uvicorn = {version = ">=0.14.0", markers = "sys_platform != \"emscripten\""}
|
542 |
+
|
543 |
+
[package.extras]
|
544 |
+
mcp = ["mcp (>=1.6.0,<2.0.0)", "pydantic (>=2.11) ; sys_platform != \"emscripten\""]
|
545 |
+
oauth = ["authlib", "itsdangerous"]
|
546 |
+
|
547 |
+
[[package]]
|
548 |
+
name = "gradio-client"
|
549 |
+
version = "1.10.1"
|
550 |
+
description = "Python library for easily interacting with trained machine learning models"
|
551 |
+
optional = false
|
552 |
+
python-versions = ">=3.10"
|
553 |
+
groups = ["main"]
|
554 |
+
files = [
|
555 |
+
{file = "gradio_client-1.10.1-py3-none-any.whl", hash = "sha256:fcff53f6aad3dfa9dd082adedb94256172d6b20666b1ef66480d82023e1907db"},
|
556 |
+
{file = "gradio_client-1.10.1.tar.gz", hash = "sha256:550662eae8dc0d06d44cb8d42be74f214db1e793ad4d789d7b7ecb42e82ca045"},
|
557 |
+
]
|
558 |
+
|
559 |
+
[package.dependencies]
|
560 |
+
fsspec = "*"
|
561 |
+
httpx = ">=0.24.1"
|
562 |
+
huggingface-hub = ">=0.19.3"
|
563 |
+
packaging = "*"
|
564 |
+
typing-extensions = ">=4.0,<5.0"
|
565 |
+
websockets = ">=10.0,<16.0"
|
566 |
+
|
567 |
[[package]]
|
568 |
name = "greenlet"
|
569 |
version = "3.2.2"
|
|
|
576 |
{file = "greenlet-3.2.2-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:c49e9f7c6f625507ed83a7485366b46cbe325717c60837f7244fc99ba16ba9d6"},
|
577 |
{file = "greenlet-3.2.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c3cc1a3ed00ecfea8932477f729a9f616ad7347a5e55d50929efa50a86cb7be7"},
|
578 |
{file = "greenlet-3.2.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7c9896249fbef2c615853b890ee854f22c671560226c9221cfd27c995db97e5c"},
|
579 |
+
{file = "greenlet-3.2.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7409796591d879425997a518138889d8d17e63ada7c99edc0d7a1c22007d4907"},
|
580 |
{file = "greenlet-3.2.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7791dcb496ec53d60c7f1c78eaa156c21f402dda38542a00afc3e20cae0f480f"},
|
581 |
{file = "greenlet-3.2.2-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d8009ae46259e31bc73dc183e402f548e980c96f33a6ef58cc2e7865db012e13"},
|
582 |
{file = "greenlet-3.2.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:fd9fb7c941280e2c837b603850efc93c999ae58aae2b40765ed682a6907ebbc5"},
|
|
|
585 |
{file = "greenlet-3.2.2-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:dcb9cebbf3f62cb1e5afacae90761ccce0effb3adaa32339a0670fe7805d8068"},
|
586 |
{file = "greenlet-3.2.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bf3fc9145141250907730886b031681dfcc0de1c158f3cc51c092223c0f381ce"},
|
587 |
{file = "greenlet-3.2.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:efcdfb9df109e8a3b475c016f60438fcd4be68cd13a365d42b35914cdab4bb2b"},
|
588 |
+
{file = "greenlet-3.2.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4bd139e4943547ce3a56ef4b8b1b9479f9e40bb47e72cc906f0f66b9d0d5cab3"},
|
589 |
{file = "greenlet-3.2.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:71566302219b17ca354eb274dfd29b8da3c268e41b646f330e324e3967546a74"},
|
590 |
{file = "greenlet-3.2.2-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:3091bc45e6b0c73f225374fefa1536cd91b1e987377b12ef5b19129b07d93ebe"},
|
591 |
{file = "greenlet-3.2.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:44671c29da26539a5f142257eaba5110f71887c24d40df3ac87f1117df589e0e"},
|
|
|
594 |
{file = "greenlet-3.2.2-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:df4d1509efd4977e6a844ac96d8be0b9e5aa5d5c77aa27ca9f4d3f92d3fcf330"},
|
595 |
{file = "greenlet-3.2.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da956d534a6d1b9841f95ad0f18ace637668f680b1339ca4dcfb2c1837880a0b"},
|
596 |
{file = "greenlet-3.2.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9c7b15fb9b88d9ee07e076f5a683027bc3befd5bb5d25954bb633c385d8b737e"},
|
597 |
+
{file = "greenlet-3.2.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:752f0e79785e11180ebd2e726c8a88109ded3e2301d40abced2543aa5d164275"},
|
598 |
{file = "greenlet-3.2.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9ae572c996ae4b5e122331e12bbb971ea49c08cc7c232d1bd43150800a2d6c65"},
|
599 |
{file = "greenlet-3.2.2-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:02f5972ff02c9cf615357c17ab713737cccfd0eaf69b951084a9fd43f39833d3"},
|
600 |
{file = "greenlet-3.2.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:4fefc7aa68b34b9224490dfda2e70ccf2131368493add64b4ef2d372955c207e"},
|
|
|
603 |
{file = "greenlet-3.2.2-cp313-cp313-macosx_11_0_universal2.whl", hash = "sha256:3ab7194ee290302ca15449f601036007873028712e92ca15fc76597a0aeb4c59"},
|
604 |
{file = "greenlet-3.2.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2dc5c43bb65ec3669452af0ab10729e8fdc17f87a1f2ad7ec65d4aaaefabf6bf"},
|
605 |
{file = "greenlet-3.2.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:decb0658ec19e5c1f519faa9a160c0fc85a41a7e6654b3ce1b44b939f8bf1325"},
|
606 |
+
{file = "greenlet-3.2.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6fadd183186db360b61cb34e81117a096bff91c072929cd1b529eb20dd46e6c5"},
|
607 |
{file = "greenlet-3.2.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1919cbdc1c53ef739c94cf2985056bcc0838c1f217b57647cbf4578576c63825"},
|
608 |
{file = "greenlet-3.2.2-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:3885f85b61798f4192d544aac7b25a04ece5fe2704670b4ab73c2d2c14ab740d"},
|
609 |
{file = "greenlet-3.2.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:85f3e248507125bf4af607a26fd6cb8578776197bd4b66e35229cdf5acf1dfbf"},
|
|
|
611 |
{file = "greenlet-3.2.2-cp313-cp313-win_amd64.whl", hash = "sha256:fe46d4f8e94e637634d54477b0cfabcf93c53f29eedcbdeecaf2af32029b4421"},
|
612 |
{file = "greenlet-3.2.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ba30e88607fb6990544d84caf3c706c4b48f629e18853fc6a646f82db9629418"},
|
613 |
{file = "greenlet-3.2.2-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:055916fafad3e3388d27dd68517478933a97edc2fc54ae79d3bec827de2c64c4"},
|
614 |
+
{file = "greenlet-3.2.2-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2593283bf81ca37d27d110956b79e8723f9aa50c4bcdc29d3c0543d4743d2763"},
|
615 |
{file = "greenlet-3.2.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:89c69e9a10670eb7a66b8cef6354c24671ba241f46152dd3eed447f79c29fb5b"},
|
616 |
{file = "greenlet-3.2.2-cp313-cp313t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:02a98600899ca1ca5d3a2590974c9e3ec259503b2d6ba6527605fcd74e08e207"},
|
617 |
{file = "greenlet-3.2.2-cp313-cp313t-musllinux_1_1_aarch64.whl", hash = "sha256:b50a8c5c162469c3209e5ec92ee4f95c8231b11db6a04db09bbe338176723bb8"},
|
|
|
620 |
{file = "greenlet-3.2.2-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:1e4747712c4365ef6765708f948acc9c10350719ca0545e362c24ab973017370"},
|
621 |
{file = "greenlet-3.2.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:782743700ab75716650b5238a4759f840bb2dcf7bff56917e9ffdf9f1f23ec59"},
|
622 |
{file = "greenlet-3.2.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:354f67445f5bed6604e493a06a9a49ad65675d3d03477d38a4db4a427e9aad0e"},
|
623 |
+
{file = "greenlet-3.2.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3aeca9848d08ce5eb653cf16e15bb25beeab36e53eb71cc32569f5f3afb2a3aa"},
|
624 |
{file = "greenlet-3.2.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8cb8553ee954536500d88a1a2f58fcb867e45125e600e80f586ade399b3f8819"},
|
625 |
{file = "greenlet-3.2.2-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1592a615b598643dbfd566bac8467f06c8c8ab6e56f069e573832ed1d5d528cc"},
|
626 |
{file = "greenlet-3.2.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:1f72667cc341c95184f1c68f957cb2d4fc31eef81646e8e59358a10ce6689457"},
|
627 |
{file = "greenlet-3.2.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a8fa80665b1a29faf76800173ff5325095f3e66a78e62999929809907aca5659"},
|
628 |
{file = "greenlet-3.2.2-cp39-cp39-win32.whl", hash = "sha256:6629311595e3fe7304039c67f00d145cd1d38cf723bb5b99cc987b23c1433d61"},
|
629 |
{file = "greenlet-3.2.2-cp39-cp39-win_amd64.whl", hash = "sha256:eeb27bece45c0c2a5842ac4c5a1b5c2ceaefe5711078eed4e8043159fa05c834"},
|
630 |
+
{file = "greenlet-3.2.2.tar.gz", hash = "sha256:ad053d34421a2debba45aa3cc39acf454acbcd025b3fc1a9f8a0dee237abd485"},
|
631 |
]
|
632 |
|
633 |
[package.extras]
|
634 |
docs = ["Sphinx", "furo"]
|
635 |
test = ["objgraph", "psutil"]
|
636 |
|
637 |
+
[[package]]
|
638 |
+
name = "groovy"
|
639 |
+
version = "0.1.2"
|
640 |
+
description = "A small Python library created to help developers protect their applications from Server Side Request Forgery (SSRF) attacks."
|
641 |
+
optional = false
|
642 |
+
python-versions = ">3.9"
|
643 |
+
groups = ["main"]
|
644 |
+
files = [
|
645 |
+
{file = "groovy-0.1.2-py3-none-any.whl", hash = "sha256:7f7975bab18c729a257a8b1ae9dcd70b7cafb1720481beae47719af57c35fa64"},
|
646 |
+
{file = "groovy-0.1.2.tar.gz", hash = "sha256:25c1dc09b3f9d7e292458aa762c6beb96ea037071bf5e917fc81fb78d2231083"},
|
647 |
+
]
|
648 |
+
|
649 |
+
[package.extras]
|
650 |
+
dev = ["pytest", "ruff (==0.9.3)"]
|
651 |
+
|
652 |
[[package]]
|
653 |
name = "h11"
|
654 |
version = "0.14.0"
|
|
|
764 |
socks = ["socksio (==1.*)"]
|
765 |
zstd = ["zstandard (>=0.18.0)"]
|
766 |
|
767 |
+
[[package]]
|
768 |
+
name = "huggingface-hub"
|
769 |
+
version = "0.31.2"
|
770 |
+
description = "Client library to download and publish models, datasets and other repos on the huggingface.co hub"
|
771 |
+
optional = false
|
772 |
+
python-versions = ">=3.8.0"
|
773 |
+
groups = ["main"]
|
774 |
+
files = [
|
775 |
+
{file = "huggingface_hub-0.31.2-py3-none-any.whl", hash = "sha256:8138cd52aa2326b4429bb00a4a1ba8538346b7b8a808cdce30acb6f1f1bdaeec"},
|
776 |
+
{file = "huggingface_hub-0.31.2.tar.gz", hash = "sha256:7053561376ed7f6ffdaecf09cc54d70dc784ac6315fa4bb9b93e19662b029675"},
|
777 |
+
]
|
778 |
+
|
779 |
+
[package.dependencies]
|
780 |
+
filelock = "*"
|
781 |
+
fsspec = ">=2023.5.0"
|
782 |
+
packaging = ">=20.9"
|
783 |
+
pyyaml = ">=5.1"
|
784 |
+
requests = "*"
|
785 |
+
tqdm = ">=4.42.1"
|
786 |
+
typing-extensions = ">=3.7.4.3"
|
787 |
+
|
788 |
+
[package.extras]
|
789 |
+
all = ["InquirerPy (==0.3.4)", "Jinja2", "Pillow", "aiohttp", "fastapi", "gradio (>=4.0.0)", "jedi", "libcst (==1.4.0)", "mypy (==1.5.1)", "numpy", "pytest (>=8.1.1,<8.2.2)", "pytest-asyncio", "pytest-cov", "pytest-env", "pytest-mock", "pytest-rerunfailures", "pytest-vcr", "pytest-xdist", "ruff (>=0.9.0)", "soundfile", "types-PyYAML", "types-requests", "types-simplejson", "types-toml", "types-tqdm", "types-urllib3", "typing-extensions (>=4.8.0)", "urllib3 (<2.0)"]
|
790 |
+
cli = ["InquirerPy (==0.3.4)"]
|
791 |
+
dev = ["InquirerPy (==0.3.4)", "Jinja2", "Pillow", "aiohttp", "fastapi", "gradio (>=4.0.0)", "jedi", "libcst (==1.4.0)", "mypy (==1.5.1)", "numpy", "pytest (>=8.1.1,<8.2.2)", "pytest-asyncio", "pytest-cov", "pytest-env", "pytest-mock", "pytest-rerunfailures", "pytest-vcr", "pytest-xdist", "ruff (>=0.9.0)", "soundfile", "types-PyYAML", "types-requests", "types-simplejson", "types-toml", "types-tqdm", "types-urllib3", "typing-extensions (>=4.8.0)", "urllib3 (<2.0)"]
|
792 |
+
fastai = ["fastai (>=2.4)", "fastcore (>=1.3.27)", "toml"]
|
793 |
+
hf-transfer = ["hf-transfer (>=0.1.4)"]
|
794 |
+
hf-xet = ["hf-xet (>=1.1.1,<2.0.0)"]
|
795 |
+
inference = ["aiohttp"]
|
796 |
+
quality = ["libcst (==1.4.0)", "mypy (==1.5.1)", "ruff (>=0.9.0)"]
|
797 |
+
tensorflow = ["graphviz", "pydot", "tensorflow"]
|
798 |
+
tensorflow-testing = ["keras (<3.0)", "tensorflow"]
|
799 |
+
testing = ["InquirerPy (==0.3.4)", "Jinja2", "Pillow", "aiohttp", "fastapi", "gradio (>=4.0.0)", "jedi", "numpy", "pytest (>=8.1.1,<8.2.2)", "pytest-asyncio", "pytest-cov", "pytest-env", "pytest-mock", "pytest-rerunfailures", "pytest-vcr", "pytest-xdist", "soundfile", "urllib3 (<2.0)"]
|
800 |
+
torch = ["safetensors[torch]", "torch"]
|
801 |
+
typing = ["types-PyYAML", "types-requests", "types-simplejson", "types-toml", "types-tqdm", "types-urllib3", "typing-extensions (>=4.8.0)"]
|
802 |
+
|
803 |
[[package]]
|
804 |
name = "idna"
|
805 |
version = "3.10"
|
|
|
827 |
{file = "iniconfig-2.1.0.tar.gz", hash = "sha256:3abbd2e30b36733fee78f9c7f7308f2d0050e88f0087fd25c2645f63c773e1c7"},
|
828 |
]
|
829 |
|
830 |
+
[[package]]
|
831 |
+
name = "jinja2"
|
832 |
+
version = "3.1.6"
|
833 |
+
description = "A very fast and expressive template engine."
|
834 |
+
optional = false
|
835 |
+
python-versions = ">=3.7"
|
836 |
+
groups = ["main"]
|
837 |
+
files = [
|
838 |
+
{file = "jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67"},
|
839 |
+
{file = "jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d"},
|
840 |
+
]
|
841 |
+
|
842 |
+
[package.dependencies]
|
843 |
+
MarkupSafe = ">=2.0"
|
844 |
+
|
845 |
+
[package.extras]
|
846 |
+
i18n = ["Babel (>=2.7)"]
|
847 |
+
|
848 |
[[package]]
|
849 |
name = "jiter"
|
850 |
version = "0.9.0"
|
|
|
1152 |
otel = ["opentelemetry-api (>=1.30.0,<2.0.0)", "opentelemetry-exporter-otlp-proto-http (>=1.30.0,<2.0.0)", "opentelemetry-sdk (>=1.30.0,<2.0.0)"]
|
1153 |
pytest = ["pytest (>=7.0.0)", "rich (>=13.9.4,<14.0.0)"]
|
1154 |
|
1155 |
+
[[package]]
|
1156 |
+
name = "markdown-it-py"
|
1157 |
+
version = "3.0.0"
|
1158 |
+
description = "Python port of markdown-it. Markdown parsing, done right!"
|
1159 |
+
optional = false
|
1160 |
+
python-versions = ">=3.8"
|
1161 |
+
groups = ["main"]
|
1162 |
+
markers = "sys_platform != \"emscripten\""
|
1163 |
+
files = [
|
1164 |
+
{file = "markdown-it-py-3.0.0.tar.gz", hash = "sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb"},
|
1165 |
+
{file = "markdown_it_py-3.0.0-py3-none-any.whl", hash = "sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1"},
|
1166 |
+
]
|
1167 |
+
|
1168 |
+
[package.dependencies]
|
1169 |
+
mdurl = ">=0.1,<1.0"
|
1170 |
+
|
1171 |
+
[package.extras]
|
1172 |
+
benchmarking = ["psutil", "pytest", "pytest-benchmark"]
|
1173 |
+
code-style = ["pre-commit (>=3.0,<4.0)"]
|
1174 |
+
compare = ["commonmark (>=0.9,<1.0)", "markdown (>=3.4,<4.0)", "mistletoe (>=1.0,<2.0)", "mistune (>=2.0,<3.0)", "panflute (>=2.3,<3.0)"]
|
1175 |
+
linkify = ["linkify-it-py (>=1,<3)"]
|
1176 |
+
plugins = ["mdit-py-plugins"]
|
1177 |
+
profiling = ["gprof2dot"]
|
1178 |
+
rtd = ["jupyter_sphinx", "mdit-py-plugins", "myst-parser", "pyyaml", "sphinx", "sphinx-copybutton", "sphinx-design", "sphinx_book_theme"]
|
1179 |
+
testing = ["coverage", "pytest", "pytest-cov", "pytest-regressions"]
|
1180 |
+
|
1181 |
+
[[package]]
|
1182 |
+
name = "markupsafe"
|
1183 |
+
version = "3.0.2"
|
1184 |
+
description = "Safely add untrusted strings to HTML/XML markup."
|
1185 |
+
optional = false
|
1186 |
+
python-versions = ">=3.9"
|
1187 |
+
groups = ["main"]
|
1188 |
+
files = [
|
1189 |
+
{file = "MarkupSafe-3.0.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7e94c425039cde14257288fd61dcfb01963e658efbc0ff54f5306b06054700f8"},
|
1190 |
+
{file = "MarkupSafe-3.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9e2d922824181480953426608b81967de705c3cef4d1af983af849d7bd619158"},
|
1191 |
+
{file = "MarkupSafe-3.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:38a9ef736c01fccdd6600705b09dc574584b89bea478200c5fbf112a6b0d5579"},
|
1192 |
+
{file = "MarkupSafe-3.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bbcb445fa71794da8f178f0f6d66789a28d7319071af7a496d4d507ed566270d"},
|
1193 |
+
{file = "MarkupSafe-3.0.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:57cb5a3cf367aeb1d316576250f65edec5bb3be939e9247ae594b4bcbc317dfb"},
|
1194 |
+
{file = "MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:3809ede931876f5b2ec92eef964286840ed3540dadf803dd570c3b7e13141a3b"},
|
1195 |
+
{file = "MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e07c3764494e3776c602c1e78e298937c3315ccc9043ead7e685b7f2b8d47b3c"},
|
1196 |
+
{file = "MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:b424c77b206d63d500bcb69fa55ed8d0e6a3774056bdc4839fc9298a7edca171"},
|
1197 |
+
{file = "MarkupSafe-3.0.2-cp310-cp310-win32.whl", hash = "sha256:fcabf5ff6eea076f859677f5f0b6b5c1a51e70a376b0579e0eadef8db48c6b50"},
|
1198 |
+
{file = "MarkupSafe-3.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:6af100e168aa82a50e186c82875a5893c5597a0c1ccdb0d8b40240b1f28b969a"},
|
1199 |
+
{file = "MarkupSafe-3.0.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:9025b4018f3a1314059769c7bf15441064b2207cb3f065e6ea1e7359cb46db9d"},
|
1200 |
+
{file = "MarkupSafe-3.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:93335ca3812df2f366e80509ae119189886b0f3c2b81325d39efdb84a1e2ae93"},
|
1201 |
+
{file = "MarkupSafe-3.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2cb8438c3cbb25e220c2ab33bb226559e7afb3baec11c4f218ffa7308603c832"},
|
1202 |
+
{file = "MarkupSafe-3.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a123e330ef0853c6e822384873bef7507557d8e4a082961e1defa947aa59ba84"},
|
1203 |
+
{file = "MarkupSafe-3.0.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1e084f686b92e5b83186b07e8a17fc09e38fff551f3602b249881fec658d3eca"},
|
1204 |
+
{file = "MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d8213e09c917a951de9d09ecee036d5c7d36cb6cb7dbaece4c71a60d79fb9798"},
|
1205 |
+
{file = "MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:5b02fb34468b6aaa40dfc198d813a641e3a63b98c2b05a16b9f80b7ec314185e"},
|
1206 |
+
{file = "MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:0bff5e0ae4ef2e1ae4fdf2dfd5b76c75e5c2fa4132d05fc1b0dabcd20c7e28c4"},
|
1207 |
+
{file = "MarkupSafe-3.0.2-cp311-cp311-win32.whl", hash = "sha256:6c89876f41da747c8d3677a2b540fb32ef5715f97b66eeb0c6b66f5e3ef6f59d"},
|
1208 |
+
{file = "MarkupSafe-3.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:70a87b411535ccad5ef2f1df5136506a10775d267e197e4cf531ced10537bd6b"},
|
1209 |
+
{file = "MarkupSafe-3.0.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:9778bd8ab0a994ebf6f84c2b949e65736d5575320a17ae8984a77fab08db94cf"},
|
1210 |
+
{file = "MarkupSafe-3.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:846ade7b71e3536c4e56b386c2a47adf5741d2d8b94ec9dc3e92e5e1ee1e2225"},
|
1211 |
+
{file = "MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1c99d261bd2d5f6b59325c92c73df481e05e57f19837bdca8413b9eac4bd8028"},
|
1212 |
+
{file = "MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e17c96c14e19278594aa4841ec148115f9c7615a47382ecb6b82bd8fea3ab0c8"},
|
1213 |
+
{file = "MarkupSafe-3.0.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:88416bd1e65dcea10bc7569faacb2c20ce071dd1f87539ca2ab364bf6231393c"},
|
1214 |
+
{file = "MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:2181e67807fc2fa785d0592dc2d6206c019b9502410671cc905d132a92866557"},
|
1215 |
+
{file = "MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:52305740fe773d09cffb16f8ed0427942901f00adedac82ec8b67752f58a1b22"},
|
1216 |
+
{file = "MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ad10d3ded218f1039f11a75f8091880239651b52e9bb592ca27de44eed242a48"},
|
1217 |
+
{file = "MarkupSafe-3.0.2-cp312-cp312-win32.whl", hash = "sha256:0f4ca02bea9a23221c0182836703cbf8930c5e9454bacce27e767509fa286a30"},
|
1218 |
+
{file = "MarkupSafe-3.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:8e06879fc22a25ca47312fbe7c8264eb0b662f6db27cb2d3bbbc74b1df4b9b87"},
|
1219 |
+
{file = "MarkupSafe-3.0.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ba9527cdd4c926ed0760bc301f6728ef34d841f405abf9d4f959c478421e4efd"},
|
1220 |
+
{file = "MarkupSafe-3.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f8b3d067f2e40fe93e1ccdd6b2e1d16c43140e76f02fb1319a05cf2b79d99430"},
|
1221 |
+
{file = "MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:569511d3b58c8791ab4c2e1285575265991e6d8f8700c7be0e88f86cb0672094"},
|
1222 |
+
{file = "MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15ab75ef81add55874e7ab7055e9c397312385bd9ced94920f2802310c930396"},
|
1223 |
+
{file = "MarkupSafe-3.0.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f3818cb119498c0678015754eba762e0d61e5b52d34c8b13d770f0719f7b1d79"},
|
1224 |
+
{file = "MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:cdb82a876c47801bb54a690c5ae105a46b392ac6099881cdfb9f6e95e4014c6a"},
|
1225 |
+
{file = "MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:cabc348d87e913db6ab4aa100f01b08f481097838bdddf7c7a84b7575b7309ca"},
|
1226 |
+
{file = "MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:444dcda765c8a838eaae23112db52f1efaf750daddb2d9ca300bcae1039adc5c"},
|
1227 |
+
{file = "MarkupSafe-3.0.2-cp313-cp313-win32.whl", hash = "sha256:bcf3e58998965654fdaff38e58584d8937aa3096ab5354d493c77d1fdd66d7a1"},
|
1228 |
+
{file = "MarkupSafe-3.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:e6a2a455bd412959b57a172ce6328d2dd1f01cb2135efda2e4576e8a23fa3b0f"},
|
1229 |
+
{file = "MarkupSafe-3.0.2-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:b5a6b3ada725cea8a5e634536b1b01c30bcdcd7f9c6fff4151548d5bf6b3a36c"},
|
1230 |
+
{file = "MarkupSafe-3.0.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:a904af0a6162c73e3edcb969eeeb53a63ceeb5d8cf642fade7d39e7963a22ddb"},
|
1231 |
+
{file = "MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4aa4e5faecf353ed117801a068ebab7b7e09ffb6e1d5e412dc852e0da018126c"},
|
1232 |
+
{file = "MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0ef13eaeee5b615fb07c9a7dadb38eac06a0608b41570d8ade51c56539e509d"},
|
1233 |
+
{file = "MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d16a81a06776313e817c951135cf7340a3e91e8c1ff2fac444cfd75fffa04afe"},
|
1234 |
+
{file = "MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:6381026f158fdb7c72a168278597a5e3a5222e83ea18f543112b2662a9b699c5"},
|
1235 |
+
{file = "MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:3d79d162e7be8f996986c064d1c7c817f6df3a77fe3d6859f6f9e7be4b8c213a"},
|
1236 |
+
{file = "MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:131a3c7689c85f5ad20f9f6fb1b866f402c445b220c19fe4308c0b147ccd2ad9"},
|
1237 |
+
{file = "MarkupSafe-3.0.2-cp313-cp313t-win32.whl", hash = "sha256:ba8062ed2cf21c07a9e295d5b8a2a5ce678b913b45fdf68c32d95d6c1291e0b6"},
|
1238 |
+
{file = "MarkupSafe-3.0.2-cp313-cp313t-win_amd64.whl", hash = "sha256:e444a31f8db13eb18ada366ab3cf45fd4b31e4db1236a4448f68778c1d1a5a2f"},
|
1239 |
+
{file = "MarkupSafe-3.0.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:eaa0a10b7f72326f1372a713e73c3f739b524b3af41feb43e4921cb529f5929a"},
|
1240 |
+
{file = "MarkupSafe-3.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:48032821bbdf20f5799ff537c7ac3d1fba0ba032cfc06194faffa8cda8b560ff"},
|
1241 |
+
{file = "MarkupSafe-3.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1a9d3f5f0901fdec14d8d2f66ef7d035f2157240a433441719ac9a3fba440b13"},
|
1242 |
+
{file = "MarkupSafe-3.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:88b49a3b9ff31e19998750c38e030fc7bb937398b1f78cfa599aaef92d693144"},
|
1243 |
+
{file = "MarkupSafe-3.0.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cfad01eed2c2e0c01fd0ecd2ef42c492f7f93902e39a42fc9ee1692961443a29"},
|
1244 |
+
{file = "MarkupSafe-3.0.2-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:1225beacc926f536dc82e45f8a4d68502949dc67eea90eab715dea3a21c1b5f0"},
|
1245 |
+
{file = "MarkupSafe-3.0.2-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:3169b1eefae027567d1ce6ee7cae382c57fe26e82775f460f0b2778beaad66c0"},
|
1246 |
+
{file = "MarkupSafe-3.0.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:eb7972a85c54febfb25b5c4b4f3af4dcc731994c7da0d8a0b4a6eb0640e1d178"},
|
1247 |
+
{file = "MarkupSafe-3.0.2-cp39-cp39-win32.whl", hash = "sha256:8c4e8c3ce11e1f92f6536ff07154f9d49677ebaaafc32db9db4620bc11ed480f"},
|
1248 |
+
{file = "MarkupSafe-3.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:6e296a513ca3d94054c2c881cc913116e90fd030ad1c656b3869762b754f5f8a"},
|
1249 |
+
{file = "markupsafe-3.0.2.tar.gz", hash = "sha256:ee55d3edf80167e48ea11a923c7386f4669df67d7994554387f84e7d8b0a2bf0"},
|
1250 |
+
]
|
1251 |
+
|
1252 |
+
[[package]]
|
1253 |
+
name = "mdurl"
|
1254 |
+
version = "0.1.2"
|
1255 |
+
description = "Markdown URL utilities"
|
1256 |
+
optional = false
|
1257 |
+
python-versions = ">=3.7"
|
1258 |
+
groups = ["main"]
|
1259 |
+
markers = "sys_platform != \"emscripten\""
|
1260 |
+
files = [
|
1261 |
+
{file = "mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8"},
|
1262 |
+
{file = "mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba"},
|
1263 |
+
]
|
1264 |
+
|
1265 |
[[package]]
|
1266 |
name = "numpy"
|
1267 |
version = "2.2.5"
|
|
|
1499 |
{file = "packaging-24.2.tar.gz", hash = "sha256:c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f"},
|
1500 |
]
|
1501 |
|
1502 |
+
[[package]]
|
1503 |
+
name = "pandas"
|
1504 |
+
version = "2.2.3"
|
1505 |
+
description = "Powerful data structures for data analysis, time series, and statistics"
|
1506 |
+
optional = false
|
1507 |
+
python-versions = ">=3.9"
|
1508 |
+
groups = ["main"]
|
1509 |
+
files = [
|
1510 |
+
{file = "pandas-2.2.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:1948ddde24197a0f7add2bdc4ca83bf2b1ef84a1bc8ccffd95eda17fd836ecb5"},
|
1511 |
+
{file = "pandas-2.2.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:381175499d3802cde0eabbaf6324cce0c4f5d52ca6f8c377c29ad442f50f6348"},
|
1512 |
+
{file = "pandas-2.2.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d9c45366def9a3dd85a6454c0e7908f2b3b8e9c138f5dc38fed7ce720d8453ed"},
|
1513 |
+
{file = "pandas-2.2.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:86976a1c5b25ae3f8ccae3a5306e443569ee3c3faf444dfd0f41cda24667ad57"},
|
1514 |
+
{file = "pandas-2.2.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:b8661b0238a69d7aafe156b7fa86c44b881387509653fdf857bebc5e4008ad42"},
|
1515 |
+
{file = "pandas-2.2.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:37e0aced3e8f539eccf2e099f65cdb9c8aa85109b0be6e93e2baff94264bdc6f"},
|
1516 |
+
{file = "pandas-2.2.3-cp310-cp310-win_amd64.whl", hash = "sha256:56534ce0746a58afaf7942ba4863e0ef81c9c50d3f0ae93e9497d6a41a057645"},
|
1517 |
+
{file = "pandas-2.2.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:66108071e1b935240e74525006034333f98bcdb87ea116de573a6a0dccb6c039"},
|
1518 |
+
{file = "pandas-2.2.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7c2875855b0ff77b2a64a0365e24455d9990730d6431b9e0ee18ad8acee13dbd"},
|
1519 |
+
{file = "pandas-2.2.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:cd8d0c3be0515c12fed0bdbae072551c8b54b7192c7b1fda0ba56059a0179698"},
|
1520 |
+
{file = "pandas-2.2.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c124333816c3a9b03fbeef3a9f230ba9a737e9e5bb4060aa2107a86cc0a497fc"},
|
1521 |
+
{file = "pandas-2.2.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:63cc132e40a2e084cf01adf0775b15ac515ba905d7dcca47e9a251819c575ef3"},
|
1522 |
+
{file = "pandas-2.2.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:29401dbfa9ad77319367d36940cd8a0b3a11aba16063e39632d98b0e931ddf32"},
|
1523 |
+
{file = "pandas-2.2.3-cp311-cp311-win_amd64.whl", hash = "sha256:3fc6873a41186404dad67245896a6e440baacc92f5b716ccd1bc9ed2995ab2c5"},
|
1524 |
+
{file = "pandas-2.2.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:b1d432e8d08679a40e2a6d8b2f9770a5c21793a6f9f47fdd52c5ce1948a5a8a9"},
|
1525 |
+
{file = "pandas-2.2.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a5a1595fe639f5988ba6a8e5bc9649af3baf26df3998a0abe56c02609392e0a4"},
|
1526 |
+
{file = "pandas-2.2.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:5de54125a92bb4d1c051c0659e6fcb75256bf799a732a87184e5ea503965bce3"},
|
1527 |
+
{file = "pandas-2.2.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fffb8ae78d8af97f849404f21411c95062db1496aeb3e56f146f0355c9989319"},
|
1528 |
+
{file = "pandas-2.2.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6dfcb5ee8d4d50c06a51c2fffa6cff6272098ad6540aed1a76d15fb9318194d8"},
|
1529 |
+
{file = "pandas-2.2.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:062309c1b9ea12a50e8ce661145c6aab431b1e99530d3cd60640e255778bd43a"},
|
1530 |
+
{file = "pandas-2.2.3-cp312-cp312-win_amd64.whl", hash = "sha256:59ef3764d0fe818125a5097d2ae867ca3fa64df032331b7e0917cf5d7bf66b13"},
|
1531 |
+
{file = "pandas-2.2.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f00d1345d84d8c86a63e476bb4955e46458b304b9575dcf71102b5c705320015"},
|
1532 |
+
{file = "pandas-2.2.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:3508d914817e153ad359d7e069d752cdd736a247c322d932eb89e6bc84217f28"},
|
1533 |
+
{file = "pandas-2.2.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:22a9d949bfc9a502d320aa04e5d02feab689d61da4e7764b62c30b991c42c5f0"},
|
1534 |
+
{file = "pandas-2.2.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f3a255b2c19987fbbe62a9dfd6cff7ff2aa9ccab3fc75218fd4b7530f01efa24"},
|
1535 |
+
{file = "pandas-2.2.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:800250ecdadb6d9c78eae4990da62743b857b470883fa27f652db8bdde7f6659"},
|
1536 |
+
{file = "pandas-2.2.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6374c452ff3ec675a8f46fd9ab25c4ad0ba590b71cf0656f8b6daa5202bca3fb"},
|
1537 |
+
{file = "pandas-2.2.3-cp313-cp313-win_amd64.whl", hash = "sha256:61c5ad4043f791b61dd4752191d9f07f0ae412515d59ba8f005832a532f8736d"},
|
1538 |
+
{file = "pandas-2.2.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:3b71f27954685ee685317063bf13c7709a7ba74fc996b84fc6821c59b0f06468"},
|
1539 |
+
{file = "pandas-2.2.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:38cf8125c40dae9d5acc10fa66af8ea6fdf760b2714ee482ca691fc66e6fcb18"},
|
1540 |
+
{file = "pandas-2.2.3-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:ba96630bc17c875161df3818780af30e43be9b166ce51c9a18c1feae342906c2"},
|
1541 |
+
{file = "pandas-2.2.3-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1db71525a1538b30142094edb9adc10be3f3e176748cd7acc2240c2f2e5aa3a4"},
|
1542 |
+
{file = "pandas-2.2.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:15c0e1e02e93116177d29ff83e8b1619c93ddc9c49083f237d4312337a61165d"},
|
1543 |
+
{file = "pandas-2.2.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:ad5b65698ab28ed8d7f18790a0dc58005c7629f227be9ecc1072aa74c0c1d43a"},
|
1544 |
+
{file = "pandas-2.2.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:bc6b93f9b966093cb0fd62ff1a7e4c09e6d546ad7c1de191767baffc57628f39"},
|
1545 |
+
{file = "pandas-2.2.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:5dbca4c1acd72e8eeef4753eeca07de9b1db4f398669d5994086f788a5d7cc30"},
|
1546 |
+
{file = "pandas-2.2.3-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:8cd6d7cc958a3910f934ea8dbdf17b2364827bb4dafc38ce6eef6bb3d65ff09c"},
|
1547 |
+
{file = "pandas-2.2.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:99df71520d25fade9db7c1076ac94eb994f4d2673ef2aa2e86ee039b6746d20c"},
|
1548 |
+
{file = "pandas-2.2.3-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:31d0ced62d4ea3e231a9f228366919a5ea0b07440d9d4dac345376fd8e1477ea"},
|
1549 |
+
{file = "pandas-2.2.3-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:7eee9e7cea6adf3e3d24e304ac6b8300646e2a5d1cd3a3c2abed9101b0846761"},
|
1550 |
+
{file = "pandas-2.2.3-cp39-cp39-win_amd64.whl", hash = "sha256:4850ba03528b6dd51d6c5d273c46f183f39a9baf3f0143e566b89450965b105e"},
|
1551 |
+
{file = "pandas-2.2.3.tar.gz", hash = "sha256:4f18ba62b61d7e192368b84517265a99b4d7ee8912f8708660fb4a366cc82667"},
|
1552 |
+
]
|
1553 |
+
|
1554 |
+
[package.dependencies]
|
1555 |
+
numpy = {version = ">=1.26.0", markers = "python_version >= \"3.12\""}
|
1556 |
+
python-dateutil = ">=2.8.2"
|
1557 |
+
pytz = ">=2020.1"
|
1558 |
+
tzdata = ">=2022.7"
|
1559 |
+
|
1560 |
+
[package.extras]
|
1561 |
+
all = ["PyQt5 (>=5.15.9)", "SQLAlchemy (>=2.0.0)", "adbc-driver-postgresql (>=0.8.0)", "adbc-driver-sqlite (>=0.8.0)", "beautifulsoup4 (>=4.11.2)", "bottleneck (>=1.3.6)", "dataframe-api-compat (>=0.1.7)", "fastparquet (>=2022.12.0)", "fsspec (>=2022.11.0)", "gcsfs (>=2022.11.0)", "html5lib (>=1.1)", "hypothesis (>=6.46.1)", "jinja2 (>=3.1.2)", "lxml (>=4.9.2)", "matplotlib (>=3.6.3)", "numba (>=0.56.4)", "numexpr (>=2.8.4)", "odfpy (>=1.4.1)", "openpyxl (>=3.1.0)", "pandas-gbq (>=0.19.0)", "psycopg2 (>=2.9.6)", "pyarrow (>=10.0.1)", "pymysql (>=1.0.2)", "pyreadstat (>=1.2.0)", "pytest (>=7.3.2)", "pytest-xdist (>=2.2.0)", "python-calamine (>=0.1.7)", "pyxlsb (>=1.0.10)", "qtpy (>=2.3.0)", "s3fs (>=2022.11.0)", "scipy (>=1.10.0)", "tables (>=3.8.0)", "tabulate (>=0.9.0)", "xarray (>=2022.12.0)", "xlrd (>=2.0.1)", "xlsxwriter (>=3.0.5)", "zstandard (>=0.19.0)"]
|
1562 |
+
aws = ["s3fs (>=2022.11.0)"]
|
1563 |
+
clipboard = ["PyQt5 (>=5.15.9)", "qtpy (>=2.3.0)"]
|
1564 |
+
compression = ["zstandard (>=0.19.0)"]
|
1565 |
+
computation = ["scipy (>=1.10.0)", "xarray (>=2022.12.0)"]
|
1566 |
+
consortium-standard = ["dataframe-api-compat (>=0.1.7)"]
|
1567 |
+
excel = ["odfpy (>=1.4.1)", "openpyxl (>=3.1.0)", "python-calamine (>=0.1.7)", "pyxlsb (>=1.0.10)", "xlrd (>=2.0.1)", "xlsxwriter (>=3.0.5)"]
|
1568 |
+
feather = ["pyarrow (>=10.0.1)"]
|
1569 |
+
fss = ["fsspec (>=2022.11.0)"]
|
1570 |
+
gcp = ["gcsfs (>=2022.11.0)", "pandas-gbq (>=0.19.0)"]
|
1571 |
+
hdf5 = ["tables (>=3.8.0)"]
|
1572 |
+
html = ["beautifulsoup4 (>=4.11.2)", "html5lib (>=1.1)", "lxml (>=4.9.2)"]
|
1573 |
+
mysql = ["SQLAlchemy (>=2.0.0)", "pymysql (>=1.0.2)"]
|
1574 |
+
output-formatting = ["jinja2 (>=3.1.2)", "tabulate (>=0.9.0)"]
|
1575 |
+
parquet = ["pyarrow (>=10.0.1)"]
|
1576 |
+
performance = ["bottleneck (>=1.3.6)", "numba (>=0.56.4)", "numexpr (>=2.8.4)"]
|
1577 |
+
plot = ["matplotlib (>=3.6.3)"]
|
1578 |
+
postgresql = ["SQLAlchemy (>=2.0.0)", "adbc-driver-postgresql (>=0.8.0)", "psycopg2 (>=2.9.6)"]
|
1579 |
+
pyarrow = ["pyarrow (>=10.0.1)"]
|
1580 |
+
spss = ["pyreadstat (>=1.2.0)"]
|
1581 |
+
sql-other = ["SQLAlchemy (>=2.0.0)", "adbc-driver-postgresql (>=0.8.0)", "adbc-driver-sqlite (>=0.8.0)"]
|
1582 |
+
test = ["hypothesis (>=6.46.1)", "pytest (>=7.3.2)", "pytest-xdist (>=2.2.0)"]
|
1583 |
+
xml = ["lxml (>=4.9.2)"]
|
1584 |
+
|
1585 |
+
[[package]]
|
1586 |
+
name = "pillow"
|
1587 |
+
version = "11.2.1"
|
1588 |
+
description = "Python Imaging Library (Fork)"
|
1589 |
+
optional = false
|
1590 |
+
python-versions = ">=3.9"
|
1591 |
+
groups = ["main"]
|
1592 |
+
files = [
|
1593 |
+
{file = "pillow-11.2.1-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:d57a75d53922fc20c165016a20d9c44f73305e67c351bbc60d1adaf662e74047"},
|
1594 |
+
{file = "pillow-11.2.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:127bf6ac4a5b58b3d32fc8289656f77f80567d65660bc46f72c0d77e6600cc95"},
|
1595 |
+
{file = "pillow-11.2.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b4ba4be812c7a40280629e55ae0b14a0aafa150dd6451297562e1764808bbe61"},
|
1596 |
+
{file = "pillow-11.2.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c8bd62331e5032bc396a93609982a9ab6b411c05078a52f5fe3cc59234a3abd1"},
|
1597 |
+
{file = "pillow-11.2.1-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:562d11134c97a62fe3af29581f083033179f7ff435f78392565a1ad2d1c2c45c"},
|
1598 |
+
{file = "pillow-11.2.1-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:c97209e85b5be259994eb5b69ff50c5d20cca0f458ef9abd835e262d9d88b39d"},
|
1599 |
+
{file = "pillow-11.2.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:0c3e6d0f59171dfa2e25d7116217543310908dfa2770aa64b8f87605f8cacc97"},
|
1600 |
+
{file = "pillow-11.2.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:cc1c3bc53befb6096b84165956e886b1729634a799e9d6329a0c512ab651e579"},
|
1601 |
+
{file = "pillow-11.2.1-cp310-cp310-win32.whl", hash = "sha256:312c77b7f07ab2139924d2639860e084ec2a13e72af54d4f08ac843a5fc9c79d"},
|
1602 |
+
{file = "pillow-11.2.1-cp310-cp310-win_amd64.whl", hash = "sha256:9bc7ae48b8057a611e5fe9f853baa88093b9a76303937449397899385da06fad"},
|
1603 |
+
{file = "pillow-11.2.1-cp310-cp310-win_arm64.whl", hash = "sha256:2728567e249cdd939f6cc3d1f049595c66e4187f3c34078cbc0a7d21c47482d2"},
|
1604 |
+
{file = "pillow-11.2.1-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:35ca289f712ccfc699508c4658a1d14652e8033e9b69839edf83cbdd0ba39e70"},
|
1605 |
+
{file = "pillow-11.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e0409af9f829f87a2dfb7e259f78f317a5351f2045158be321fd135973fff7bf"},
|
1606 |
+
{file = "pillow-11.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4e5c5edee874dce4f653dbe59db7c73a600119fbea8d31f53423586ee2aafd7"},
|
1607 |
+
{file = "pillow-11.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b93a07e76d13bff9444f1a029e0af2964e654bfc2e2c2d46bfd080df5ad5f3d8"},
|
1608 |
+
{file = "pillow-11.2.1-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:e6def7eed9e7fa90fde255afaf08060dc4b343bbe524a8f69bdd2a2f0018f600"},
|
1609 |
+
{file = "pillow-11.2.1-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:8f4f3724c068be008c08257207210c138d5f3731af6c155a81c2b09a9eb3a788"},
|
1610 |
+
{file = "pillow-11.2.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:a0a6709b47019dff32e678bc12c63008311b82b9327613f534e496dacaefb71e"},
|
1611 |
+
{file = "pillow-11.2.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:f6b0c664ccb879109ee3ca702a9272d877f4fcd21e5eb63c26422fd6e415365e"},
|
1612 |
+
{file = "pillow-11.2.1-cp311-cp311-win32.whl", hash = "sha256:cc5d875d56e49f112b6def6813c4e3d3036d269c008bf8aef72cd08d20ca6df6"},
|
1613 |
+
{file = "pillow-11.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:0f5c7eda47bf8e3c8a283762cab94e496ba977a420868cb819159980b6709193"},
|
1614 |
+
{file = "pillow-11.2.1-cp311-cp311-win_arm64.whl", hash = "sha256:4d375eb838755f2528ac8cbc926c3e31cc49ca4ad0cf79cff48b20e30634a4a7"},
|
1615 |
+
{file = "pillow-11.2.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:78afba22027b4accef10dbd5eed84425930ba41b3ea0a86fa8d20baaf19d807f"},
|
1616 |
+
{file = "pillow-11.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:78092232a4ab376a35d68c4e6d5e00dfd73454bd12b230420025fbe178ee3b0b"},
|
1617 |
+
{file = "pillow-11.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:25a5f306095c6780c52e6bbb6109624b95c5b18e40aab1c3041da3e9e0cd3e2d"},
|
1618 |
+
{file = "pillow-11.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0c7b29dbd4281923a2bfe562acb734cee96bbb129e96e6972d315ed9f232bef4"},
|
1619 |
+
{file = "pillow-11.2.1-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:3e645b020f3209a0181a418bffe7b4a93171eef6c4ef6cc20980b30bebf17b7d"},
|
1620 |
+
{file = "pillow-11.2.1-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:b2dbea1012ccb784a65349f57bbc93730b96e85b42e9bf7b01ef40443db720b4"},
|
1621 |
+
{file = "pillow-11.2.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:da3104c57bbd72948d75f6a9389e6727d2ab6333c3617f0a89d72d4940aa0443"},
|
1622 |
+
{file = "pillow-11.2.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:598174aef4589af795f66f9caab87ba4ff860ce08cd5bb447c6fc553ffee603c"},
|
1623 |
+
{file = "pillow-11.2.1-cp312-cp312-win32.whl", hash = "sha256:1d535df14716e7f8776b9e7fee118576d65572b4aad3ed639be9e4fa88a1cad3"},
|
1624 |
+
{file = "pillow-11.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:14e33b28bf17c7a38eede290f77db7c664e4eb01f7869e37fa98a5aa95978941"},
|
1625 |
+
{file = "pillow-11.2.1-cp312-cp312-win_arm64.whl", hash = "sha256:21e1470ac9e5739ff880c211fc3af01e3ae505859392bf65458c224d0bf283eb"},
|
1626 |
+
{file = "pillow-11.2.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:fdec757fea0b793056419bca3e9932eb2b0ceec90ef4813ea4c1e072c389eb28"},
|
1627 |
+
{file = "pillow-11.2.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:b0e130705d568e2f43a17bcbe74d90958e8a16263868a12c3e0d9c8162690830"},
|
1628 |
+
{file = "pillow-11.2.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7bdb5e09068332578214cadd9c05e3d64d99e0e87591be22a324bdbc18925be0"},
|
1629 |
+
{file = "pillow-11.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d189ba1bebfbc0c0e529159631ec72bb9e9bc041f01ec6d3233d6d82eb823bc1"},
|
1630 |
+
{file = "pillow-11.2.1-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:191955c55d8a712fab8934a42bfefbf99dd0b5875078240943f913bb66d46d9f"},
|
1631 |
+
{file = "pillow-11.2.1-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:ad275964d52e2243430472fc5d2c2334b4fc3ff9c16cb0a19254e25efa03a155"},
|
1632 |
+
{file = "pillow-11.2.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:750f96efe0597382660d8b53e90dd1dd44568a8edb51cb7f9d5d918b80d4de14"},
|
1633 |
+
{file = "pillow-11.2.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:fe15238d3798788d00716637b3d4e7bb6bde18b26e5d08335a96e88564a36b6b"},
|
1634 |
+
{file = "pillow-11.2.1-cp313-cp313-win32.whl", hash = "sha256:3fe735ced9a607fee4f481423a9c36701a39719252a9bb251679635f99d0f7d2"},
|
1635 |
+
{file = "pillow-11.2.1-cp313-cp313-win_amd64.whl", hash = "sha256:74ee3d7ecb3f3c05459ba95eed5efa28d6092d751ce9bf20e3e253a4e497e691"},
|
1636 |
+
{file = "pillow-11.2.1-cp313-cp313-win_arm64.whl", hash = "sha256:5119225c622403afb4b44bad4c1ca6c1f98eed79db8d3bc6e4e160fc6339d66c"},
|
1637 |
+
{file = "pillow-11.2.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:8ce2e8411c7aaef53e6bb29fe98f28cd4fbd9a1d9be2eeea434331aac0536b22"},
|
1638 |
+
{file = "pillow-11.2.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:9ee66787e095127116d91dea2143db65c7bb1e232f617aa5957c0d9d2a3f23a7"},
|
1639 |
+
{file = "pillow-11.2.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9622e3b6c1d8b551b6e6f21873bdcc55762b4b2126633014cea1803368a9aa16"},
|
1640 |
+
{file = "pillow-11.2.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:63b5dff3a68f371ea06025a1a6966c9a1e1ee452fc8020c2cd0ea41b83e9037b"},
|
1641 |
+
{file = "pillow-11.2.1-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:31df6e2d3d8fc99f993fd253e97fae451a8db2e7207acf97859732273e108406"},
|
1642 |
+
{file = "pillow-11.2.1-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:062b7a42d672c45a70fa1f8b43d1d38ff76b63421cbbe7f88146b39e8a558d91"},
|
1643 |
+
{file = "pillow-11.2.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:4eb92eca2711ef8be42fd3f67533765d9fd043b8c80db204f16c8ea62ee1a751"},
|
1644 |
+
{file = "pillow-11.2.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:f91ebf30830a48c825590aede79376cb40f110b387c17ee9bd59932c961044f9"},
|
1645 |
+
{file = "pillow-11.2.1-cp313-cp313t-win32.whl", hash = "sha256:e0b55f27f584ed623221cfe995c912c61606be8513bfa0e07d2c674b4516d9dd"},
|
1646 |
+
{file = "pillow-11.2.1-cp313-cp313t-win_amd64.whl", hash = "sha256:36d6b82164c39ce5482f649b437382c0fb2395eabc1e2b1702a6deb8ad647d6e"},
|
1647 |
+
{file = "pillow-11.2.1-cp313-cp313t-win_arm64.whl", hash = "sha256:225c832a13326e34f212d2072982bb1adb210e0cc0b153e688743018c94a2681"},
|
1648 |
+
{file = "pillow-11.2.1-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:7491cf8a79b8eb867d419648fff2f83cb0b3891c8b36da92cc7f1931d46108c8"},
|
1649 |
+
{file = "pillow-11.2.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:8b02d8f9cb83c52578a0b4beadba92e37d83a4ef11570a8688bbf43f4ca50909"},
|
1650 |
+
{file = "pillow-11.2.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:014ca0050c85003620526b0ac1ac53f56fc93af128f7546623cc8e31875ab928"},
|
1651 |
+
{file = "pillow-11.2.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3692b68c87096ac6308296d96354eddd25f98740c9d2ab54e1549d6c8aea9d79"},
|
1652 |
+
{file = "pillow-11.2.1-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:f781dcb0bc9929adc77bad571b8621ecb1e4cdef86e940fe2e5b5ee24fd33b35"},
|
1653 |
+
{file = "pillow-11.2.1-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:2b490402c96f907a166615e9a5afacf2519e28295f157ec3a2bb9bd57de638cb"},
|
1654 |
+
{file = "pillow-11.2.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:dd6b20b93b3ccc9c1b597999209e4bc5cf2853f9ee66e3fc9a400a78733ffc9a"},
|
1655 |
+
{file = "pillow-11.2.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:4b835d89c08a6c2ee7781b8dd0a30209a8012b5f09c0a665b65b0eb3560b6f36"},
|
1656 |
+
{file = "pillow-11.2.1-cp39-cp39-win32.whl", hash = "sha256:b10428b3416d4f9c61f94b494681280be7686bda15898a3a9e08eb66a6d92d67"},
|
1657 |
+
{file = "pillow-11.2.1-cp39-cp39-win_amd64.whl", hash = "sha256:6ebce70c3f486acf7591a3d73431fa504a4e18a9b97ff27f5f47b7368e4b9dd1"},
|
1658 |
+
{file = "pillow-11.2.1-cp39-cp39-win_arm64.whl", hash = "sha256:c27476257b2fdcd7872d54cfd119b3a9ce4610fb85c8e32b70b42e3680a29a1e"},
|
1659 |
+
{file = "pillow-11.2.1-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:9b7b0d4fd2635f54ad82785d56bc0d94f147096493a79985d0ab57aedd563156"},
|
1660 |
+
{file = "pillow-11.2.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:aa442755e31c64037aa7c1cb186e0b369f8416c567381852c63444dd666fb772"},
|
1661 |
+
{file = "pillow-11.2.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f0d3348c95b766f54b76116d53d4cb171b52992a1027e7ca50c81b43b9d9e363"},
|
1662 |
+
{file = "pillow-11.2.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:85d27ea4c889342f7e35f6d56e7e1cb345632ad592e8c51b693d7b7556043ce0"},
|
1663 |
+
{file = "pillow-11.2.1-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:bf2c33d6791c598142f00c9c4c7d47f6476731c31081331664eb26d6ab583e01"},
|
1664 |
+
{file = "pillow-11.2.1-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:e616e7154c37669fc1dfc14584f11e284e05d1c650e1c0f972f281c4ccc53193"},
|
1665 |
+
{file = "pillow-11.2.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:39ad2e0f424394e3aebc40168845fee52df1394a4673a6ee512d840d14ab3013"},
|
1666 |
+
{file = "pillow-11.2.1-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:80f1df8dbe9572b4b7abdfa17eb5d78dd620b1d55d9e25f834efdbee872d3aed"},
|
1667 |
+
{file = "pillow-11.2.1-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:ea926cfbc3957090becbcbbb65ad177161a2ff2ad578b5a6ec9bb1e1cd78753c"},
|
1668 |
+
{file = "pillow-11.2.1-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:738db0e0941ca0376804d4de6a782c005245264edaa253ffce24e5a15cbdc7bd"},
|
1669 |
+
{file = "pillow-11.2.1-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9db98ab6565c69082ec9b0d4e40dd9f6181dab0dd236d26f7a50b8b9bfbd5076"},
|
1670 |
+
{file = "pillow-11.2.1-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:036e53f4170e270ddb8797d4c590e6dd14d28e15c7da375c18978045f7e6c37b"},
|
1671 |
+
{file = "pillow-11.2.1-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:14f73f7c291279bd65fda51ee87affd7c1e097709f7fdd0188957a16c264601f"},
|
1672 |
+
{file = "pillow-11.2.1-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:208653868d5c9ecc2b327f9b9ef34e0e42a4cdd172c2988fd81d62d2bc9bc044"},
|
1673 |
+
{file = "pillow-11.2.1.tar.gz", hash = "sha256:a64dd61998416367b7ef979b73d3a85853ba9bec4c2925f74e588879a58716b6"},
|
1674 |
+
]
|
1675 |
+
|
1676 |
+
[package.extras]
|
1677 |
+
docs = ["furo", "olefile", "sphinx (>=8.2)", "sphinx-copybutton", "sphinx-inline-tabs", "sphinxext-opengraph"]
|
1678 |
+
fpx = ["olefile"]
|
1679 |
+
mic = ["olefile"]
|
1680 |
+
test-arrow = ["pyarrow"]
|
1681 |
+
tests = ["check-manifest", "coverage (>=7.4.2)", "defusedxml", "markdown2", "olefile", "packaging", "pyroma", "pytest", "pytest-cov", "pytest-timeout", "trove-classifiers (>=2024.10.12)"]
|
1682 |
+
typing = ["typing-extensions ; python_version < \"3.10\""]
|
1683 |
+
xmp = ["defusedxml"]
|
1684 |
+
|
1685 |
[[package]]
|
1686 |
name = "pluggy"
|
1687 |
version = "1.5.0"
|
|
|
1845 |
[package.dependencies]
|
1846 |
typing-extensions = ">=4.6.0,<4.7.0 || >4.7.0"
|
1847 |
|
1848 |
+
[[package]]
|
1849 |
+
name = "pydub"
|
1850 |
+
version = "0.25.1"
|
1851 |
+
description = "Manipulate audio with an simple and easy high level interface"
|
1852 |
+
optional = false
|
1853 |
+
python-versions = "*"
|
1854 |
+
groups = ["main"]
|
1855 |
+
files = [
|
1856 |
+
{file = "pydub-0.25.1-py2.py3-none-any.whl", hash = "sha256:65617e33033874b59d87db603aa1ed450633288aefead953b30bded59cb599a6"},
|
1857 |
+
{file = "pydub-0.25.1.tar.gz", hash = "sha256:980a33ce9949cab2a569606b65674d748ecbca4f0796887fd6f46173a7b0d30f"},
|
1858 |
+
]
|
1859 |
+
|
1860 |
+
[[package]]
|
1861 |
+
name = "pygments"
|
1862 |
+
version = "2.19.1"
|
1863 |
+
description = "Pygments is a syntax highlighting package written in Python."
|
1864 |
+
optional = false
|
1865 |
+
python-versions = ">=3.8"
|
1866 |
+
groups = ["main"]
|
1867 |
+
markers = "sys_platform != \"emscripten\""
|
1868 |
+
files = [
|
1869 |
+
{file = "pygments-2.19.1-py3-none-any.whl", hash = "sha256:9ea1544ad55cecf4b8242fab6dd35a93bbce657034b0611ee383099054ab6d8c"},
|
1870 |
+
{file = "pygments-2.19.1.tar.gz", hash = "sha256:61c16d2a8576dc0649d9f39e089b5f02bcd27fba10d8fb4dcc28173f7a45151f"},
|
1871 |
+
]
|
1872 |
+
|
1873 |
+
[package.extras]
|
1874 |
+
windows-terminal = ["colorama (>=0.4.6)"]
|
1875 |
+
|
1876 |
+
[[package]]
|
1877 |
+
name = "pystache"
|
1878 |
+
version = "0.6.8"
|
1879 |
+
description = "Mustache for Python"
|
1880 |
+
optional = false
|
1881 |
+
python-versions = ">=3.8"
|
1882 |
+
groups = ["main"]
|
1883 |
+
files = [
|
1884 |
+
{file = "pystache-0.6.8-py3-none-any.whl", hash = "sha256:7211e000974a6e06bce2d4d5cad8df03bcfffefd367209117376e4527a1c3cb8"},
|
1885 |
+
{file = "pystache-0.6.8.tar.gz", hash = "sha256:3707518e6a4d26dd189b07c10c669b1fc17df72684617c327bd3550e7075c72c"},
|
1886 |
+
]
|
1887 |
+
|
1888 |
+
[package.extras]
|
1889 |
+
cov = ["coverage", "coverage_python_version"]
|
1890 |
+
doc = ["recommonmark", "sphinx", "sphinx_git", "sphinx_rtd_theme", "sphinxcontrib-apidoc"]
|
1891 |
+
test = ["pytest", "pytest-cov"]
|
1892 |
+
|
1893 |
[[package]]
|
1894 |
name = "pytest"
|
1895 |
version = "7.4.4"
|
|
|
1911 |
[package.extras]
|
1912 |
testing = ["argcomplete", "attrs (>=19.2.0)", "hypothesis (>=3.56)", "mock", "nose", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"]
|
1913 |
|
1914 |
+
[[package]]
|
1915 |
+
name = "python-dateutil"
|
1916 |
+
version = "2.9.0.post0"
|
1917 |
+
description = "Extensions to the standard Python datetime module"
|
1918 |
+
optional = false
|
1919 |
+
python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7"
|
1920 |
+
groups = ["main"]
|
1921 |
+
files = [
|
1922 |
+
{file = "python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3"},
|
1923 |
+
{file = "python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427"},
|
1924 |
+
]
|
1925 |
+
|
1926 |
+
[package.dependencies]
|
1927 |
+
six = ">=1.5"
|
1928 |
+
|
1929 |
[[package]]
|
1930 |
name = "python-dotenv"
|
1931 |
version = "1.1.0"
|
|
|
1941 |
[package.extras]
|
1942 |
cli = ["click (>=5.0)"]
|
1943 |
|
1944 |
+
[[package]]
|
1945 |
+
name = "python-multipart"
|
1946 |
+
version = "0.0.20"
|
1947 |
+
description = "A streaming multipart parser for Python"
|
1948 |
+
optional = false
|
1949 |
+
python-versions = ">=3.8"
|
1950 |
+
groups = ["main"]
|
1951 |
+
files = [
|
1952 |
+
{file = "python_multipart-0.0.20-py3-none-any.whl", hash = "sha256:8a62d3a8335e06589fe01f2a3e178cdcc632f3fbe0d492ad9ee0ec35aab1f104"},
|
1953 |
+
{file = "python_multipart-0.0.20.tar.gz", hash = "sha256:8dd0cab45b8e23064ae09147625994d090fa46f5b0d1e13af944c331a7fa9d13"},
|
1954 |
+
]
|
1955 |
+
|
1956 |
[[package]]
|
1957 |
name = "python-slugify"
|
1958 |
version = "8.0.4"
|
|
|
1971 |
[package.extras]
|
1972 |
unidecode = ["Unidecode (>=1.1.1)"]
|
1973 |
|
1974 |
+
[[package]]
|
1975 |
+
name = "pytz"
|
1976 |
+
version = "2025.2"
|
1977 |
+
description = "World timezone definitions, modern and historical"
|
1978 |
+
optional = false
|
1979 |
+
python-versions = "*"
|
1980 |
+
groups = ["main"]
|
1981 |
+
files = [
|
1982 |
+
{file = "pytz-2025.2-py2.py3-none-any.whl", hash = "sha256:5ddf76296dd8c44c26eb8f4b6f35488f3ccbf6fbbd7adee0b7262d43f0ec2f00"},
|
1983 |
+
{file = "pytz-2025.2.tar.gz", hash = "sha256:360b9e3dbb49a209c21ad61809c7fb453643e048b38924c765813546746e81c3"},
|
1984 |
+
]
|
1985 |
+
|
1986 |
[[package]]
|
1987 |
name = "pyyaml"
|
1988 |
version = "6.0.2"
|
|
|
2187 |
[package.dependencies]
|
2188 |
requests = ">=2.0.1,<3.0.0"
|
2189 |
|
2190 |
+
[[package]]
|
2191 |
+
name = "rich"
|
2192 |
+
version = "14.0.0"
|
2193 |
+
description = "Render rich text, tables, progress bars, syntax highlighting, markdown and more to the terminal"
|
2194 |
+
optional = false
|
2195 |
+
python-versions = ">=3.8.0"
|
2196 |
+
groups = ["main"]
|
2197 |
+
markers = "sys_platform != \"emscripten\""
|
2198 |
+
files = [
|
2199 |
+
{file = "rich-14.0.0-py3-none-any.whl", hash = "sha256:1c9491e1951aac09caffd42f448ee3d04e58923ffe14993f6e83068dc395d7e0"},
|
2200 |
+
{file = "rich-14.0.0.tar.gz", hash = "sha256:82f1bc23a6a21ebca4ae0c45af9bdbc492ed20231dcb63f297d6d1021a9d5725"},
|
2201 |
+
]
|
2202 |
+
|
2203 |
+
[package.dependencies]
|
2204 |
+
markdown-it-py = ">=2.2.0"
|
2205 |
+
pygments = ">=2.13.0,<3.0.0"
|
2206 |
+
|
2207 |
+
[package.extras]
|
2208 |
+
jupyter = ["ipywidgets (>=7.5.1,<9)"]
|
2209 |
+
|
2210 |
+
[[package]]
|
2211 |
+
name = "ruff"
|
2212 |
+
version = "0.11.10"
|
2213 |
+
description = "An extremely fast Python linter and code formatter, written in Rust."
|
2214 |
+
optional = false
|
2215 |
+
python-versions = ">=3.7"
|
2216 |
+
groups = ["main"]
|
2217 |
+
markers = "sys_platform != \"emscripten\""
|
2218 |
+
files = [
|
2219 |
+
{file = "ruff-0.11.10-py3-none-linux_armv6l.whl", hash = "sha256:859a7bfa7bc8888abbea31ef8a2b411714e6a80f0d173c2a82f9041ed6b50f58"},
|
2220 |
+
{file = "ruff-0.11.10-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:968220a57e09ea5e4fd48ed1c646419961a0570727c7e069842edd018ee8afed"},
|
2221 |
+
{file = "ruff-0.11.10-py3-none-macosx_11_0_arm64.whl", hash = "sha256:1067245bad978e7aa7b22f67113ecc6eb241dca0d9b696144256c3a879663bca"},
|
2222 |
+
{file = "ruff-0.11.10-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f4854fd09c7aed5b1590e996a81aeff0c9ff51378b084eb5a0b9cd9518e6cff2"},
|
2223 |
+
{file = "ruff-0.11.10-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8b4564e9f99168c0f9195a0fd5fa5928004b33b377137f978055e40008a082c5"},
|
2224 |
+
{file = "ruff-0.11.10-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5b6a9cc5b62c03cc1fea0044ed8576379dbaf751d5503d718c973d5418483641"},
|
2225 |
+
{file = "ruff-0.11.10-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:607ecbb6f03e44c9e0a93aedacb17b4eb4f3563d00e8b474298a201622677947"},
|
2226 |
+
{file = "ruff-0.11.10-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7b3a522fa389402cd2137df9ddefe848f727250535c70dafa840badffb56b7a4"},
|
2227 |
+
{file = "ruff-0.11.10-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2f071b0deed7e9245d5820dac235cbdd4ef99d7b12ff04c330a241ad3534319f"},
|
2228 |
+
{file = "ruff-0.11.10-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4a60e3a0a617eafba1f2e4186d827759d65348fa53708ca547e384db28406a0b"},
|
2229 |
+
{file = "ruff-0.11.10-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:da8ec977eaa4b7bf75470fb575bea2cb41a0e07c7ea9d5a0a97d13dbca697bf2"},
|
2230 |
+
{file = "ruff-0.11.10-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:ddf8967e08227d1bd95cc0851ef80d2ad9c7c0c5aab1eba31db49cf0a7b99523"},
|
2231 |
+
{file = "ruff-0.11.10-py3-none-musllinux_1_2_i686.whl", hash = "sha256:5a94acf798a82db188f6f36575d80609072b032105d114b0f98661e1679c9125"},
|
2232 |
+
{file = "ruff-0.11.10-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:3afead355f1d16d95630df28d4ba17fb2cb9c8dfac8d21ced14984121f639bad"},
|
2233 |
+
{file = "ruff-0.11.10-py3-none-win32.whl", hash = "sha256:dc061a98d32a97211af7e7f3fa1d4ca2fcf919fb96c28f39551f35fc55bdbc19"},
|
2234 |
+
{file = "ruff-0.11.10-py3-none-win_amd64.whl", hash = "sha256:5cc725fbb4d25b0f185cb42df07ab6b76c4489b4bfb740a175f3a59c70e8a224"},
|
2235 |
+
{file = "ruff-0.11.10-py3-none-win_arm64.whl", hash = "sha256:ef69637b35fb8b210743926778d0e45e1bffa850a7c61e428c6b971549b5f5d1"},
|
2236 |
+
{file = "ruff-0.11.10.tar.gz", hash = "sha256:d522fb204b4959909ecac47da02830daec102eeb100fb50ea9554818d47a5fa6"},
|
2237 |
+
]
|
2238 |
+
|
2239 |
+
[[package]]
|
2240 |
+
name = "safehttpx"
|
2241 |
+
version = "0.1.6"
|
2242 |
+
description = "A small Python library created to help developers protect their applications from Server Side Request Forgery (SSRF) attacks."
|
2243 |
+
optional = false
|
2244 |
+
python-versions = ">3.9"
|
2245 |
+
groups = ["main"]
|
2246 |
+
files = [
|
2247 |
+
{file = "safehttpx-0.1.6-py3-none-any.whl", hash = "sha256:407cff0b410b071623087c63dd2080c3b44dc076888d8c5823c00d1e58cb381c"},
|
2248 |
+
{file = "safehttpx-0.1.6.tar.gz", hash = "sha256:b356bfc82cee3a24c395b94a2dbeabbed60aff1aa5fa3b5fe97c4f2456ebce42"},
|
2249 |
+
]
|
2250 |
+
|
2251 |
+
[package.dependencies]
|
2252 |
+
httpx = "*"
|
2253 |
+
|
2254 |
+
[package.extras]
|
2255 |
+
dev = ["pytest"]
|
2256 |
+
|
2257 |
+
[[package]]
|
2258 |
+
name = "semantic-version"
|
2259 |
+
version = "2.10.0"
|
2260 |
+
description = "A library implementing the 'SemVer' scheme."
|
2261 |
+
optional = false
|
2262 |
+
python-versions = ">=2.7"
|
2263 |
+
groups = ["main"]
|
2264 |
+
files = [
|
2265 |
+
{file = "semantic_version-2.10.0-py2.py3-none-any.whl", hash = "sha256:de78a3b8e0feda74cabc54aab2da702113e33ac9d9eb9d2389bcf1f58b7d9177"},
|
2266 |
+
{file = "semantic_version-2.10.0.tar.gz", hash = "sha256:bdabb6d336998cbb378d4b9db3a4b56a1e3235701dc05ea2690d9a997ed5041c"},
|
2267 |
+
]
|
2268 |
+
|
2269 |
+
[package.extras]
|
2270 |
+
dev = ["Django (>=1.11)", "check-manifest", "colorama (<=0.4.1) ; python_version == \"3.4\"", "coverage", "flake8", "nose2", "readme-renderer (<25.0) ; python_version == \"3.4\"", "tox", "wheel", "zest.releaser[recommended]"]
|
2271 |
+
doc = ["Sphinx", "sphinx-rtd-theme"]
|
2272 |
+
|
2273 |
+
[[package]]
|
2274 |
+
name = "shellingham"
|
2275 |
+
version = "1.5.4"
|
2276 |
+
description = "Tool to Detect Surrounding Shell"
|
2277 |
+
optional = false
|
2278 |
+
python-versions = ">=3.7"
|
2279 |
+
groups = ["main"]
|
2280 |
+
markers = "sys_platform != \"emscripten\""
|
2281 |
+
files = [
|
2282 |
+
{file = "shellingham-1.5.4-py2.py3-none-any.whl", hash = "sha256:7ecfff8f2fd72616f7481040475a65b2bf8af90a56c89140852d1120324e8686"},
|
2283 |
+
{file = "shellingham-1.5.4.tar.gz", hash = "sha256:8dbca0739d487e5bd35ab3ca4b36e11c4078f3a234bfce294b0a0291363404de"},
|
2284 |
+
]
|
2285 |
+
|
2286 |
+
[[package]]
|
2287 |
+
name = "six"
|
2288 |
+
version = "1.17.0"
|
2289 |
+
description = "Python 2 and 3 compatibility utilities"
|
2290 |
+
optional = false
|
2291 |
+
python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7"
|
2292 |
+
groups = ["main"]
|
2293 |
+
files = [
|
2294 |
+
{file = "six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274"},
|
2295 |
+
{file = "six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81"},
|
2296 |
+
]
|
2297 |
+
|
2298 |
[[package]]
|
2299 |
name = "sniffio"
|
2300 |
version = "1.3.1"
|
|
|
2497 |
[package.extras]
|
2498 |
blobfile = ["blobfile (>=2)"]
|
2499 |
|
2500 |
+
[[package]]
|
2501 |
+
name = "tomlkit"
|
2502 |
+
version = "0.13.2"
|
2503 |
+
description = "Style preserving TOML library"
|
2504 |
+
optional = false
|
2505 |
+
python-versions = ">=3.8"
|
2506 |
+
groups = ["main"]
|
2507 |
+
files = [
|
2508 |
+
{file = "tomlkit-0.13.2-py3-none-any.whl", hash = "sha256:7a974427f6e119197f670fbbbeae7bef749a6c14e793db934baefc1b5f03efde"},
|
2509 |
+
{file = "tomlkit-0.13.2.tar.gz", hash = "sha256:fff5fe59a87295b278abd31bec92c15d9bc4a06885ab12bcea52c71119392e79"},
|
2510 |
+
]
|
2511 |
+
|
2512 |
[[package]]
|
2513 |
name = "tqdm"
|
2514 |
version = "4.67.1"
|
|
|
2531 |
slack = ["slack-sdk"]
|
2532 |
telegram = ["requests"]
|
2533 |
|
2534 |
+
[[package]]
|
2535 |
+
name = "typer"
|
2536 |
+
version = "0.15.4"
|
2537 |
+
description = "Typer, build great CLIs. Easy to code. Based on Python type hints."
|
2538 |
+
optional = false
|
2539 |
+
python-versions = ">=3.7"
|
2540 |
+
groups = ["main"]
|
2541 |
+
markers = "sys_platform != \"emscripten\""
|
2542 |
+
files = [
|
2543 |
+
{file = "typer-0.15.4-py3-none-any.whl", hash = "sha256:eb0651654dcdea706780c466cf06d8f174405a659ffff8f163cfbfee98c0e173"},
|
2544 |
+
{file = "typer-0.15.4.tar.gz", hash = "sha256:89507b104f9b6a0730354f27c39fae5b63ccd0c95b1ce1f1a6ba0cfd329997c3"},
|
2545 |
+
]
|
2546 |
+
|
2547 |
+
[package.dependencies]
|
2548 |
+
click = ">=8.0.0,<8.2"
|
2549 |
+
rich = ">=10.11.0"
|
2550 |
+
shellingham = ">=1.3.0"
|
2551 |
+
typing-extensions = ">=3.7.4.3"
|
2552 |
+
|
2553 |
[[package]]
|
2554 |
name = "typing-extensions"
|
2555 |
version = "4.13.1"
|
|
|
2577 |
[package.dependencies]
|
2578 |
typing-extensions = ">=4.12.0"
|
2579 |
|
2580 |
+
[[package]]
|
2581 |
+
name = "tzdata"
|
2582 |
+
version = "2025.2"
|
2583 |
+
description = "Provider of IANA time zone data"
|
2584 |
+
optional = false
|
2585 |
+
python-versions = ">=2"
|
2586 |
+
groups = ["main"]
|
2587 |
+
files = [
|
2588 |
+
{file = "tzdata-2025.2-py2.py3-none-any.whl", hash = "sha256:1a403fada01ff9221ca8044d701868fa132215d84beb92242d9acd2147f667a8"},
|
2589 |
+
{file = "tzdata-2025.2.tar.gz", hash = "sha256:b60a638fcc0daffadf82fe0f57e53d06bdec2f36c4df66280ae79bce6bd6f2b9"},
|
2590 |
+
]
|
2591 |
+
|
2592 |
[[package]]
|
2593 |
name = "urllib3"
|
2594 |
version = "2.4.0"
|
|
|
3115 |
[metadata]
|
3116 |
lock-version = "2.1"
|
3117 |
python-versions = "^3.12"
|
3118 |
+
content-hash = "b60012f5dd4982e945bd68bac9e2ad63f588b2a539b6934d3042146dd205ae79"
|
api/pyproject.toml
CHANGED
@@ -23,6 +23,8 @@ zep-cloud = "^2.12.1"
|
|
23 |
colorama = "^0.4.6"
|
24 |
langchain = "^0.3.25"
|
25 |
langgraph = "^0.4.3"
|
|
|
|
|
26 |
|
27 |
[tool.poetry.group.dev.dependencies]
|
28 |
pytest = "^7.4.0"
|
|
|
23 |
colorama = "^0.4.6"
|
24 |
langchain = "^0.3.25"
|
25 |
langgraph = "^0.4.3"
|
26 |
+
freeplay = "^0.3.21"
|
27 |
+
gradio = "^5.29.1"
|
28 |
|
29 |
[tool.poetry.group.dev.dependencies]
|
30 |
pytest = "^7.4.0"
|
api/scripts/freeplay_playground.py
ADDED
@@ -0,0 +1,27 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import asyncio
|
2 |
+
from pprint import pprint
|
3 |
+
from utils.freeplay_helpers import get_formatted_prompt, get_prompt
|
4 |
+
import datetime
|
5 |
+
|
6 |
+
async def main():
|
7 |
+
template = "casual_fan_prompt"
|
8 |
+
environment = "latest"
|
9 |
+
variables = {
|
10 |
+
"now": datetime.datetime.now(datetime.UTC).strftime('%Y-%m-%d'),
|
11 |
+
"zep_context": "Zep is your daddy",
|
12 |
+
}
|
13 |
+
history = [
|
14 |
+
{"role": "user", "content": "what are some dinner ideas..."},
|
15 |
+
{"role": "assistant", "content": "here are some dinner ideas..."},
|
16 |
+
]
|
17 |
+
|
18 |
+
prompt = get_formatted_prompt(template, environment, variables, history=history)
|
19 |
+
# print(prompt.system_content)
|
20 |
+
pprint(prompt.llm_prompt)
|
21 |
+
|
22 |
+
# template_prompt = await get_prompt(template, environment)
|
23 |
+
# print(template_prompt.messages)
|
24 |
+
|
25 |
+
if __name__ == "__main__":
|
26 |
+
asyncio.run(main())
|
27 |
+
|
api/scripts/generate_freeplay_dataset.py
ADDED
@@ -0,0 +1,38 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import json
|
2 |
+
import os
|
3 |
+
import datetime
|
4 |
+
|
5 |
+
|
6 |
+
def export_dict_as_jsonl(data: dict, filename: str):
|
7 |
+
"""
|
8 |
+
Export a dictionary as a JSONL file.
|
9 |
+
"""
|
10 |
+
with open(filename, "w") as f:
|
11 |
+
for item in data:
|
12 |
+
f.write(json.dumps(item) + "\n")
|
13 |
+
|
14 |
+
|
15 |
+
"""
|
16 |
+
{
|
17 |
+
"inputs": {"": ""},
|
18 |
+
"output": "",
|
19 |
+
},
|
20 |
+
"""
|
21 |
+
|
22 |
+
|
23 |
+
if __name__ == "__main__":
|
24 |
+
data = [
|
25 |
+
{
|
26 |
+
"inputs": {
|
27 |
+
"now": datetime.datetime.now(datetime.UTC).strftime('%Y-%m-%d'),
|
28 |
+
"zep_context": "Zep is your daddy",
|
29 |
+
"history": [
|
30 |
+
{"role": "user", "content": "what are some dinner ideas..."},
|
31 |
+
# {"role": "assistant", "content": "here are some dinner ideas..."},
|
32 |
+
],
|
33 |
+
},
|
34 |
+
"output": "here are some dinner ideas...",
|
35 |
+
},
|
36 |
+
]
|
37 |
+
# export dict as jsonl
|
38 |
+
export_dict_as_jsonl(data, "formatted_prompt.jsonl")
|
api/server_gradio.py
ADDED
@@ -0,0 +1,134 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import asyncio
|
2 |
+
import gradio as gr
|
3 |
+
import time
|
4 |
+
from pydantic import BaseModel
|
5 |
+
from threading import Thread
|
6 |
+
from langchain_core.messages import HumanMessage, AIMessage
|
7 |
+
from event_handlers.gradio_handler import GradioEventHandler
|
8 |
+
from workflows.base import build_workflow
|
9 |
+
|
10 |
+
lorem_ipsum = """Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."""
|
11 |
+
show_state = True
|
12 |
+
|
13 |
+
|
14 |
+
class AppState(BaseModel):
|
15 |
+
count: int = 0
|
16 |
+
persona: str = "Casual Fan"
|
17 |
+
user_query: str = ""
|
18 |
+
history: list = []
|
19 |
+
|
20 |
+
def clear(self) -> None:
|
21 |
+
"""Reset the state to default values."""
|
22 |
+
self.count = 0
|
23 |
+
self.persona = "Casual Fan"
|
24 |
+
self.user_query = ""
|
25 |
+
self.history = []
|
26 |
+
|
27 |
+
|
28 |
+
with gr.Blocks() as demo:
|
29 |
+
state = gr.State(AppState())
|
30 |
+
handler = GradioEventHandler()
|
31 |
+
workflow_state = {
|
32 |
+
"session_id": "5aed14ff09fb415ba77439409f458909",
|
33 |
+
"messages": [],
|
34 |
+
}
|
35 |
+
|
36 |
+
gr.Markdown("# Huge League Soccer")
|
37 |
+
llm_response = gr.Textbox(label="LLM Response", lines=10)
|
38 |
+
count = gr.Number(
|
39 |
+
label="Count",
|
40 |
+
interactive=False,
|
41 |
+
visible=show_state,
|
42 |
+
)
|
43 |
+
persona_disp = gr.Text(
|
44 |
+
label="Persona",
|
45 |
+
interactive=False,
|
46 |
+
value=state.value.persona,
|
47 |
+
visible=show_state,
|
48 |
+
)
|
49 |
+
|
50 |
+
with gr.Row(scale=1):
|
51 |
+
with gr.Column(scale=1):
|
52 |
+
persona = gr.Radio(
|
53 |
+
choices=["Casual Fan", "Super Fan"],
|
54 |
+
value="Casual Fan",
|
55 |
+
label="Select Persona",
|
56 |
+
)
|
57 |
+
with gr.Column(scale=2):
|
58 |
+
user_query = gr.Textbox(
|
59 |
+
label="User Query",
|
60 |
+
placeholder="Ask me about Huge League Soccer...",
|
61 |
+
# lines=3,
|
62 |
+
autofocus=True,
|
63 |
+
show_label=False,
|
64 |
+
)
|
65 |
+
submit_btn = gr.Button("Submit", variant="primary", scale=0)
|
66 |
+
|
67 |
+
clear_state_btn = gr.Button("Clear State", variant="stop", scale=1)
|
68 |
+
|
69 |
+
@submit_btn.click(inputs=[user_query, state], outputs=[llm_response])
|
70 |
+
def submit(user_query, state):
|
71 |
+
state.user_query = user_query or "tell me about some players in everglade fc"
|
72 |
+
message = HumanMessage(content=state.user_query)
|
73 |
+
state.history.append(message)
|
74 |
+
workflow_state["messages"] = state.history
|
75 |
+
|
76 |
+
def start_async_loop():
|
77 |
+
workflow = build_workflow(handler)
|
78 |
+
async def run_workflow():
|
79 |
+
print(workflow_state)
|
80 |
+
await workflow.ainvoke(workflow_state)
|
81 |
+
asyncio.run(run_workflow())
|
82 |
+
|
83 |
+
thread = Thread(target=start_async_loop, daemon=True)
|
84 |
+
thread.start()
|
85 |
+
|
86 |
+
result = ""
|
87 |
+
while True:
|
88 |
+
token = handler.queue.get()
|
89 |
+
from colorama import Fore, Style
|
90 |
+
print(f'{Fore.GREEN}{token}{Style.RESET_ALL}')
|
91 |
+
if token is None:
|
92 |
+
break
|
93 |
+
if isinstance(token, dict):
|
94 |
+
if token["type"] == "info":
|
95 |
+
gr.Info(token["message"])
|
96 |
+
continue
|
97 |
+
result += token
|
98 |
+
yield result
|
99 |
+
|
100 |
+
state.history.append(AIMessage(content=result))
|
101 |
+
|
102 |
+
@user_query.submit(inputs=[user_query, state], outputs=[llm_response])
|
103 |
+
def user_query_change(user_query, state):
|
104 |
+
state.user_query = user_query
|
105 |
+
|
106 |
+
result = state.user_query
|
107 |
+
for i in range(0, len(lorem_ipsum), 4):
|
108 |
+
time.sleep(0.1)
|
109 |
+
result += lorem_ipsum[i:i+4]
|
110 |
+
yield result
|
111 |
+
|
112 |
+
@persona.change(inputs=[persona, state], outputs=[persona_disp])
|
113 |
+
def persona_change(persona, state):
|
114 |
+
state.persona = persona
|
115 |
+
return persona
|
116 |
+
|
117 |
+
@submit_btn.click(inputs=[state], outputs=[count])
|
118 |
+
def submit(state):
|
119 |
+
state.count += 1
|
120 |
+
return state.count
|
121 |
+
|
122 |
+
@user_query.submit(inputs=[state], outputs=[count, user_query])
|
123 |
+
def user_query_change(state):
|
124 |
+
state.count += 1
|
125 |
+
return state.count, ''
|
126 |
+
|
127 |
+
@clear_state_btn.click(inputs=[state], outputs=[count, persona_disp, user_query, llm_response])
|
128 |
+
def clear_state(state):
|
129 |
+
state.clear()
|
130 |
+
return state.count, state.persona, state.user_query, ""
|
131 |
+
|
132 |
+
|
133 |
+
if __name__ == "__main__":
|
134 |
+
demo.launch(server_name="0.0.0.0", server_port=8000)
|
api/utils/freeplay_helpers.py
ADDED
@@ -0,0 +1,58 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# import datetime
|
2 |
+
import os
|
3 |
+
from functools import lru_cache
|
4 |
+
from typing import Union, Optional, List
|
5 |
+
from freeplay import Freeplay, RecordPayload, ResponseInfo, CallInfo
|
6 |
+
from langchain_core.messages import BaseMessage
|
7 |
+
|
8 |
+
FREEPLAY_PROJECT_ID = os.getenv("FREEPLAY_PROJECT_ID")
|
9 |
+
|
10 |
+
|
11 |
+
# @lru_cache(maxsize=1)
|
12 |
+
def get_fp_client():
|
13 |
+
return Freeplay(
|
14 |
+
freeplay_api_key=os.getenv("FREEPLAY_API_KEY"),
|
15 |
+
api_base=os.getenv("FREEPLAY_URL"),
|
16 |
+
)
|
17 |
+
|
18 |
+
|
19 |
+
# retreive and format your prompt
|
20 |
+
def get_formatted_prompt(
|
21 |
+
template: str,
|
22 |
+
environment: str = "latest",
|
23 |
+
variables: dict = {},
|
24 |
+
history: Optional[List[BaseMessage]] = None,
|
25 |
+
):
|
26 |
+
"""
|
27 |
+
Get a formatted prompt from Freeplay.
|
28 |
+
"""
|
29 |
+
# get fp client
|
30 |
+
fpClient = get_fp_client()
|
31 |
+
# variables = {**variables, "now": datetime.datetime.now(datetime.UTC).strftime('%Y-%m-%d')}
|
32 |
+
# get formatted prompt
|
33 |
+
formatted_prompt = fpClient.prompts.get_formatted(
|
34 |
+
project_id=FREEPLAY_PROJECT_ID,
|
35 |
+
template_name=template,
|
36 |
+
environment=environment,
|
37 |
+
variables=variables,
|
38 |
+
history=history
|
39 |
+
)
|
40 |
+
return formatted_prompt
|
41 |
+
|
42 |
+
|
43 |
+
async def get_prompt(
|
44 |
+
template: str,
|
45 |
+
environment: str = "latest",
|
46 |
+
):
|
47 |
+
"""
|
48 |
+
Get an unformatted prompt template from Freeplay.
|
49 |
+
"""
|
50 |
+
# get fp client
|
51 |
+
fpClient = get_fp_client()
|
52 |
+
# get unformatted prompt template
|
53 |
+
template_prompt = fpClient.prompts.get(
|
54 |
+
project_id=FREEPLAY_PROJECT_ID,
|
55 |
+
template_name=template,
|
56 |
+
environment=environment
|
57 |
+
)
|
58 |
+
return template_prompt
|
api/utils/zep_helpers.py
CHANGED
@@ -4,7 +4,7 @@ from zep_cloud.client import AsyncZep
|
|
4 |
from zep_cloud.types import Message
|
5 |
|
6 |
|
7 |
-
@lru_cache(maxsize=1)
|
8 |
def get_zep_client():
|
9 |
return AsyncZep()
|
10 |
|
|
|
4 |
from zep_cloud.types import Message
|
5 |
|
6 |
|
7 |
+
# @lru_cache(maxsize=1)
|
8 |
def get_zep_client():
|
9 |
return AsyncZep()
|
10 |
|
api/workflows/base.py
CHANGED
@@ -18,6 +18,7 @@ from langgraph.prebuilt import ToolNode
|
|
18 |
|
19 |
|
20 |
from utils.zep_helpers import (
|
|
|
21 |
get_zep_client,
|
22 |
record_session,
|
23 |
)
|
@@ -39,15 +40,13 @@ tool_node = ToolNode(available_tools)
|
|
39 |
llm = ChatOpenAI(model="gpt-4o-mini")
|
40 |
llm_with_tools = llm.bind_tools(tools=available_tools)
|
41 |
|
42 |
-
zep_client = get_zep_client()
|
43 |
-
|
44 |
|
45 |
class AgentState(TypedDict):
|
46 |
session_id: str
|
47 |
messages: Annotated[Sequence[BaseMessage], operator.add]
|
48 |
|
49 |
|
50 |
-
async def call_model(state: AgentState, handler: AsyncCallbackHandler) -> dict:
|
51 |
session_id = state["session_id"]
|
52 |
memory = await zep_client.memory.get(session_id=session_id)
|
53 |
messages = state["messages"]
|
@@ -86,25 +85,28 @@ async def call_tool(state: AgentState, handler: AsyncCallbackHandler) -> dict:
|
|
86 |
return {"messages": results}
|
87 |
|
88 |
|
89 |
-
async def should_continue(state):
|
90 |
messages = state["messages"]
|
91 |
last_message = messages[-1]
|
92 |
if 'tool_calls' not in last_message.additional_kwargs:
|
93 |
# inform zep of final response
|
94 |
await record_session(state["session_id"], messages)
|
|
|
|
|
95 |
return 'end'
|
96 |
return 'continue'
|
97 |
|
98 |
|
99 |
def build_workflow(handler: AsyncCallbackHandler):
|
100 |
workflow = StateGraph(AgentState)
|
101 |
-
|
|
|
102 |
workflow.add_node('tools', partial(call_tool, handler=handler))
|
103 |
workflow.set_entry_point('agent')
|
104 |
|
105 |
workflow.add_conditional_edges(
|
106 |
'agent',
|
107 |
-
should_continue,
|
108 |
{
|
109 |
'continue': 'tools',
|
110 |
'end': END,
|
|
|
18 |
|
19 |
|
20 |
from utils.zep_helpers import (
|
21 |
+
AsyncZep,
|
22 |
get_zep_client,
|
23 |
record_session,
|
24 |
)
|
|
|
40 |
llm = ChatOpenAI(model="gpt-4o-mini")
|
41 |
llm_with_tools = llm.bind_tools(tools=available_tools)
|
42 |
|
|
|
|
|
43 |
|
44 |
class AgentState(TypedDict):
|
45 |
session_id: str
|
46 |
messages: Annotated[Sequence[BaseMessage], operator.add]
|
47 |
|
48 |
|
49 |
+
async def call_model(state: AgentState, handler: AsyncCallbackHandler, zep_client: AsyncZep) -> dict:
|
50 |
session_id = state["session_id"]
|
51 |
memory = await zep_client.memory.get(session_id=session_id)
|
52 |
messages = state["messages"]
|
|
|
85 |
return {"messages": results}
|
86 |
|
87 |
|
88 |
+
async def should_continue(state: AgentState, handler: AsyncCallbackHandler, zep_client: AsyncZep) -> str:
|
89 |
messages = state["messages"]
|
90 |
last_message = messages[-1]
|
91 |
if 'tool_calls' not in last_message.additional_kwargs:
|
92 |
# inform zep of final response
|
93 |
await record_session(state["session_id"], messages)
|
94 |
+
if hasattr(handler, 'on_workflow_end'):
|
95 |
+
await handler.on_workflow_end(state)
|
96 |
return 'end'
|
97 |
return 'continue'
|
98 |
|
99 |
|
100 |
def build_workflow(handler: AsyncCallbackHandler):
|
101 |
workflow = StateGraph(AgentState)
|
102 |
+
zep_client = get_zep_client()
|
103 |
+
workflow.add_node('agent', partial(call_model, handler=handler, zep_client=zep_client))
|
104 |
workflow.add_node('tools', partial(call_tool, handler=handler))
|
105 |
workflow.set_entry_point('agent')
|
106 |
|
107 |
workflow.add_conditional_edges(
|
108 |
'agent',
|
109 |
+
partial(should_continue, handler=handler, zep_client=zep_client),
|
110 |
{
|
111 |
'continue': 'tools',
|
112 |
'end': END,
|
docker-compose.yaml
CHANGED
@@ -18,7 +18,8 @@ services:
|
|
18 |
- .env
|
19 |
environment:
|
20 |
DEBUG: false
|
21 |
-
command: uvicorn server:app --reload --host 0.0.0.0 --port 8000 --reload --log-level debug
|
|
|
22 |
|
23 |
volumes:
|
24 |
root_hist:
|
|
|
18 |
- .env
|
19 |
environment:
|
20 |
DEBUG: false
|
21 |
+
# command: uvicorn server:app --reload --host 0.0.0.0 --port 8000 --reload --log-level debug
|
22 |
+
command: gradio server_gradio.py
|
23 |
|
24 |
volumes:
|
25 |
root_hist:
|