Gregory-L commited on
Commit
96126d5
·
verified ·
1 Parent(s): c4e0c8c

v1.0.3 — refresh uv.lock, and say exactly what that was tested against

Browse files

The lock had drifted from pyproject, so every `uv run` re-resolved first (~2.5 min a call). Refreshed: 296 -> 306 packages, 23 changed — starlette 0.52.1 -> 1.6.0 (major), huggingface-hub 1.14.0 -> 1.31.0, gradio 6.27.0 new via all->ui, and three moving BACKWARDS (pydantic 2.13.3 -> 2.12.5, pydantic-core, inspect-ai) by resolver choice rather than any declared constraint.

Tested in a separate environment against both stacks: 765 pass on each; the coach booted under real uvicorn and 37 read-only probes returned identical status codes and identical response sizes — pages, JSON API, static mount, OpenAPI (64 paths), diagnostics, the traversal guard at 400, and SSE. Zero server errors either side.

Not tested, and written into the changelog rather than implied: every write endpoint, SSE under a real producer, the training path (no ml extra on that box), the Gradio UI. `uv run` syncs the environment, so moving a node to this commit rewrites its venv on the next call — the production node is deliberately not moved while gen 78 trains.

Files changed (6) hide show
  1. docs/CHANGELOG.md +52 -0
  2. docs/NAV.md +2 -1
  3. mindxtrain/__init__.py +1 -1
  4. mindxtrain/ui/app.py +1 -1
  5. pyproject.toml +1 -1
  6. uv.lock +239 -78
docs/CHANGELOG.md CHANGED
@@ -6,6 +6,58 @@ project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
 
7
  ## [Unreleased]
8
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
9
  ## [1.0.2] — 2026-09-15
10
 
11
  ### Added
 
6
 
7
  ## [Unreleased]
8
 
9
+ ## [1.0.3] — 2026-09-15
10
+
11
+ ### Changed
12
+
13
+ - **`uv.lock` refreshed against the current `pyproject.toml`.** The lock had drifted, so every
14
+ `uv run` on a node re-resolved before doing anything — about 2.5 minutes per invocation,
15
+ paid by each bridge probe. 296 → 306 packages; 23 changed. The notable moves are
16
+ **starlette 0.52.1 → 1.6.0** (a major version, under FastAPI 0.136.1, which accepts it),
17
+ **huggingface-hub 1.14.0 → 1.31.0**, and **gradio 6.27.0** entering the lock for the first
18
+ time because `all` now includes the `ui` extra.
19
+ - Three packages move **backwards** — **pydantic 2.13.3 → 2.12.5**, pydantic-core 2.46.3 →
20
+ 2.41.5, inspect-ai 0.3.219 → 0.3.145. Nothing in the project requires the older versions;
21
+ only `pydantic>=2.9` is declared, so these are the resolver's choice of a consistent set,
22
+ not a constraint. They are called out because a downgrade arriving inside a routine refresh
23
+ is worth seeing rather than discovering later.
24
+
25
+ ### Notes — what was tested, and what was not
26
+
27
+ The refreshed lock was installed into a **separate environment**, leaving the working one
28
+ intact, and the same probes were run against both stacks so the comparison is like-for-like.
29
+
30
+ **Tested, identical on both stacks:** the full suite (**765 passed, 2 skipped**); the coach
31
+ booted under real uvicorn exactly as production runs it (`mindxtrain.operator.app:app`), and
32
+ **37 read-only probes returned identical status codes and identical response sizes** — every
33
+ page, the JSON API, the static mount, the OpenAPI schema (64 paths), the diagnostics surface,
34
+ the path-traversal guard still answering 400, and **SSE** (`text/event-stream`, bytes flowing,
35
+ and the 404 path returning without hanging). **Zero server errors** in either run.
36
+
37
+ **Not tested — do not read this release as clearing them:**
38
+
39
+ - **Every write endpoint.** Nothing that launches a run, builds or creates a Modelfile,
40
+ starts or stops Ollama, convenes the boardroom, settles the dojo, promotes an MEI score, or
41
+ pushes to GitHub / a droplet was exercised; they need a model, a daemon, or they do real
42
+ work. `/v1/chat/completions` and `/v1/agentic` are likewise untested.
43
+ - **SSE under a real producer.** The stream was checked for content type and first bytes on an
44
+ empty run, not for a long live stream with a training job writing into it.
45
+ - **The training path.** The `ml` extra (torch, transformers) is not installed on the machine
46
+ this was verified on, so `train` / `imprint` / `serve` were not run against the new lock —
47
+ and huggingface-hub, which moved two minor versions, sits under transformers' download path.
48
+ - **The Gradio UI.** gradio 6.27.0 enters the lock here for the first time; `mindxtrain ui`
49
+ was not started.
50
+
51
+ **One new warning, test-only.** starlette 1.6 deprecates using `httpx` with its `TestClient`
52
+ and asks for `httpx2`; the suite emits it three times and passes regardless. Nothing in the
53
+ serving path is affected — production does not import `TestClient` — but the test dependency
54
+ will need moving before a starlette release removes the shim.
55
+
56
+ **Operational caveat.** `uv run` syncs the project environment, so moving a node's checkout to
57
+ this commit means the next invocation rewrites that node's venv — a starlette major bump, a
58
+ huggingface-hub bump and a pydantic downgrade — **underneath whatever is running there**. On a
59
+ node with a training run in flight, take it in a maintenance window, not by surprise.
60
+
61
  ## [1.0.2] — 2026-09-15
62
 
63
  ### Added
docs/NAV.md CHANGED
@@ -164,8 +164,9 @@ Target metrics + framework comparison.
164
  - [What's not measured (yet)](benchmarks.md#whats-not-measured-yet)
165
 
166
  ### [CHANGELOG](CHANGELOG.md)
167
- Version history (current: v1.0.2).
168
  - [[Unreleased]](CHANGELOG.md#unreleased)
 
169
  - [[1.0.2] — 2026-09-15](CHANGELOG.md#102--2026-09-15)
170
  - [[1.0.1] — 2026-09-15](CHANGELOG.md#101--2026-09-15)
171
  - [[1.0.0] — 2026-06-11](CHANGELOG.md#100--2026-06-11)
 
164
  - [What's not measured (yet)](benchmarks.md#whats-not-measured-yet)
165
 
166
  ### [CHANGELOG](CHANGELOG.md)
167
+ Version history (current: v1.0.3).
168
  - [[Unreleased]](CHANGELOG.md#unreleased)
169
+ - [[1.0.3] — 2026-09-15](CHANGELOG.md#103--2026-09-15)
170
  - [[1.0.2] — 2026-09-15](CHANGELOG.md#102--2026-09-15)
171
  - [[1.0.1] — 2026-09-15](CHANGELOG.md#101--2026-09-15)
172
  - [[1.0.0] — 2026-06-11](CHANGELOG.md#100--2026-06-11)
mindxtrain/__init__.py CHANGED
@@ -16,4 +16,4 @@ Layout per mindXtrain2.md §Part 4 "Repository layout":
16
  budget/ psutil-derived ResourceBudget (carry-over from aGLM)
17
  """
18
 
19
- __version__ = "1.0.2"
 
16
  budget/ psutil-derived ResourceBudget (carry-over from aGLM)
17
  """
18
 
19
+ __version__ = "1.0.3"
mindxtrain/ui/app.py CHANGED
@@ -36,7 +36,7 @@ import gradio as gr
36
  from .metrics import RunMetrics, parse_log # noqa: F401 (parse_log re-exported for tests)
37
  from .theme import CSS, theme
38
 
39
- VERSION = "1.0.2"
40
  HOME = Path(os.environ.get("MINDXTRAIN_HOME") or Path(__file__).resolve().parents[2])
41
  RECIPES = HOME / "mindxtrain" / "train" / "recipes"
42
  TIERS = ["Basic", "Advanced", "Scientific"]
 
36
  from .metrics import RunMetrics, parse_log # noqa: F401 (parse_log re-exported for tests)
37
  from .theme import CSS, theme
38
 
39
+ VERSION = "1.0.3"
40
  HOME = Path(os.environ.get("MINDXTRAIN_HOME") or Path(__file__).resolve().parents[2])
41
  RECIPES = HOME / "mindxtrain" / "train" / "recipes"
42
  TIERS = ["Basic", "Advanced", "Scientific"]
pyproject.toml CHANGED
@@ -1,6 +1,6 @@
1
  [project]
2
  name = "mindxtrain"
3
- version = "1.0.2"
4
  description = "Production training framework for fine-tuning open-weight LLMs on AMD MI300X and serving them through an OpenAI-compatible API."
5
  requires-python = ">=3.12,<3.13"
6
  license = { text = "Apache-2.0" }
 
1
  [project]
2
  name = "mindxtrain"
3
+ version = "1.0.3"
4
  description = "Production training framework for fine-tuning open-weight LLMs on AMD MI300X and serving them through an OpenAI-compatible API."
5
  requires-python = ">=3.12,<3.13"
6
  license = { text = "Apache-2.0" }
uv.lock CHANGED
@@ -330,6 +330,24 @@ wheels = [
330
  { url = "https://files.pythonhosted.org/packages/38/c5/f6ce561004db45f0b847c2cd9b19c67c6bf348a82018a48cb718be6b58b0/botocore-1.40.61-py3-none-any.whl", hash = "sha256:17ebae412692fd4824f99cde0f08d50126dc97954008e5ba2b522eb049238aa7", size = 14055973, upload-time = "2025-10-28T19:26:42.15Z" },
331
  ]
332
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
333
  [[package]]
334
  name = "cachetools"
335
  version = "7.1.1"
@@ -438,14 +456,11 @@ wheels = [
438
 
439
  [[package]]
440
  name = "click"
441
- version = "8.2.1"
442
  source = { registry = "https://pypi.org/simple" }
443
- dependencies = [
444
- { name = "colorama", marker = "sys_platform == 'win32'" },
445
- ]
446
- sdist = { url = "https://files.pythonhosted.org/packages/60/6c/8ca2efa64cf75a977a0d7fac081354553ebe483345c734fb6b6515d96bbc/click-8.2.1.tar.gz", hash = "sha256:27c491cc05d968d271d5a1db13e3b5a184636d9d930f148c50b038f0d0646202", size = 286342, upload-time = "2025-05-20T23:19:49.832Z" }
447
  wheels = [
448
- { url = "https://files.pythonhosted.org/packages/85/32/10bb5764d90a8eee674e9dc6f4db6a0ab47c8c4d0d83c27f7c39ac415a4d/click-8.2.1-py3-none-any.whl", hash = "sha256:61a3265b914e850b85317d0b3109c7f8cd35a670f963866005d6ef1d5175a12b", size = 102215, upload-time = "2025-05-20T23:19:47.796Z" },
449
  ]
450
 
451
  [[package]]
@@ -1101,6 +1116,15 @@ wheels = [
1101
  { url = "https://files.pythonhosted.org/packages/73/6d/1e8a8533913e33a50a486332ce0673f4fdb860f6eb9ed450327c5c1762cb/flashinfer_python-0.6.8.post1-py3-none-any.whl", hash = "sha256:818f9b8cc2fe66c42a1f6264be4841ac8821ada703685a02cfccb2b5124a710b", size = 9385316, upload-time = "2026-04-18T18:28:10.285Z" },
1102
  ]
1103
 
 
 
 
 
 
 
 
 
 
1104
  [[package]]
1105
  name = "frozenlist"
1106
  version = "1.8.0"
@@ -1191,6 +1215,75 @@ wheels = [
1191
  { url = "https://files.pythonhosted.org/packages/b6/b0/be5d3329badb9230b765de6eea66b73abd5944bdeb5afb3562ddcd80ae84/googleapis_common_protos-1.74.0-py3-none-any.whl", hash = "sha256:702216f78610bb510e3f12ac3cafd281b7ac45cc5d86e90ad87e4d301a3426b5", size = 300743, upload-time = "2026-04-02T21:22:49.108Z" },
1192
  ]
1193
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1194
  [[package]]
1195
  name = "grpcio"
1196
  version = "1.80.0"
@@ -1230,20 +1323,33 @@ wheels = [
1230
  { url = "https://files.pythonhosted.org/packages/8d/e0/3b31492b1c89da3c5a846680517871455b30c54738486fc57ac79a5761bd/hexbytes-1.3.1-py3-none-any.whl", hash = "sha256:da01ff24a1a9a2b1881c4b85f0e9f9b0f51b526b379ffa23832ae7899d29c2c7", size = 5074, upload-time = "2025-05-14T16:45:16.179Z" },
1231
  ]
1232
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1233
  [[package]]
1234
  name = "hf-xet"
1235
- version = "1.5.0"
1236
  source = { registry = "https://pypi.org/simple" }
1237
- sdist = { url = "https://files.pythonhosted.org/packages/74/d8/5c06fc76461418326a7decf8367480c35be11a41fd938633929c60a9ec6b/hf_xet-1.5.0.tar.gz", hash = "sha256:e0fb0a34d9f406eed88233e829a67ec016bec5af19e480eac65a233ea289a948", size = 837196, upload-time = "2026-05-06T06:18:15.583Z" }
1238
  wheels = [
1239
- { url = "https://files.pythonhosted.org/packages/3d/fb/69ff198a82cae7eb1a69fb84d93b3a3e4816564d76817fe541ddc96874eb/hf_xet-1.5.0-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:dad0dc84e941b8ba3c860659fe1fdc35c049d47cce293f003287757e971a8f56", size = 4030814, upload-time = "2026-05-06T06:17:57.933Z" },
1240
- { url = "https://files.pythonhosted.org/packages/9b/ff/edcc2b40162bef3ff78e14ab637e5f3b89243d6aee72f5949d3bb6a5af83/hf_xet-1.5.0-cp37-abi3-macosx_11_0_arm64.whl", hash = "sha256:fd6e5a9b0fdac4ed03ed45ef79254a655b1aaab514a02202617fbf643f5fdf7a", size = 3798444, upload-time = "2026-05-06T06:17:55.79Z" },
1241
- { url = "https://files.pythonhosted.org/packages/49/4d/103f76b04310e5e57656696cc184690d20c466af0bca3ca88f8c8ea5d4f3/hf_xet-1.5.0-cp37-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:3531b1823a0e6d77d80f9ed15ca0e00f0d115094f8ac033d5cae88f4564cc949", size = 4465986, upload-time = "2026-05-06T06:17:44.886Z" },
1242
- { url = "https://files.pythonhosted.org/packages/c4/a2/546f47f464737b3edbab6f8ddb57f2599b93d2cbb66f06abb475ccb48651/hf_xet-1.5.0-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:9a0ee58cd18d5ea799f7ed11290bbccbe56bdd8b1d97ca74b9cc49a3945d7a3b", size = 4259865, upload-time = "2026-05-06T06:17:42.639Z" },
1243
- { url = "https://files.pythonhosted.org/packages/95/7f/1be593c1f28613be2e196473481cd81bfc5910795e30a34e8f744f6cac4f/hf_xet-1.5.0-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:1e60df5a42e9bed8628b6416af2cba4cba57ae9f02de226a06b020d98e1aab18", size = 4459835, upload-time = "2026-05-06T06:18:08.026Z" },
1244
- { url = "https://files.pythonhosted.org/packages/aa/b2/703569fc881f3284487e68cda7b42179978480da3c438042a6bbbb4a671c/hf_xet-1.5.0-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:4b35549ce62601b84da4ff9b24d970032ace3d4430f52d91bcbb26c901d6c690", size = 4672414, upload-time = "2026-05-06T06:18:09.864Z" },
1245
- { url = "https://files.pythonhosted.org/packages/af/37/1b6def445c567286b50aa3b33828158e135b1be44938dde59f11382a500c/hf_xet-1.5.0-cp37-abi3-win_amd64.whl", hash = "sha256:2806c7c17b4d23f8d88f7c4814f838c3b6150773fe339c20af23e1cfaf2797e4", size = 3977238, upload-time = "2026-05-06T06:18:23.621Z" },
1246
- { url = "https://files.pythonhosted.org/packages/62/94/3b66b148778ee100dcfd69c2ca22b57b41b44d3063ceec934f209e9184ce/hf_xet-1.5.0-cp37-abi3-win_arm64.whl", hash = "sha256:b6c9df403040248c76d808d3e047d64db2d923bae593eb244c41e425cf6cd7be", size = 3806916, upload-time = "2026-05-06T06:18:21.7Z" },
1247
  ]
1248
 
1249
  [[package]]
@@ -1300,9 +1406,10 @@ wheels = [
1300
 
1301
  [[package]]
1302
  name = "huggingface-hub"
1303
- version = "1.14.0"
1304
  source = { registry = "https://pypi.org/simple" }
1305
  dependencies = [
 
1306
  { name = "filelock" },
1307
  { name = "fsspec" },
1308
  { name = "hf-xet", marker = "platform_machine == 'AMD64' or platform_machine == 'aarch64' or platform_machine == 'amd64' or platform_machine == 'arm64' or platform_machine == 'x86_64'" },
@@ -1310,12 +1417,11 @@ dependencies = [
1310
  { name = "packaging" },
1311
  { name = "pyyaml" },
1312
  { name = "tqdm" },
1313
- { name = "typer" },
1314
  { name = "typing-extensions" },
1315
  ]
1316
- sdist = { url = "https://files.pythonhosted.org/packages/39/40/43109e943fd718b0ccd0cd61eb4f1c347df22bf81f5874c6f22adf44bcff/huggingface_hub-1.14.0.tar.gz", hash = "sha256:d6d2c9cd6be1d02ae9ec6672d5587d10a427f377db688e82528f426a041622c2", size = 782365, upload-time = "2026-05-06T14:14:34.278Z" }
1317
  wheels = [
1318
- { url = "https://files.pythonhosted.org/packages/89/a5/33b49ba7bea7c41bb37f74ec0f8beea0831e052330196633fe2c77516ea6/huggingface_hub-1.14.0-py3-none-any.whl", hash = "sha256:efe075535c62e130b30e836b138e13785f6f043d1f0539e0a39aa411a99e90b8", size = 661479, upload-time = "2026-05-06T14:14:32.029Z" },
1319
  ]
1320
 
1321
  [package.optional-dependencies]
@@ -1374,7 +1480,7 @@ wheels = [
1374
 
1375
  [[package]]
1376
  name = "inspect-ai"
1377
- version = "0.3.219"
1378
  source = { registry = "https://pypi.org/simple" }
1379
  dependencies = [
1380
  { name = "aioboto3" },
@@ -1385,6 +1491,7 @@ dependencies = [
1385
  { name = "click" },
1386
  { name = "debugpy" },
1387
  { name = "docstring-parser" },
 
1388
  { name = "fsspec" },
1389
  { name = "httpx" },
1390
  { name = "ijson" },
@@ -1394,7 +1501,7 @@ dependencies = [
1394
  { name = "jsonref" },
1395
  { name = "jsonschema" },
1396
  { name = "mmh3" },
1397
- { name = "nest-asyncio2" },
1398
  { name = "numpy" },
1399
  { name = "platformdirs" },
1400
  { name = "psutil" },
@@ -1408,16 +1515,13 @@ dependencies = [
1408
  { name = "sniffio" },
1409
  { name = "tenacity" },
1410
  { name = "textual" },
1411
- { name = "tiktoken" },
1412
  { name = "typing-extensions" },
1413
  { name = "universal-pathlib" },
1414
- { name = "zipfile-zstd" },
1415
  { name = "zipp" },
1416
- { name = "zstandard" },
1417
  ]
1418
- sdist = { url = "https://files.pythonhosted.org/packages/5a/f7/7f6f2ec27008a7204e5fe180b7d6c234a0df5afda30e3899e66fb4b83dbe/inspect_ai-0.3.219.tar.gz", hash = "sha256:2a1485358b2e2533be4b934ea0d1b7603fd147dd3666db86269ef716a0dbd5fd", size = 45633779, upload-time = "2026-05-06T21:49:59.747Z" }
1419
  wheels = [
1420
- { url = "https://files.pythonhosted.org/packages/5f/8c/b9ecfdbbdff55d014c61afba46a6c96de47e952861a44a3872dcd47d98b6/inspect_ai-0.3.219-py3-none-any.whl", hash = "sha256:8a0d28c33bd542d1d92155d4a1c8a1bc6ea88564ef66e4c21d61c5bfa9d6bcc6", size = 36103987, upload-time = "2026-05-06T21:49:50.761Z" },
1421
  ]
1422
 
1423
  [[package]]
@@ -1867,7 +1971,7 @@ wheels = [
1867
 
1868
  [[package]]
1869
  name = "mindxtrain"
1870
- version = "1.0.0"
1871
  source = { editable = "." }
1872
  dependencies = [
1873
  { name = "blake3" },
@@ -1886,6 +1990,7 @@ all = [
1886
  { name = "datasets" },
1887
  { name = "datasketch" },
1888
  { name = "faiss-cpu" },
 
1889
  { name = "huggingface-hub" },
1890
  { name = "inspect-ai" },
1891
  { name = "jinja2" },
@@ -1897,6 +2002,7 @@ all = [
1897
  { name = "psutil" },
1898
  { name = "py-algorand-sdk" },
1899
  { name = "pyarrow" },
 
1900
  { name = "sentence-transformers" },
1901
  { name = "transformers" },
1902
  { name = "trl" },
@@ -1920,6 +2026,9 @@ eval = [
1920
  { name = "lighteval" },
1921
  { name = "lm-eval" },
1922
  ]
 
 
 
1923
  ml = [
1924
  { name = "accelerate" },
1925
  { name = "datasets" },
@@ -1935,6 +2044,10 @@ obs = [
1935
  serve = [
1936
  { name = "vllm" },
1937
  ]
 
 
 
 
1938
 
1939
  [package.dev-dependencies]
1940
  dev = [
@@ -1953,13 +2066,15 @@ requires-dist = [
1953
  { name = "datasketch", marker = "extra == 'data'", specifier = ">=1.6" },
1954
  { name = "faiss-cpu", marker = "extra == 'data'", specifier = ">=1.9" },
1955
  { name = "fastapi", specifier = ">=0.115" },
 
1956
  { name = "httpx", specifier = ">=0.27" },
1957
- { name = "huggingface-hub", marker = "extra == 'chain'", specifier = ">=0.26" },
1958
  { name = "inspect-ai", marker = "extra == 'eval'", specifier = ">=0.3" },
1959
  { name = "jinja2", marker = "extra == 'eval'", specifier = ">=3.1" },
1960
  { name = "lighteval", marker = "extra == 'eval'", specifier = ">=0.7" },
1961
  { name = "lm-eval", marker = "extra == 'eval'", specifier = ">=0.4" },
1962
- { name = "mindxtrain", extras = ["ml", "eval", "data", "serve", "chain", "obs"], marker = "extra == 'all'" },
 
1963
  { name = "opentelemetry-sdk", marker = "extra == 'obs'", specifier = ">=1.28" },
1964
  { name = "peft", marker = "extra == 'ml'", specifier = ">=0.13" },
1965
  { name = "prometheus-client", marker = "extra == 'obs'", specifier = ">=0.21" },
@@ -1968,6 +2083,7 @@ requires-dist = [
1968
  { name = "pyarrow", marker = "extra == 'data'", specifier = ">=18.0" },
1969
  { name = "pydantic", specifier = ">=2.9" },
1970
  { name = "pyyaml", specifier = ">=6.0" },
 
1971
  { name = "rich", specifier = ">=13.9" },
1972
  { name = "sentence-transformers", marker = "extra == 'data'", specifier = ">=3.2" },
1973
  { name = "transformers", marker = "extra == 'ml'", specifier = ">=4.46" },
@@ -1977,7 +2093,7 @@ requires-dist = [
1977
  { name = "vllm", marker = "extra == 'serve'", specifier = ">=0.6" },
1978
  { name = "web3", marker = "extra == 'chain'", specifier = ">=7.5" },
1979
  ]
1980
- provides-extras = ["ml", "eval", "data", "serve", "chain", "obs", "all"]
1981
 
1982
  [package.metadata.requires-dev]
1983
  dev = [
@@ -2195,12 +2311,12 @@ wheels = [
2195
  ]
2196
 
2197
  [[package]]
2198
- name = "nest-asyncio2"
2199
- version = "1.7.2"
2200
  source = { registry = "https://pypi.org/simple" }
2201
- sdist = { url = "https://files.pythonhosted.org/packages/b4/73/731debf26e27e0a0323d7bda270dc2f634b398e38f040a09da1f4351d0aa/nest_asyncio2-1.7.2.tar.gz", hash = "sha256:1921d70b92cc4612c374928d081552efb59b83d91b2b789d935c665fa01729a8", size = 14743, upload-time = "2026-02-13T00:34:04.386Z" }
2202
  wheels = [
2203
- { url = "https://files.pythonhosted.org/packages/c5/3c/3179b85b0e1c3659f0369940200cd6d0fa900e6cefcc7ea0bc6dd0e29ffb/nest_asyncio2-1.7.2-py3-none-any.whl", hash = "sha256:f5dfa702f3f81f6a03857e9a19e2ba578c0946a4ad417b4c50a24d7ba641fe01", size = 7843, upload-time = "2026-02-13T00:34:02.691Z" },
2204
  ]
2205
 
2206
  [[package]]
@@ -2667,6 +2783,25 @@ wheels = [
2667
  { url = "https://files.pythonhosted.org/packages/55/22/41fb05f1dc5fda2c468e05a41814c20859016c85117b66c8a257cae814f6/opentelemetry_semantic_conventions_ai-0.5.1-py3-none-any.whl", hash = "sha256:25aeb22bd261543b4898a73824026d96770e5351209c7d07a0b1314762b1f6e4", size = 11250, upload-time = "2026-03-26T14:20:37.108Z" },
2668
  ]
2669
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2670
  [[package]]
2671
  name = "outlines-core"
2672
  version = "0.2.14"
@@ -2842,15 +2977,15 @@ wheels = [
2842
 
2843
  [[package]]
2844
  name = "prometheus-fastapi-instrumentator"
2845
- version = "7.1.0"
2846
  source = { registry = "https://pypi.org/simple" }
2847
  dependencies = [
2848
  { name = "prometheus-client" },
2849
  { name = "starlette" },
2850
  ]
2851
- sdist = { url = "https://files.pythonhosted.org/packages/69/6d/24d53033cf93826aa7857699a4450c1c67e5b9c710e925b1ed2b320c04df/prometheus_fastapi_instrumentator-7.1.0.tar.gz", hash = "sha256:be7cd61eeea4e5912aeccb4261c6631b3f227d8924542d79eaf5af3f439cbe5e", size = 20220, upload-time = "2025-03-19T19:35:05.351Z" }
2852
  wheels = [
2853
- { url = "https://files.pythonhosted.org/packages/27/72/0824c18f3bc75810f55dacc2dd933f6ec829771180245ae3cc976195dec0/prometheus_fastapi_instrumentator-7.1.0-py3-none-any.whl", hash = "sha256:978130f3c0bb7b8ebcc90d35516a6fe13e02d2eb358c8f83887cdef7020c31e9", size = 19296, upload-time = "2025-03-19T19:35:04.323Z" },
2854
  ]
2855
 
2856
  [[package]]
@@ -3036,7 +3171,7 @@ wheels = [
3036
 
3037
  [[package]]
3038
  name = "pydantic"
3039
- version = "2.13.3"
3040
  source = { registry = "https://pypi.org/simple" }
3041
  dependencies = [
3042
  { name = "annotated-types" },
@@ -3044,9 +3179,9 @@ dependencies = [
3044
  { name = "typing-extensions" },
3045
  { name = "typing-inspection" },
3046
  ]
3047
- sdist = { url = "https://files.pythonhosted.org/packages/d9/e4/40d09941a2cebcb20609b86a559817d5b9291c49dd6f8c87e5feffbe703a/pydantic-2.13.3.tar.gz", hash = "sha256:af09e9d1d09f4e7fe37145c1f577e1d61ceb9a41924bf0094a36506285d0a84d", size = 844068, upload-time = "2026-04-20T14:46:43.632Z" }
3048
  wheels = [
3049
- { url = "https://files.pythonhosted.org/packages/f3/0a/fd7d723f8f8153418fb40cf9c940e82004fce7e987026b08a68a36dd3fe7/pydantic-2.13.3-py3-none-any.whl", hash = "sha256:6db14ac8dfc9a1e57f87ea2c0de670c251240f43cb0c30a5130e9720dc612927", size = 471981, upload-time = "2026-04-20T14:46:41.402Z" },
3050
  ]
3051
 
3052
  [package.optional-dependencies]
@@ -3056,32 +3191,31 @@ email = [
3056
 
3057
  [[package]]
3058
  name = "pydantic-core"
3059
- version = "2.46.3"
3060
  source = { registry = "https://pypi.org/simple" }
3061
  dependencies = [
3062
  { name = "typing-extensions" },
3063
  ]
3064
- sdist = { url = "https://files.pythonhosted.org/packages/2a/ef/f7abb56c49382a246fd2ce9c799691e3c3e7175ec74b14d99e798bcddb1a/pydantic_core-2.46.3.tar.gz", hash = "sha256:41c178f65b8c29807239d47e6050262eb6bf84eb695e41101e62e38df4a5bc2c", size = 471412, upload-time = "2026-04-20T14:40:56.672Z" }
3065
- wheels = [
3066
- { url = "https://files.pythonhosted.org/packages/4b/cb/5b47425556ecc1f3fe18ed2a0083188aa46e1dd812b06e406475b3a5d536/pydantic_core-2.46.3-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:b11b59b3eee90a80a36701ddb4576d9ae31f93f05cb9e277ceaa09e6bf074a67", size = 2101946, upload-time = "2026-04-20T14:40:52.581Z" },
3067
- { url = "https://files.pythonhosted.org/packages/a1/4f/2fb62c2267cae99b815bbf4a7b9283812c88ca3153ef29f7707200f1d4e5/pydantic_core-2.46.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:af8653713055ea18a3abc1537fe2ebc42f5b0bbb768d1eb79fd74eb47c0ac089", size = 1951612, upload-time = "2026-04-20T14:42:42.996Z" },
3068
- { url = "https://files.pythonhosted.org/packages/50/6e/b7348fd30d6556d132cddd5bd79f37f96f2601fe0608afac4f5fb01ec0b3/pydantic_core-2.46.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:75a519dab6d63c514f3a81053e5266c549679e4aa88f6ec57f2b7b854aceb1b0", size = 1977027, upload-time = "2026-04-20T14:42:02.001Z" },
3069
- { url = "https://files.pythonhosted.org/packages/82/11/31d60ee2b45540d3fb0b29302a393dbc01cd771c473f5b5147bcd353e593/pydantic_core-2.46.3-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a6cd87cb1575b1ad05ba98894c5b5c96411ef678fa2f6ed2576607095b8d9789", size = 2063008, upload-time = "2026-04-20T14:44:17.952Z" },
3070
- { url = "https://files.pythonhosted.org/packages/8a/db/3a9d1957181b59258f44a2300ab0f0be9d1e12d662a4f57bb31250455c52/pydantic_core-2.46.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f80a55484b8d843c8ada81ebf70a682f3f00a3d40e378c06cf17ecb44d280d7d", size = 2233082, upload-time = "2026-04-20T14:40:57.934Z" },
3071
- { url = "https://files.pythonhosted.org/packages/9c/e1/3277c38792aeb5cfb18c2f0c5785a221d9ff4e149abbe1184d53d5f72273/pydantic_core-2.46.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3861f1731b90c50a3266316b9044f5c9b405eecb8e299b0a7120596334e4fe9c", size = 2304615, upload-time = "2026-04-20T14:42:12.584Z" },
3072
- { url = "https://files.pythonhosted.org/packages/5e/d5/e3d9717c9eba10855325650afd2a9cba8e607321697f18953af9d562da2f/pydantic_core-2.46.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fb528e295ed31570ac3dcc9bfdd6e0150bc11ce6168ac87a8082055cf1a67395", size = 2094380, upload-time = "2026-04-20T14:43:05.522Z" },
3073
- { url = "https://files.pythonhosted.org/packages/a1/20/abac35dedcbfd66c6f0b03e4e3564511771d6c9b7ede10a362d03e110d9b/pydantic_core-2.46.3-cp312-cp312-manylinux_2_31_riscv64.whl", hash = "sha256:367508faa4973b992b271ba1494acaab36eb7e8739d1e47be5035fb1ea225396", size = 2135429, upload-time = "2026-04-20T14:41:55.549Z" },
3074
- { url = "https://files.pythonhosted.org/packages/6c/a5/41bfd1df69afad71b5cf0535055bccc73022715ad362edbc124bc1e021d7/pydantic_core-2.46.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5ad3c826fe523e4becf4fe39baa44286cff85ef137c729a2c5e269afbfd0905d", size = 2174582, upload-time = "2026-04-20T14:41:45.96Z" },
3075
- { url = "https://files.pythonhosted.org/packages/79/65/38d86ea056b29b2b10734eb23329b7a7672ca604df4f2b6e9c02d4ee22fe/pydantic_core-2.46.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:ec638c5d194ef8af27db69f16c954a09797c0dc25015ad6123eb2c73a4d271ca", size = 2187533, upload-time = "2026-04-20T14:40:55.367Z" },
3076
- { url = "https://files.pythonhosted.org/packages/b6/55/a1129141678a2026badc539ad1dee0a71d06f54c2f06a4bd68c030ac781b/pydantic_core-2.46.3-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:28ed528c45446062ee66edb1d33df5d88828ae167de76e773a3c7f64bd14e976", size = 2332985, upload-time = "2026-04-20T14:44:13.05Z" },
3077
- { url = "https://files.pythonhosted.org/packages/d7/60/cb26f4077719f709e54819f4e8e1d43f4091f94e285eb6bd21e1190a7b7c/pydantic_core-2.46.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:aed19d0c783886d5bd86d80ae5030006b45e28464218747dcf83dabfdd092c7b", size = 2373670, upload-time = "2026-04-20T14:41:53.421Z" },
3078
- { url = "https://files.pythonhosted.org/packages/6b/7e/c3f21882bdf1d8d086876f81b5e296206c69c6082551d776895de7801fa0/pydantic_core-2.46.3-cp312-cp312-win32.whl", hash = "sha256:06d5d8820cbbdb4147578c1fe7ffcd5b83f34508cb9f9ab76e807be7db6ff0a4", size = 1966722, upload-time = "2026-04-20T14:44:30.588Z" },
3079
- { url = "https://files.pythonhosted.org/packages/57/be/6b5e757b859013ebfbd7adba02f23b428f37c86dcbf78b5bb0b4ffd36e99/pydantic_core-2.46.3-cp312-cp312-win_amd64.whl", hash = "sha256:c3212fda0ee959c1dd04c60b601ec31097aaa893573a3a1abd0a47bcac2968c1", size = 2072970, upload-time = "2026-04-20T14:42:54.248Z" },
3080
- { url = "https://files.pythonhosted.org/packages/bf/f8/a989b21cc75e9a32d24192ef700eea606521221a89faa40c919ce884f2b1/pydantic_core-2.46.3-cp312-cp312-win_arm64.whl", hash = "sha256:f1f8338dd7a7f31761f1f1a3c47503a9a3b34eea3c8b01fa6ee96408affb5e72", size = 2035963, upload-time = "2026-04-20T14:44:20.4Z" },
3081
- { url = "https://files.pythonhosted.org/packages/34/42/f426db557e8ab2791bc7562052299944a118655496fbff99914e564c0a94/pydantic_core-2.46.3-graalpy312-graalpy250_312_native-macosx_10_12_x86_64.whl", hash = "sha256:b12dd51f1187c2eb489af8e20f880362db98e954b54ab792fa5d92e8bcc6b803", size = 2091877, upload-time = "2026-04-20T14:43:27.091Z" },
3082
- { url = "https://files.pythonhosted.org/packages/5c/4f/86a832a9d14df58e663bfdf4627dc00d3317c2bd583c4fb23390b0f04b8e/pydantic_core-2.46.3-graalpy312-graalpy250_312_native-macosx_11_0_arm64.whl", hash = "sha256:f00a0961b125f1a47af7bcc17f00782e12f4cd056f83416006b30111d941dfa3", size = 1932428, upload-time = "2026-04-20T14:40:45.781Z" },
3083
- { url = "https://files.pythonhosted.org/packages/11/1a/fe857968954d93fb78e0d4b6df5c988c74c4aaa67181c60be7cfe327c0ca/pydantic_core-2.46.3-graalpy312-graalpy250_312_native-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:57697d7c056aca4bbb680200f96563e841a6386ac1129370a0102592f4dddff5", size = 1997550, upload-time = "2026-04-20T14:44:02.425Z" },
3084
- { url = "https://files.pythonhosted.org/packages/17/eb/9d89ad2d9b0ba8cd65393d434471621b98912abb10fbe1df08e480ba57b5/pydantic_core-2.46.3-graalpy312-graalpy250_312_native-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd35aa21299def8db7ef4fe5c4ff862941a9a158ca7b63d61e66fe67d30416b4", size = 2137657, upload-time = "2026-04-20T14:42:45.149Z" },
3085
  ]
3086
 
3087
  [[package]]
@@ -3116,6 +3250,15 @@ wheels = [
3116
  { url = "https://files.pythonhosted.org/packages/01/dd/bebff3040138f00ae8a102d426b27349b9a49acc310fcae7f92112d867e3/pydantic_settings-2.14.0-py3-none-any.whl", hash = "sha256:fc8d5d692eb7092e43c8647c1c35a3ecd00e040fcf02ed86f4cb5458ca62182e", size = 60940, upload-time = "2026-04-20T13:37:38.586Z" },
3117
  ]
3118
 
 
 
 
 
 
 
 
 
 
3119
  [[package]]
3120
  name = "pygments"
3121
  version = "2.20.0"
@@ -3549,6 +3692,18 @@ wheels = [
3549
  { url = "https://files.pythonhosted.org/packages/06/f2/6c90ccf3ad1d09a7d662a405b274f3c93b92df59c8d6a025d26aaf34d302/sacrebleu-2.6.0-py3-none-any.whl", hash = "sha256:3edc1531575cfe4ad04ce53491a9307e234af1c3f805a1f491cbec844229a8a8", size = 100785, upload-time = "2026-01-12T17:17:18.868Z" },
3550
  ]
3551
 
 
 
 
 
 
 
 
 
 
 
 
 
3552
  [[package]]
3553
  name = "safetensors"
3554
  version = "0.7.0"
@@ -3612,6 +3767,15 @@ wheels = [
3612
  { url = "https://files.pythonhosted.org/packages/bc/98/fe9ae9ffb3b54b62559f52dedaebe204b408db8109a8c66fdd04869e6424/scipy-1.17.1-cp312-cp312-win_arm64.whl", hash = "sha256:f4115102802df98b2b0db3cce5cb9b92572633a1197c77b7553e5203f284a5b3", size = 24547340, upload-time = "2026-02-23T00:19:12.024Z" },
3613
  ]
3614
 
 
 
 
 
 
 
 
 
 
3615
  [[package]]
3616
  name = "semver"
3617
  version = "3.0.4"
@@ -3771,15 +3935,15 @@ wheels = [
3771
 
3772
  [[package]]
3773
  name = "starlette"
3774
- version = "0.52.1"
3775
  source = { registry = "https://pypi.org/simple" }
3776
  dependencies = [
3777
  { name = "anyio" },
3778
  { name = "typing-extensions" },
3779
  ]
3780
- sdist = { url = "https://files.pythonhosted.org/packages/c4/68/79977123bb7be889ad680d79a40f339082c1978b5cfcf62c2d8d196873ac/starlette-0.52.1.tar.gz", hash = "sha256:834edd1b0a23167694292e94f597773bc3f89f362be6effee198165a35d62933", size = 2653702, upload-time = "2026-01-18T13:34:11.062Z" }
3781
  wheels = [
3782
- { url = "https://files.pythonhosted.org/packages/81/0d/13d1d239a25cbfb19e740db83143e95c772a1fe10202dda4b76792b114dd/starlette-0.52.1-py3-none-any.whl", hash = "sha256:0029d43eb3d273bc4f83a08720b4912ea4b071087a3b48db01b7c839f7954d74", size = 74272, upload-time = "2026-01-18T13:34:09.188Z" },
3783
  ]
3784
 
3785
  [[package]]
@@ -3947,6 +4111,15 @@ wheels = [
3947
  { url = "https://files.pythonhosted.org/packages/72/f4/0de46cfa12cdcbcd464cc59fde36912af405696f687e53a091fb432f694c/tokenizers-0.22.2-cp39-abi3-win_arm64.whl", hash = "sha256:9ce725d22864a1e965217204946f830c37876eee3b2ba6fc6255e8e903d5fcbc", size = 2612133, upload-time = "2026-01-05T10:45:17.232Z" },
3948
  ]
3949
 
 
 
 
 
 
 
 
 
 
3950
  [[package]]
3951
  name = "toolz"
3952
  version = "1.1.0"
@@ -4516,18 +4689,6 @@ wheels = [
4516
  { url = "https://files.pythonhosted.org/packages/03/d6/a0b135e4419df475177ae78fc93c422430b0fd8875649486f9a5989772e6/z3_solver-4.15.4.0-py3-none-win_amd64.whl", hash = "sha256:00e35b02632ed085ea8199fb230f6015e6fc40554a6680c097bd5f060e827431", size = 16259597, upload-time = "2025-10-29T18:12:01.14Z" },
4517
  ]
4518
 
4519
- [[package]]
4520
- name = "zipfile-zstd"
4521
- version = "0.0.4"
4522
- source = { registry = "https://pypi.org/simple" }
4523
- dependencies = [
4524
- { name = "zstandard" },
4525
- ]
4526
- sdist = { url = "https://files.pythonhosted.org/packages/f7/2a/2e0941bc0058d10ab37d8c578b94a19f611f6ae54f124140f2fb451f0932/zipfile-zstd-0.0.4.tar.gz", hash = "sha256:c1498e15b7922a3d1af0ea55df8b11b2af4e8f7e0e80e414e25d66899f7def89", size = 4603, upload-time = "2021-12-08T07:38:16.245Z" }
4527
- wheels = [
4528
- { url = "https://files.pythonhosted.org/packages/b1/3a/bc3011d26bbb490741f58c28a2df559445c59e8524cbbb71ecf33db23bb7/zipfile_zstd-0.0.4-py3-none-any.whl", hash = "sha256:c8e07be35765c072eb7b1be715c89ecb248a1127b014e12a9b8ac7db2600c166", size = 4058, upload-time = "2021-12-08T07:38:14.715Z" },
4529
- ]
4530
-
4531
  [[package]]
4532
  name = "zipp"
4533
  version = "3.23.1"
 
330
  { url = "https://files.pythonhosted.org/packages/38/c5/f6ce561004db45f0b847c2cd9b19c67c6bf348a82018a48cb718be6b58b0/botocore-1.40.61-py3-none-any.whl", hash = "sha256:17ebae412692fd4824f99cde0f08d50126dc97954008e5ba2b522eb049238aa7", size = 14055973, upload-time = "2025-10-28T19:26:42.15Z" },
331
  ]
332
 
333
+ [[package]]
334
+ name = "brotli"
335
+ version = "1.2.0"
336
+ source = { registry = "https://pypi.org/simple" }
337
+ sdist = { url = "https://files.pythonhosted.org/packages/f7/16/c92ca344d646e71a43b8bb353f0a6490d7f6e06210f8554c8f874e454285/brotli-1.2.0.tar.gz", hash = "sha256:e310f77e41941c13340a95976fe66a8a95b01e783d430eeaf7a2f87e0a57dd0a", size = 7388632, upload-time = "2025-11-05T18:39:42.86Z" }
338
+ wheels = [
339
+ { url = "https://files.pythonhosted.org/packages/11/ee/b0a11ab2315c69bb9b45a2aaed022499c9c24a205c3a49c3513b541a7967/brotli-1.2.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:35d382625778834a7f3061b15423919aa03e4f5da34ac8e02c074e4b75ab4f84", size = 861543, upload-time = "2025-11-05T18:38:24.183Z" },
340
+ { url = "https://files.pythonhosted.org/packages/e1/2f/29c1459513cd35828e25531ebfcbf3e92a5e49f560b1777a9af7203eb46e/brotli-1.2.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:7a61c06b334bd99bc5ae84f1eeb36bfe01400264b3c352f968c6e30a10f9d08b", size = 444288, upload-time = "2025-11-05T18:38:25.139Z" },
341
+ { url = "https://files.pythonhosted.org/packages/3d/6f/feba03130d5fceadfa3a1bb102cb14650798c848b1df2a808356f939bb16/brotli-1.2.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:acec55bb7c90f1dfc476126f9711a8e81c9af7fb617409a9ee2953115343f08d", size = 1528071, upload-time = "2025-11-05T18:38:26.081Z" },
342
+ { url = "https://files.pythonhosted.org/packages/2b/38/f3abb554eee089bd15471057ba85f47e53a44a462cfce265d9bf7088eb09/brotli-1.2.0-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:260d3692396e1895c5034f204f0db022c056f9e2ac841593a4cf9426e2a3faca", size = 1626913, upload-time = "2025-11-05T18:38:27.284Z" },
343
+ { url = "https://files.pythonhosted.org/packages/03/a7/03aa61fbc3c5cbf99b44d158665f9b0dd3d8059be16c460208d9e385c837/brotli-1.2.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:072e7624b1fc4d601036ab3f4f27942ef772887e876beff0301d261210bca97f", size = 1419762, upload-time = "2025-11-05T18:38:28.295Z" },
344
+ { url = "https://files.pythonhosted.org/packages/21/1b/0374a89ee27d152a5069c356c96b93afd1b94eae83f1e004b57eb6ce2f10/brotli-1.2.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:adedc4a67e15327dfdd04884873c6d5a01d3e3b6f61406f99b1ed4865a2f6d28", size = 1484494, upload-time = "2025-11-05T18:38:29.29Z" },
345
+ { url = "https://files.pythonhosted.org/packages/cf/57/69d4fe84a67aef4f524dcd075c6eee868d7850e85bf01d778a857d8dbe0a/brotli-1.2.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:7a47ce5c2288702e09dc22a44d0ee6152f2c7eda97b3c8482d826a1f3cfc7da7", size = 1593302, upload-time = "2025-11-05T18:38:30.639Z" },
346
+ { url = "https://files.pythonhosted.org/packages/d5/3b/39e13ce78a8e9a621c5df3aeb5fd181fcc8caba8c48a194cd629771f6828/brotli-1.2.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:af43b8711a8264bb4e7d6d9a6d004c3a2019c04c01127a868709ec29962b6036", size = 1487913, upload-time = "2025-11-05T18:38:31.618Z" },
347
+ { url = "https://files.pythonhosted.org/packages/62/28/4d00cb9bd76a6357a66fcd54b4b6d70288385584063f4b07884c1e7286ac/brotli-1.2.0-cp312-cp312-win32.whl", hash = "sha256:e99befa0b48f3cd293dafeacdd0d191804d105d279e0b387a32054c1180f3161", size = 334362, upload-time = "2025-11-05T18:38:32.939Z" },
348
+ { url = "https://files.pythonhosted.org/packages/1c/4e/bc1dcac9498859d5e353c9b153627a3752868a9d5f05ce8dedd81a2354ab/brotli-1.2.0-cp312-cp312-win_amd64.whl", hash = "sha256:b35c13ce241abdd44cb8ca70683f20c0c079728a36a996297adb5334adfc1c44", size = 369115, upload-time = "2025-11-05T18:38:33.765Z" },
349
+ ]
350
+
351
  [[package]]
352
  name = "cachetools"
353
  version = "7.1.1"
 
456
 
457
  [[package]]
458
  name = "click"
459
+ version = "8.5.0"
460
  source = { registry = "https://pypi.org/simple" }
461
+ sdist = { url = "https://files.pythonhosted.org/packages/c7/0e/7fa0ef50764b67090eca4114772a2abf8b6148198475e54c660b97caeee6/click-8.5.0.tar.gz", hash = "sha256:ba0d2089de75ea0310e2dde03160e6ca10009947fb95a182f9b54021bb272e34", size = 382235, upload-time = "2026-08-26T13:33:14.56Z" }
 
 
 
462
  wheels = [
463
+ { url = "https://files.pythonhosted.org/packages/58/50/6c0d534c5f134586a8e1ba4e330569e32f057e33372ae556463212fb4cd3/click-8.5.0-py3-none-any.whl", hash = "sha256:255bc9599cf7748b4b1a446ccc735421bd08a2ae529a8b88597d3de5664ee360", size = 125251, upload-time = "2026-08-26T13:33:12.928Z" },
464
  ]
465
 
466
  [[package]]
 
1116
  { url = "https://files.pythonhosted.org/packages/73/6d/1e8a8533913e33a50a486332ce0673f4fdb860f6eb9ed450327c5c1762cb/flashinfer_python-0.6.8.post1-py3-none-any.whl", hash = "sha256:818f9b8cc2fe66c42a1f6264be4841ac8821ada703685a02cfccb2b5124a710b", size = 9385316, upload-time = "2026-04-18T18:28:10.285Z" },
1117
  ]
1118
 
1119
+ [[package]]
1120
+ name = "frozendict"
1121
+ version = "2.4.7"
1122
+ source = { registry = "https://pypi.org/simple" }
1123
+ sdist = { url = "https://files.pythonhosted.org/packages/90/b2/2a3d1374b7780999d3184e171e25439a8358c47b481f68be883c14086b4c/frozendict-2.4.7.tar.gz", hash = "sha256:e478fb2a1391a56c8a6e10cc97c4a9002b410ecd1ac28c18d780661762e271bd", size = 317082, upload-time = "2025-11-11T22:40:14.251Z" }
1124
+ wheels = [
1125
+ { url = "https://files.pythonhosted.org/packages/38/74/f94141b38a51a553efef7f510fc213894161ae49b88bffd037f8d2a7cb2f/frozendict-2.4.7-py3-none-any.whl", hash = "sha256:972af65924ea25cf5b4d9326d549e69a9a4918d8a76a9d3a7cd174d98b237550", size = 16264, upload-time = "2025-11-11T22:40:12.836Z" },
1126
+ ]
1127
+
1128
  [[package]]
1129
  name = "frozenlist"
1130
  version = "1.8.0"
 
1215
  { url = "https://files.pythonhosted.org/packages/b6/b0/be5d3329badb9230b765de6eea66b73abd5944bdeb5afb3562ddcd80ae84/googleapis_common_protos-1.74.0-py3-none-any.whl", hash = "sha256:702216f78610bb510e3f12ac3cafd281b7ac45cc5d86e90ad87e4d301a3426b5", size = 300743, upload-time = "2026-04-02T21:22:49.108Z" },
1216
  ]
1217
 
1218
+ [[package]]
1219
+ name = "gradio"
1220
+ version = "6.27.0"
1221
+ source = { registry = "https://pypi.org/simple" }
1222
+ dependencies = [
1223
+ { name = "anyio" },
1224
+ { name = "brotli" },
1225
+ { name = "fastapi" },
1226
+ { name = "gradio-client" },
1227
+ { name = "groovy" },
1228
+ { name = "hf-gradio" },
1229
+ { name = "httpx" },
1230
+ { name = "huggingface-hub" },
1231
+ { name = "jinja2" },
1232
+ { name = "markupsafe" },
1233
+ { name = "numpy" },
1234
+ { name = "orjson" },
1235
+ { name = "packaging" },
1236
+ { name = "pandas" },
1237
+ { name = "pillow" },
1238
+ { name = "pydantic" },
1239
+ { name = "pydub" },
1240
+ { name = "python-multipart" },
1241
+ { name = "pytz" },
1242
+ { name = "pyyaml" },
1243
+ { name = "safehttpx" },
1244
+ { name = "semantic-version" },
1245
+ { name = "starlette" },
1246
+ { name = "tomlkit" },
1247
+ { name = "typer" },
1248
+ { name = "typing-extensions" },
1249
+ { name = "uvicorn" },
1250
+ ]
1251
+ sdist = { url = "https://files.pythonhosted.org/packages/0f/1b/789b86449bf9fee5e4c97e3550c92f97586a9fc885882994c3ff5d2d8a91/gradio-6.27.0.tar.gz", hash = "sha256:b7212b021c2a7a2f6f1e31341783ba7ab2679bbd286e2956f7e6c701348daf92", size = 45025357, upload-time = "2026-09-11T03:02:02.703Z" }
1252
+ wheels = [
1253
+ { url = "https://files.pythonhosted.org/packages/4b/4c/901183a7040fa02d2943ae75f16613424894bb5a5d8e12d427c8d78467df/gradio-6.27.0-py3-none-any.whl", hash = "sha256:6f4b9057c4a771283caa35a80dfdb3f599b5732108591fe9dcc32689cda17b68", size = 31334963, upload-time = "2026-09-11T03:01:58.869Z" },
1254
+ ]
1255
+
1256
+ [package.optional-dependencies]
1257
+ mcp = [
1258
+ { name = "mcp" },
1259
+ { name = "pydantic" },
1260
+ ]
1261
+
1262
+ [[package]]
1263
+ name = "gradio-client"
1264
+ version = "2.7.0"
1265
+ source = { registry = "https://pypi.org/simple" }
1266
+ dependencies = [
1267
+ { name = "fsspec" },
1268
+ { name = "httpx" },
1269
+ { name = "huggingface-hub" },
1270
+ { name = "packaging" },
1271
+ { name = "typing-extensions" },
1272
+ ]
1273
+ sdist = { url = "https://files.pythonhosted.org/packages/82/ac/4c3afc631a98ec05e06f7b572cc347ac4affc2880f5a1616f53dcf92c16c/gradio_client-2.7.0.tar.gz", hash = "sha256:212c88f7f6a212c973b4429ec450b35efba7805a34aee53f0892535ceee194ae", size = 62140, upload-time = "2026-09-11T03:02:12.131Z" }
1274
+ wheels = [
1275
+ { url = "https://files.pythonhosted.org/packages/b7/5c/c99c923dc00a0fa74893bbb0c730b5a64c0e5c510f206b43e8628d0d60a4/gradio_client-2.7.0-py3-none-any.whl", hash = "sha256:1eccee1d2b387dc63b9b59124dd07e39cbe0ca7c90cc52ac4525074570b6365e", size = 63024, upload-time = "2026-09-11T03:02:10.776Z" },
1276
+ ]
1277
+
1278
+ [[package]]
1279
+ name = "groovy"
1280
+ version = "0.1.2"
1281
+ source = { registry = "https://pypi.org/simple" }
1282
+ sdist = { url = "https://files.pythonhosted.org/packages/52/36/bbdede67400277bef33d3ec0e6a31750da972c469f75966b4930c753218f/groovy-0.1.2.tar.gz", hash = "sha256:25c1dc09b3f9d7e292458aa762c6beb96ea037071bf5e917fc81fb78d2231083", size = 17325, upload-time = "2025-02-28T20:24:56.068Z" }
1283
+ wheels = [
1284
+ { url = "https://files.pythonhosted.org/packages/28/27/3d6dcadc8a3214d8522c1e7f6a19554e33659be44546d44a2f7572ac7d2a/groovy-0.1.2-py3-none-any.whl", hash = "sha256:7f7975bab18c729a257a8b1ae9dcd70b7cafb1720481beae47719af57c35fa64", size = 14090, upload-time = "2025-02-28T20:24:55.152Z" },
1285
+ ]
1286
+
1287
  [[package]]
1288
  name = "grpcio"
1289
  version = "1.80.0"
 
1323
  { url = "https://files.pythonhosted.org/packages/8d/e0/3b31492b1c89da3c5a846680517871455b30c54738486fc57ac79a5761bd/hexbytes-1.3.1-py3-none-any.whl", hash = "sha256:da01ff24a1a9a2b1881c4b85f0e9f9b0f51b526b379ffa23832ae7899d29c2c7", size = 5074, upload-time = "2025-05-14T16:45:16.179Z" },
1324
  ]
1325
 
1326
+ [[package]]
1327
+ name = "hf-gradio"
1328
+ version = "0.4.1"
1329
+ source = { registry = "https://pypi.org/simple" }
1330
+ dependencies = [
1331
+ { name = "gradio-client" },
1332
+ { name = "typer" },
1333
+ ]
1334
+ sdist = { url = "https://files.pythonhosted.org/packages/ce/86/c9694b7cfada5780e75769e60dc161a161f4dd7fc91b61db5e3a3338bef9/hf_gradio-0.4.1.tar.gz", hash = "sha256:a017d942618f0d495a58ee4563047fa04bef614c00e0cb789a9a6d0633cffa7b", size = 6560, upload-time = "2026-04-22T14:01:32.334Z" }
1335
+ wheels = [
1336
+ { url = "https://files.pythonhosted.org/packages/30/2d/afff2ee87e75d8eb85c92bb8cf0e15b05c23c2ebd8fd8dec781d8601ed7f/hf_gradio-0.4.1-py3-none-any.whl", hash = "sha256:76b8cb8be6abe62d74c1ad2d35b42f0629db89aa9e1a8d033cecfe7c856eeab3", size = 4482, upload-time = "2026-04-17T19:53:31.827Z" },
1337
+ ]
1338
+
1339
  [[package]]
1340
  name = "hf-xet"
1341
+ version = "1.6.0"
1342
  source = { registry = "https://pypi.org/simple" }
1343
+ sdist = { url = "https://files.pythonhosted.org/packages/1b/ab/522a2ab67f27971a9d48ca666d4fca85ef7d5282d142e31fd087e27b1bbe/hf_xet-1.6.0.tar.gz", hash = "sha256:2e58454a340b3556dfa4972d5451aff4fba8dd42a236600ba1a1d2b1514f0fef", size = 920527, upload-time = "2026-08-03T22:33:13.243Z" }
1344
  wheels = [
1345
+ { url = "https://files.pythonhosted.org/packages/a2/50/7afa2c9c787405864fc47a0d1bbc02c62e9101947ed43c1f43899fc7d91d/hf_xet-1.6.0-cp38-abi3-macosx_10_12_x86_64.whl", hash = "sha256:633dc0cd71d32da58ab8c03ad38e2fac452c15c2b0a2866ebf6ededfe0a5061d", size = 4071729, upload-time = "2026-08-03T22:33:00.721Z" },
1346
+ { url = "https://files.pythonhosted.org/packages/4b/69/55b8dcf636142ae660fec1869fcac14c4da2e8412e14d6eee1523be77e9f/hf_xet-1.6.0-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:f0906082d9932ae0c0057fa194041c22b4e2cdb46b2592ef3b91f020d62a081a", size = 3876287, upload-time = "2026-08-03T22:33:02.251Z" },
1347
+ { url = "https://files.pythonhosted.org/packages/67/4e/a28359bf1c1ecf11eba22123168c138698f7cb576ac678f5a2e16cd5da08/hf_xet-1.6.0-cp38-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:d62671bb130879cef0ee4c9ebe47a14af6c66ec53e6d84dc15936e5ffdfac82f", size = 4464663, upload-time = "2026-08-03T22:33:03.802Z" },
1348
+ { url = "https://files.pythonhosted.org/packages/9a/69/1f0cbc2fb22ae6082d094f743d1b8945a3f36f6089cb95f42b7ee348cda7/hf_xet-1.6.0-cp38-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:0e6e21fa3cdfcdcd76748564bf593870a5e013f47d97cf10aed63aa222cff5b7", size = 4262538, upload-time = "2026-08-03T22:33:05.287Z" },
1349
+ { url = "https://files.pythonhosted.org/packages/d1/3a/4f4f2301ade26e404462d3336fa11f7958d914cabbabdd6e03c3c5d5658c/hf_xet-1.6.0-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:4fc74352a17015bd0ee90038bc9efe38db894cde45f268b6712b04fce8cd0acb", size = 4460520, upload-time = "2026-08-03T22:33:06.81Z" },
1350
+ { url = "https://files.pythonhosted.org/packages/ab/5f/311725e2a905534dfee2dcb5b08414f249147f1f12252bfc2bd24caa075c/hf_xet-1.6.0-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:8fb4f71cba6129110c3374a33f919001ff130488fc23553698e34cc1c2a1198c", size = 4675937, upload-time = "2026-08-03T22:33:08.616Z" },
1351
+ { url = "https://files.pythonhosted.org/packages/98/b7/8c59a66d15205024662f1d66968136f13893f96df1ddc5087e2e281fc95f/hf_xet-1.6.0-cp38-abi3-win_amd64.whl", hash = "sha256:fb4fadde1b2b70bf4c0c14a6dccbe7194b1c28947fefd5bbe3fed9d940676c3b", size = 4033128, upload-time = "2026-08-03T22:33:10.171Z" },
1352
+ { url = "https://files.pythonhosted.org/packages/73/63/ca511b6f802f28cf3489b280fe77475bcca8de85e81a6299d7916b5b5555/hf_xet-1.6.0-cp38-abi3-win_arm64.whl", hash = "sha256:3dc3e35441ba395006af5aaacc40ef2e603c51ef46c3530b9156185f00935ea3", size = 3859359, upload-time = "2026-08-03T22:33:11.725Z" },
1353
  ]
1354
 
1355
  [[package]]
 
1406
 
1407
  [[package]]
1408
  name = "huggingface-hub"
1409
+ version = "1.31.0"
1410
  source = { registry = "https://pypi.org/simple" }
1411
  dependencies = [
1412
+ { name = "click" },
1413
  { name = "filelock" },
1414
  { name = "fsspec" },
1415
  { name = "hf-xet", marker = "platform_machine == 'AMD64' or platform_machine == 'aarch64' or platform_machine == 'amd64' or platform_machine == 'arm64' or platform_machine == 'x86_64'" },
 
1417
  { name = "packaging" },
1418
  { name = "pyyaml" },
1419
  { name = "tqdm" },
 
1420
  { name = "typing-extensions" },
1421
  ]
1422
+ sdist = { url = "https://files.pythonhosted.org/packages/9b/f0/61159db90b5cd275d55516fe27920828e7d3be4053fdbdb27c3f70e5f1ef/huggingface_hub-1.31.0.tar.gz", hash = "sha256:f8e9e710a210613fa5d0f26bba6da05ef4aef9fba5a0f23f508f5ac4d08b6f90", size = 968039, upload-time = "2026-09-10T10:27:22.724Z" }
1423
  wheels = [
1424
+ { url = "https://files.pythonhosted.org/packages/c3/7f/3f886a625043b77312b80da2f2bf00b5ecbf5a73061af1aa0259cd258c9d/huggingface_hub-1.31.0-py3-none-any.whl", hash = "sha256:9dbb6a503cbe2494ea666695207e7262d410659e09134059deb83e5480864667", size = 798313, upload-time = "2026-09-10T10:27:20.798Z" },
1425
  ]
1426
 
1427
  [package.optional-dependencies]
 
1480
 
1481
  [[package]]
1482
  name = "inspect-ai"
1483
+ version = "0.3.145"
1484
  source = { registry = "https://pypi.org/simple" }
1485
  dependencies = [
1486
  { name = "aioboto3" },
 
1491
  { name = "click" },
1492
  { name = "debugpy" },
1493
  { name = "docstring-parser" },
1494
+ { name = "frozendict" },
1495
  { name = "fsspec" },
1496
  { name = "httpx" },
1497
  { name = "ijson" },
 
1501
  { name = "jsonref" },
1502
  { name = "jsonschema" },
1503
  { name = "mmh3" },
1504
+ { name = "nest-asyncio" },
1505
  { name = "numpy" },
1506
  { name = "platformdirs" },
1507
  { name = "psutil" },
 
1515
  { name = "sniffio" },
1516
  { name = "tenacity" },
1517
  { name = "textual" },
 
1518
  { name = "typing-extensions" },
1519
  { name = "universal-pathlib" },
 
1520
  { name = "zipp" },
 
1521
  ]
1522
+ sdist = { url = "https://files.pythonhosted.org/packages/87/5d/7d5ef4f052a6ec7c521d1764fb8dfcd0f98b9e7e81124826299711291b9f/inspect_ai-0.3.145.tar.gz", hash = "sha256:75acc41e5ed37ea181e248b8ded3cb761d6c2fe92f92c911942eee5276f313ca", size = 43273241, upload-time = "2025-11-09T22:04:44.1Z" }
1523
  wheels = [
1524
+ { url = "https://files.pythonhosted.org/packages/71/09/2df83d92a4488dfc6b01ecbd7b53e7b480490b63d603abdad68196d51ca8/inspect_ai-0.3.145-py3-none-any.whl", hash = "sha256:6abff3f25b9e83e304d436fb77a4c8c471af298b678a2484743011b40a316c97", size = 34599281, upload-time = "2025-11-09T22:04:06.005Z" },
1525
  ]
1526
 
1527
  [[package]]
 
1971
 
1972
  [[package]]
1973
  name = "mindxtrain"
1974
+ version = "1.0.3"
1975
  source = { editable = "." }
1976
  dependencies = [
1977
  { name = "blake3" },
 
1990
  { name = "datasets" },
1991
  { name = "datasketch" },
1992
  { name = "faiss-cpu" },
1993
+ { name = "gradio", extra = ["mcp"] },
1994
  { name = "huggingface-hub" },
1995
  { name = "inspect-ai" },
1996
  { name = "jinja2" },
 
2002
  { name = "psutil" },
2003
  { name = "py-algorand-sdk" },
2004
  { name = "pyarrow" },
2005
+ { name = "pyyaml" },
2006
  { name = "sentence-transformers" },
2007
  { name = "transformers" },
2008
  { name = "trl" },
 
2026
  { name = "lighteval" },
2027
  { name = "lm-eval" },
2028
  ]
2029
+ hf = [
2030
+ { name = "huggingface-hub" },
2031
+ ]
2032
  ml = [
2033
  { name = "accelerate" },
2034
  { name = "datasets" },
 
2044
  serve = [
2045
  { name = "vllm" },
2046
  ]
2047
+ ui = [
2048
+ { name = "gradio", extra = ["mcp"] },
2049
+ { name = "pyyaml" },
2050
+ ]
2051
 
2052
  [package.dev-dependencies]
2053
  dev = [
 
2066
  { name = "datasketch", marker = "extra == 'data'", specifier = ">=1.6" },
2067
  { name = "faiss-cpu", marker = "extra == 'data'", specifier = ">=1.9" },
2068
  { name = "fastapi", specifier = ">=0.115" },
2069
+ { name = "gradio", extras = ["mcp"], marker = "extra == 'ui'", specifier = ">=5.0" },
2070
  { name = "httpx", specifier = ">=0.27" },
2071
+ { name = "huggingface-hub", marker = "extra == 'hf'", specifier = ">=0.26" },
2072
  { name = "inspect-ai", marker = "extra == 'eval'", specifier = ">=0.3" },
2073
  { name = "jinja2", marker = "extra == 'eval'", specifier = ">=3.1" },
2074
  { name = "lighteval", marker = "extra == 'eval'", specifier = ">=0.7" },
2075
  { name = "lm-eval", marker = "extra == 'eval'", specifier = ">=0.4" },
2076
+ { name = "mindxtrain", extras = ["hf"], marker = "extra == 'chain'" },
2077
+ { name = "mindxtrain", extras = ["ml", "eval", "data", "serve", "chain", "obs", "ui", "hf"], marker = "extra == 'all'" },
2078
  { name = "opentelemetry-sdk", marker = "extra == 'obs'", specifier = ">=1.28" },
2079
  { name = "peft", marker = "extra == 'ml'", specifier = ">=0.13" },
2080
  { name = "prometheus-client", marker = "extra == 'obs'", specifier = ">=0.21" },
 
2083
  { name = "pyarrow", marker = "extra == 'data'", specifier = ">=18.0" },
2084
  { name = "pydantic", specifier = ">=2.9" },
2085
  { name = "pyyaml", specifier = ">=6.0" },
2086
+ { name = "pyyaml", marker = "extra == 'ui'", specifier = ">=6.0" },
2087
  { name = "rich", specifier = ">=13.9" },
2088
  { name = "sentence-transformers", marker = "extra == 'data'", specifier = ">=3.2" },
2089
  { name = "transformers", marker = "extra == 'ml'", specifier = ">=4.46" },
 
2093
  { name = "vllm", marker = "extra == 'serve'", specifier = ">=0.6" },
2094
  { name = "web3", marker = "extra == 'chain'", specifier = ">=7.5" },
2095
  ]
2096
+ provides-extras = ["ml", "eval", "data", "serve", "ui", "hf", "chain", "obs", "all"]
2097
 
2098
  [package.metadata.requires-dev]
2099
  dev = [
 
2311
  ]
2312
 
2313
  [[package]]
2314
+ name = "nest-asyncio"
2315
+ version = "1.6.0"
2316
  source = { registry = "https://pypi.org/simple" }
2317
+ sdist = { url = "https://files.pythonhosted.org/packages/83/f8/51569ac65d696c8ecbee95938f89d4abf00f47d58d48f6fbabfe8f0baefe/nest_asyncio-1.6.0.tar.gz", hash = "sha256:6f172d5449aca15afd6c646851f4e31e02c598d553a667e38cafa997cfec55fe", size = 7418, upload-time = "2024-01-21T14:25:19.227Z" }
2318
  wheels = [
2319
+ { url = "https://files.pythonhosted.org/packages/a0/c4/c2971a3ba4c6103a3d10c4b0f24f461ddc027f0f09763220cf35ca1401b3/nest_asyncio-1.6.0-py3-none-any.whl", hash = "sha256:87af6efd6b5e897c81050477ef65c62e2b2f35d51703cae01aff2905b1852e1c", size = 5195, upload-time = "2024-01-21T14:25:17.223Z" },
2320
  ]
2321
 
2322
  [[package]]
 
2783
  { url = "https://files.pythonhosted.org/packages/55/22/41fb05f1dc5fda2c468e05a41814c20859016c85117b66c8a257cae814f6/opentelemetry_semantic_conventions_ai-0.5.1-py3-none-any.whl", hash = "sha256:25aeb22bd261543b4898a73824026d96770e5351209c7d07a0b1314762b1f6e4", size = 11250, upload-time = "2026-03-26T14:20:37.108Z" },
2784
  ]
2785
 
2786
+ [[package]]
2787
+ name = "orjson"
2788
+ version = "3.12.0"
2789
+ source = { registry = "https://pypi.org/simple" }
2790
+ sdist = { url = "https://files.pythonhosted.org/packages/0f/f3/742fb1f62b825f2c010697eaf4e828004bc2a81e7e806666989c132c7c42/orjson-3.12.0.tar.gz", hash = "sha256:d14203fb1aae2ad9b3d52f8a0e82aeb10197ef1c9bc61da7f358bd70b00123d5", size = 4142915, upload-time = "2026-08-14T16:13:30.607Z" }
2791
+ wheels = [
2792
+ { url = "https://files.pythonhosted.org/packages/be/4a/295da39c651c2faac8bd351a2a346f0fdedd9d50b847ee9dfc27d2207ef6/orjson-3.12.0-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:aa3e43a6846e91d7bde3d5a9c66090fcd8744f569a9b6cffc5e1ca38f6a461c0", size = 223427, upload-time = "2026-08-14T16:12:28.525Z" },
2793
+ { url = "https://files.pythonhosted.org/packages/29/98/758cf90fbeaaafb7f8141bfac75a432099959f3a2f5db93a412e876415d8/orjson-3.12.0-cp312-cp312-macosx_15_0_arm64.whl", hash = "sha256:11edb4660a6680abee9788a3a9072208a2c96538cc1322bd79542065229d8e54", size = 123725, upload-time = "2026-08-14T16:12:30.013Z" },
2794
+ { url = "https://files.pythonhosted.org/packages/32/b5/5b934d251f8651f7e41df180ad0c57a6e1cabe15c7bd331638413a50ebc9/orjson-3.12.0-cp312-cp312-manylinux2014_armv7l.manylinux_2_17_armv7l.whl", hash = "sha256:2d3a9da945a4d96ae758fdaaca56742e6b73b6fd554c5d8876f252a6dad70b83", size = 113375, upload-time = "2026-08-14T16:12:31.209Z" },
2795
+ { url = "https://files.pythonhosted.org/packages/cd/d2/37efb5b12a176ce3ced29f4144f20da57d02757f78ce549637dc1b4e1fc8/orjson-3.12.0-cp312-cp312-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:92ffc09e07233a6ab6d4e067f7841edcbcc134cb4812155cf171ea5255a421d7", size = 129983, upload-time = "2026-08-14T16:12:32.721Z" },
2796
+ { url = "https://files.pythonhosted.org/packages/50/22/0644b87c73f13e0092df8f35a1fe280d991e5e90072087411e0dd7e44e0c/orjson-3.12.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bf44e374aadde77b1f6109f1030be51433eb61984379852766b6f4e187db7b1e", size = 130629, upload-time = "2026-08-14T16:12:34.084Z" },
2797
+ { url = "https://files.pythonhosted.org/packages/8c/57/80b986ebfecd9c6a177ddf1c2319717f0cd8feffb2b78946595a18a2fc88/orjson-3.12.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1192a7021b6d071aaf909864f6e924d6a2675ca360485b972b8401749311750b", size = 131245, upload-time = "2026-08-14T16:12:35.713Z" },
2798
+ { url = "https://files.pythonhosted.org/packages/80/3d/75c5ac5a69161f44492a68fbdde66f4cc4ce48cd5e1fb05918e46f0c8848/orjson-3.12.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:53c0c474a9d9aff9aebfc0c88de1f28f843d940e6e3a80729abdf6a20274356f", size = 135397, upload-time = "2026-08-14T16:12:37.128Z" },
2799
+ { url = "https://files.pythonhosted.org/packages/71/93/4d71f2df314a97ff0d27a4559bf5888fc8406e3c6dec90e92291e3511215/orjson-3.12.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:532ff8cd4bd59a327a953a7dcde922c7fc25b85e29721bb8633265430d3a3873", size = 127693, upload-time = "2026-08-14T16:12:38.627Z" },
2800
+ { url = "https://files.pythonhosted.org/packages/bc/1d/0dbc6be5adfd1730491072fb60beb6bcdf5d7b2596ee41b7fc2e298bfc09/orjson-3.12.0-cp312-cp312-win32.whl", hash = "sha256:a6cf4b18e7de173f209f2084ffbd736dd72389a396326ee80a7022168be232e5", size = 128000, upload-time = "2026-08-14T16:12:39.954Z" },
2801
+ { url = "https://files.pythonhosted.org/packages/2d/c9/97b1ce0112ebf5e949c775ed5b1755e562233179f3584579673cc24d6378/orjson-3.12.0-cp312-cp312-win_amd64.whl", hash = "sha256:010811c1b69773450a01cef97727a67b223242f350b77d4ca000e59a9ef2155a", size = 122106, upload-time = "2026-08-14T16:12:41.324Z" },
2802
+ { url = "https://files.pythonhosted.org/packages/a8/6a/facd8b312e4a0d3a7fa978c7e15821f74a336adf1d65529faec33b48e18b/orjson-3.12.0-cp312-cp312-win_arm64.whl", hash = "sha256:ad29eece0c601737f2a60edc2752a84e7a0785df3efb62e3012834700a5afe0d", size = 126869, upload-time = "2026-08-14T16:12:42.651Z" },
2803
+ ]
2804
+
2805
  [[package]]
2806
  name = "outlines-core"
2807
  version = "0.2.14"
 
2977
 
2978
  [[package]]
2979
  name = "prometheus-fastapi-instrumentator"
2980
+ version = "8.1.0"
2981
  source = { registry = "https://pypi.org/simple" }
2982
  dependencies = [
2983
  { name = "prometheus-client" },
2984
  { name = "starlette" },
2985
  ]
2986
+ sdist = { url = "https://files.pythonhosted.org/packages/95/f4/cdcebf7094b03b99fba71ac8f56bd6f227973642662f49d272332d8419b3/prometheus_fastapi_instrumentator-8.1.0.tar.gz", hash = "sha256:b77f3043665e8d28e2bbd21017506195a43d9adf1d402d01bf95b494b7e560e1", size = 20492, upload-time = "2026-07-26T11:12:44.202Z" }
2987
  wheels = [
2988
+ { url = "https://files.pythonhosted.org/packages/44/b9/91a2246e6cf01b7ccb14479803c8a50f9c258ae5c6a0f16ba3294820632b/prometheus_fastapi_instrumentator-8.1.0-py3-none-any.whl", hash = "sha256:b9f40b2cff3f7891ca0610b3ae4fc6ec723fd326b04bb659819aaeb821a0fc7d", size = 19649, upload-time = "2026-07-26T11:12:45.168Z" },
2989
  ]
2990
 
2991
  [[package]]
 
3171
 
3172
  [[package]]
3173
  name = "pydantic"
3174
+ version = "2.12.5"
3175
  source = { registry = "https://pypi.org/simple" }
3176
  dependencies = [
3177
  { name = "annotated-types" },
 
3179
  { name = "typing-extensions" },
3180
  { name = "typing-inspection" },
3181
  ]
3182
+ sdist = { url = "https://files.pythonhosted.org/packages/69/44/36f1a6e523abc58ae5f928898e4aca2e0ea509b5aa6f6f392a5d882be928/pydantic-2.12.5.tar.gz", hash = "sha256:4d351024c75c0f085a9febbb665ce8c0c6ec5d30e903bdb6394b7ede26aebb49", size = 821591, upload-time = "2025-11-26T15:11:46.471Z" }
3183
  wheels = [
3184
+ { url = "https://files.pythonhosted.org/packages/5a/87/b70ad306ebb6f9b585f114d0ac2137d792b48be34d732d60e597c2f8465a/pydantic-2.12.5-py3-none-any.whl", hash = "sha256:e561593fccf61e8a20fc46dfc2dfe075b8be7d0188df33f221ad1f0139180f9d", size = 463580, upload-time = "2025-11-26T15:11:44.605Z" },
3185
  ]
3186
 
3187
  [package.optional-dependencies]
 
3191
 
3192
  [[package]]
3193
  name = "pydantic-core"
3194
+ version = "2.41.5"
3195
  source = { registry = "https://pypi.org/simple" }
3196
  dependencies = [
3197
  { name = "typing-extensions" },
3198
  ]
3199
+ sdist = { url = "https://files.pythonhosted.org/packages/71/70/23b021c950c2addd24ec408e9ab05d59b035b39d97cdc1130e1bce647bb6/pydantic_core-2.41.5.tar.gz", hash = "sha256:08daa51ea16ad373ffd5e7606252cc32f07bc72b28284b6bc9c6df804816476e", size = 460952, upload-time = "2025-11-04T13:43:49.098Z" }
3200
+ wheels = [
3201
+ { url = "https://files.pythonhosted.org/packages/5f/5d/5f6c63eebb5afee93bcaae4ce9a898f3373ca23df3ccaef086d0233a35a7/pydantic_core-2.41.5-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:f41a7489d32336dbf2199c8c0a215390a751c5b014c2c1c5366e817202e9cdf7", size = 2110990, upload-time = "2025-11-04T13:39:58.079Z" },
3202
+ { url = "https://files.pythonhosted.org/packages/aa/32/9c2e8ccb57c01111e0fd091f236c7b371c1bccea0fa85247ac55b1e2b6b6/pydantic_core-2.41.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:070259a8818988b9a84a449a2a7337c7f430a22acc0859c6b110aa7212a6d9c0", size = 1896003, upload-time = "2025-11-04T13:39:59.956Z" },
3203
+ { url = "https://files.pythonhosted.org/packages/68/b8/a01b53cb0e59139fbc9e4fda3e9724ede8de279097179be4ff31f1abb65a/pydantic_core-2.41.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e96cea19e34778f8d59fe40775a7a574d95816eb150850a85a7a4c8f4b94ac69", size = 1919200, upload-time = "2025-11-04T13:40:02.241Z" },
3204
+ { url = "https://files.pythonhosted.org/packages/38/de/8c36b5198a29bdaade07b5985e80a233a5ac27137846f3bc2d3b40a47360/pydantic_core-2.41.5-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ed2e99c456e3fadd05c991f8f437ef902e00eedf34320ba2b0842bd1c3ca3a75", size = 2052578, upload-time = "2025-11-04T13:40:04.401Z" },
3205
+ { url = "https://files.pythonhosted.org/packages/00/b5/0e8e4b5b081eac6cb3dbb7e60a65907549a1ce035a724368c330112adfdd/pydantic_core-2.41.5-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:65840751b72fbfd82c3c640cff9284545342a4f1eb1586ad0636955b261b0b05", size = 2208504, upload-time = "2025-11-04T13:40:06.072Z" },
3206
+ { url = "https://files.pythonhosted.org/packages/77/56/87a61aad59c7c5b9dc8caad5a41a5545cba3810c3e828708b3d7404f6cef/pydantic_core-2.41.5-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e536c98a7626a98feb2d3eaf75944ef6f3dbee447e1f841eae16f2f0a72d8ddc", size = 2335816, upload-time = "2025-11-04T13:40:07.835Z" },
3207
+ { url = "https://files.pythonhosted.org/packages/0d/76/941cc9f73529988688a665a5c0ecff1112b3d95ab48f81db5f7606f522d3/pydantic_core-2.41.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eceb81a8d74f9267ef4081e246ffd6d129da5d87e37a77c9bde550cb04870c1c", size = 2075366, upload-time = "2025-11-04T13:40:09.804Z" },
3208
+ { url = "https://files.pythonhosted.org/packages/d3/43/ebef01f69baa07a482844faaa0a591bad1ef129253ffd0cdaa9d8a7f72d3/pydantic_core-2.41.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d38548150c39b74aeeb0ce8ee1d8e82696f4a4e16ddc6de7b1d8823f7de4b9b5", size = 2171698, upload-time = "2025-11-04T13:40:12.004Z" },
3209
+ { url = "https://files.pythonhosted.org/packages/b1/87/41f3202e4193e3bacfc2c065fab7706ebe81af46a83d3e27605029c1f5a6/pydantic_core-2.41.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:c23e27686783f60290e36827f9c626e63154b82b116d7fe9adba1fda36da706c", size = 2132603, upload-time = "2025-11-04T13:40:13.868Z" },
3210
+ { url = "https://files.pythonhosted.org/packages/49/7d/4c00df99cb12070b6bccdef4a195255e6020a550d572768d92cc54dba91a/pydantic_core-2.41.5-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:482c982f814460eabe1d3bb0adfdc583387bd4691ef00b90575ca0d2b6fe2294", size = 2329591, upload-time = "2025-11-04T13:40:15.672Z" },
3211
+ { url = "https://files.pythonhosted.org/packages/cc/6a/ebf4b1d65d458f3cda6a7335d141305dfa19bdc61140a884d165a8a1bbc7/pydantic_core-2.41.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:bfea2a5f0b4d8d43adf9d7b8bf019fb46fdd10a2e5cde477fbcb9d1fa08c68e1", size = 2319068, upload-time = "2025-11-04T13:40:17.532Z" },
3212
+ { url = "https://files.pythonhosted.org/packages/49/3b/774f2b5cd4192d5ab75870ce4381fd89cf218af999515baf07e7206753f0/pydantic_core-2.41.5-cp312-cp312-win32.whl", hash = "sha256:b74557b16e390ec12dca509bce9264c3bbd128f8a2c376eaa68003d7f327276d", size = 1985908, upload-time = "2025-11-04T13:40:19.309Z" },
3213
+ { url = "https://files.pythonhosted.org/packages/86/45/00173a033c801cacf67c190fef088789394feaf88a98a7035b0e40d53dc9/pydantic_core-2.41.5-cp312-cp312-win_amd64.whl", hash = "sha256:1962293292865bca8e54702b08a4f26da73adc83dd1fcf26fbc875b35d81c815", size = 2020145, upload-time = "2025-11-04T13:40:21.548Z" },
3214
+ { url = "https://files.pythonhosted.org/packages/f9/22/91fbc821fa6d261b376a3f73809f907cec5ca6025642c463d3488aad22fb/pydantic_core-2.41.5-cp312-cp312-win_arm64.whl", hash = "sha256:1746d4a3d9a794cacae06a5eaaccb4b8643a131d45fbc9af23e353dc0a5ba5c3", size = 1976179, upload-time = "2025-11-04T13:40:23.393Z" },
3215
+ { url = "https://files.pythonhosted.org/packages/09/32/59b0c7e63e277fa7911c2fc70ccfb45ce4b98991e7ef37110663437005af/pydantic_core-2.41.5-graalpy312-graalpy250_312_native-macosx_10_12_x86_64.whl", hash = "sha256:7da7087d756b19037bc2c06edc6c170eeef3c3bafcb8f532ff17d64dc427adfd", size = 2110495, upload-time = "2025-11-04T13:42:49.689Z" },
3216
+ { url = "https://files.pythonhosted.org/packages/aa/81/05e400037eaf55ad400bcd318c05bb345b57e708887f07ddb2d20e3f0e98/pydantic_core-2.41.5-graalpy312-graalpy250_312_native-macosx_11_0_arm64.whl", hash = "sha256:aabf5777b5c8ca26f7824cb4a120a740c9588ed58df9b2d196ce92fba42ff8dc", size = 1915388, upload-time = "2025-11-04T13:42:52.215Z" },
3217
+ { url = "https://files.pythonhosted.org/packages/6e/0d/e3549b2399f71d56476b77dbf3cf8937cec5cd70536bdc0e374a421d0599/pydantic_core-2.41.5-graalpy312-graalpy250_312_native-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c007fe8a43d43b3969e8469004e9845944f1a80e6acd47c150856bb87f230c56", size = 1942879, upload-time = "2025-11-04T13:42:56.483Z" },
3218
+ { url = "https://files.pythonhosted.org/packages/f7/07/34573da085946b6a313d7c42f82f16e8920bfd730665de2d11c0c37a74b5/pydantic_core-2.41.5-graalpy312-graalpy250_312_native-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:76d0819de158cd855d1cbb8fcafdf6f5cf1eb8e470abe056d5d161106e38062b", size = 2139017, upload-time = "2025-11-04T13:42:59.471Z" },
 
3219
  ]
3220
 
3221
  [[package]]
 
3250
  { url = "https://files.pythonhosted.org/packages/01/dd/bebff3040138f00ae8a102d426b27349b9a49acc310fcae7f92112d867e3/pydantic_settings-2.14.0-py3-none-any.whl", hash = "sha256:fc8d5d692eb7092e43c8647c1c35a3ecd00e040fcf02ed86f4cb5458ca62182e", size = 60940, upload-time = "2026-04-20T13:37:38.586Z" },
3251
  ]
3252
 
3253
+ [[package]]
3254
+ name = "pydub"
3255
+ version = "0.25.1"
3256
+ source = { registry = "https://pypi.org/simple" }
3257
+ sdist = { url = "https://files.pythonhosted.org/packages/fe/9a/e6bca0eed82db26562c73b5076539a4a08d3cffd19c3cc5913a3e61145fd/pydub-0.25.1.tar.gz", hash = "sha256:980a33ce9949cab2a569606b65674d748ecbca4f0796887fd6f46173a7b0d30f", size = 38326, upload-time = "2021-03-10T02:09:54.659Z" }
3258
+ wheels = [
3259
+ { url = "https://files.pythonhosted.org/packages/a6/53/d78dc063216e62fc55f6b2eebb447f6a4b0a59f55c8406376f76bf959b08/pydub-0.25.1-py2.py3-none-any.whl", hash = "sha256:65617e33033874b59d87db603aa1ed450633288aefead953b30bded59cb599a6", size = 32327, upload-time = "2021-03-10T02:09:53.503Z" },
3260
+ ]
3261
+
3262
  [[package]]
3263
  name = "pygments"
3264
  version = "2.20.0"
 
3692
  { url = "https://files.pythonhosted.org/packages/06/f2/6c90ccf3ad1d09a7d662a405b274f3c93b92df59c8d6a025d26aaf34d302/sacrebleu-2.6.0-py3-none-any.whl", hash = "sha256:3edc1531575cfe4ad04ce53491a9307e234af1c3f805a1f491cbec844229a8a8", size = 100785, upload-time = "2026-01-12T17:17:18.868Z" },
3693
  ]
3694
 
3695
+ [[package]]
3696
+ name = "safehttpx"
3697
+ version = "0.1.7"
3698
+ source = { registry = "https://pypi.org/simple" }
3699
+ dependencies = [
3700
+ { name = "httpx" },
3701
+ ]
3702
+ sdist = { url = "https://files.pythonhosted.org/packages/89/d1/4282284d9cf1ee873607a46442da977fc3c985059315ab23610be31d5885/safehttpx-0.1.7.tar.gz", hash = "sha256:db201c0978c41eddb8bb480f3eee59dd67304fdd91646035e9d9a720049a9d23", size = 10385, upload-time = "2025-10-24T18:30:09.783Z" }
3703
+ wheels = [
3704
+ { url = "https://files.pythonhosted.org/packages/2e/a3/0f0b7d78e2f1eb9e8e1afbff1d2bff8d60144aee17aca51c065b516743dd/safehttpx-0.1.7-py3-none-any.whl", hash = "sha256:c4f4a162db6993464d7ca3d7cc4af0ffc6515a606dfd220b9f82c6945d869cde", size = 8959, upload-time = "2025-10-24T18:30:08.733Z" },
3705
+ ]
3706
+
3707
  [[package]]
3708
  name = "safetensors"
3709
  version = "0.7.0"
 
3767
  { url = "https://files.pythonhosted.org/packages/bc/98/fe9ae9ffb3b54b62559f52dedaebe204b408db8109a8c66fdd04869e6424/scipy-1.17.1-cp312-cp312-win_arm64.whl", hash = "sha256:f4115102802df98b2b0db3cce5cb9b92572633a1197c77b7553e5203f284a5b3", size = 24547340, upload-time = "2026-02-23T00:19:12.024Z" },
3768
  ]
3769
 
3770
+ [[package]]
3771
+ name = "semantic-version"
3772
+ version = "2.10.0"
3773
+ source = { registry = "https://pypi.org/simple" }
3774
+ sdist = { url = "https://files.pythonhosted.org/packages/7d/31/f2289ce78b9b473d582568c234e104d2a342fd658cc288a7553d83bb8595/semantic_version-2.10.0.tar.gz", hash = "sha256:bdabb6d336998cbb378d4b9db3a4b56a1e3235701dc05ea2690d9a997ed5041c", size = 52289, upload-time = "2022-05-26T13:35:23.454Z" }
3775
+ wheels = [
3776
+ { url = "https://files.pythonhosted.org/packages/6a/23/8146aad7d88f4fcb3a6218f41a60f6c2d4e3a72de72da1825dc7c8f7877c/semantic_version-2.10.0-py2.py3-none-any.whl", hash = "sha256:de78a3b8e0feda74cabc54aab2da702113e33ac9d9eb9d2389bcf1f58b7d9177", size = 15552, upload-time = "2022-05-26T13:35:21.206Z" },
3777
+ ]
3778
+
3779
  [[package]]
3780
  name = "semver"
3781
  version = "3.0.4"
 
3935
 
3936
  [[package]]
3937
  name = "starlette"
3938
+ version = "1.6.0"
3939
  source = { registry = "https://pypi.org/simple" }
3940
  dependencies = [
3941
  { name = "anyio" },
3942
  { name = "typing-extensions" },
3943
  ]
3944
+ sdist = { url = "https://files.pythonhosted.org/packages/b5/b4/205b0d5241d934e8add0c38aa924c4f9fb7330834ff11e5444db964ec3f9/starlette-1.6.0.tar.gz", hash = "sha256:d4e3ac5e546444960c710297a3c9fc3f7ebae1b7e963f3d36173b49da535be9b", size = 2716969, upload-time = "2026-08-08T18:27:57.512Z" }
3945
  wheels = [
3946
+ { url = "https://files.pythonhosted.org/packages/c8/cb/6a6a47d5b464bd08695d254f3da6e7986cc70c9fa5d778eda57538edfe56/starlette-1.6.0-py3-none-any.whl", hash = "sha256:a86dd39d14bb45f85a3d18525215a9ef0cfd1f192ac793220e72598c90335f0c", size = 75969, upload-time = "2026-08-08T18:27:56.196Z" },
3947
  ]
3948
 
3949
  [[package]]
 
4111
  { url = "https://files.pythonhosted.org/packages/72/f4/0de46cfa12cdcbcd464cc59fde36912af405696f687e53a091fb432f694c/tokenizers-0.22.2-cp39-abi3-win_arm64.whl", hash = "sha256:9ce725d22864a1e965217204946f830c37876eee3b2ba6fc6255e8e903d5fcbc", size = 2612133, upload-time = "2026-01-05T10:45:17.232Z" },
4112
  ]
4113
 
4114
+ [[package]]
4115
+ name = "tomlkit"
4116
+ version = "0.14.0"
4117
+ source = { registry = "https://pypi.org/simple" }
4118
+ sdist = { url = "https://files.pythonhosted.org/packages/c3/af/14b24e41977adb296d6bd1fb59402cf7d60ce364f90c890bd2ec65c43b5a/tomlkit-0.14.0.tar.gz", hash = "sha256:cf00efca415dbd57575befb1f6634c4f42d2d87dbba376128adb42c121b87064", size = 187167, upload-time = "2026-01-13T01:14:53.304Z" }
4119
+ wheels = [
4120
+ { url = "https://files.pythonhosted.org/packages/b5/11/87d6d29fb5d237229d67973a6c9e06e048f01cf4994dee194ab0ea841814/tomlkit-0.14.0-py3-none-any.whl", hash = "sha256:592064ed85b40fa213469f81ac584f67a4f2992509a7c3ea2d632208623a3680", size = 39310, upload-time = "2026-01-13T01:14:51.965Z" },
4121
+ ]
4122
+
4123
  [[package]]
4124
  name = "toolz"
4125
  version = "1.1.0"
 
4689
  { url = "https://files.pythonhosted.org/packages/03/d6/a0b135e4419df475177ae78fc93c422430b0fd8875649486f9a5989772e6/z3_solver-4.15.4.0-py3-none-win_amd64.whl", hash = "sha256:00e35b02632ed085ea8199fb230f6015e6fc40554a6680c097bd5f060e827431", size = 16259597, upload-time = "2025-10-29T18:12:01.14Z" },
4690
  ]
4691
 
 
 
 
 
 
 
 
 
 
 
 
 
4692
  [[package]]
4693
  name = "zipp"
4694
  version = "3.23.1"