decision-toolkit 0.4.3__tar.gz → 0.4.4__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (106) hide show
  1. {decision_toolkit-0.4.3 → decision_toolkit-0.4.4}/CHANGELOG.md +9 -1
  2. {decision_toolkit-0.4.3 → decision_toolkit-0.4.4}/PKG-INFO +2 -2
  3. {decision_toolkit-0.4.3 → decision_toolkit-0.4.4}/README.md +1 -1
  4. {decision_toolkit-0.4.3 → decision_toolkit-0.4.4}/docs/RELEASE.md +10 -8
  5. {decision_toolkit-0.4.3 → decision_toolkit-0.4.4}/docs/REST.md +6 -3
  6. {decision_toolkit-0.4.3 → decision_toolkit-0.4.4}/pyproject.toml +1 -1
  7. {decision_toolkit-0.4.3 → decision_toolkit-0.4.4}/src/decision_toolkit/__init__.py +1 -1
  8. {decision_toolkit-0.4.3 → decision_toolkit-0.4.4}/src/decision_toolkit/contracts/systemone_v1.py +4 -4
  9. {decision_toolkit-0.4.3 → decision_toolkit-0.4.4}/uv.lock +1 -1
  10. {decision_toolkit-0.4.3 → decision_toolkit-0.4.4}/.github/workflows/ci.yml +0 -0
  11. {decision_toolkit-0.4.3 → decision_toolkit-0.4.4}/.github/workflows/docs.yml +0 -0
  12. {decision_toolkit-0.4.3 → decision_toolkit-0.4.4}/.github/workflows/release.yml +0 -0
  13. {decision_toolkit-0.4.3 → decision_toolkit-0.4.4}/.gitignore +0 -0
  14. {decision_toolkit-0.4.3 → decision_toolkit-0.4.4}/CONTRIBUTING.md +0 -0
  15. {decision_toolkit-0.4.3 → decision_toolkit-0.4.4}/LICENSE +0 -0
  16. {decision_toolkit-0.4.3 → decision_toolkit-0.4.4}/SECURITY.md +0 -0
  17. {decision_toolkit-0.4.3 → decision_toolkit-0.4.4}/THIRD_PARTY_NOTICES.md +0 -0
  18. {decision_toolkit-0.4.3 → decision_toolkit-0.4.4}/bench/README.md +0 -0
  19. {decision_toolkit-0.4.3 → decision_toolkit-0.4.4}/bench/__init__.py +0 -0
  20. {decision_toolkit-0.4.3 → decision_toolkit-0.4.4}/bench/load.py +0 -0
  21. {decision_toolkit-0.4.3 → decision_toolkit-0.4.4}/bench/results/2026-10-20-calibration.json +0 -0
  22. {decision_toolkit-0.4.3 → decision_toolkit-0.4.4}/bench/results/2026-10-20-load.json +0 -0
  23. {decision_toolkit-0.4.3 → decision_toolkit-0.4.4}/bench/results/2026-10-20-smoke.json +0 -0
  24. {decision_toolkit-0.4.3 → decision_toolkit-0.4.4}/bench/run.py +0 -0
  25. {decision_toolkit-0.4.3 → decision_toolkit-0.4.4}/bench/suites/calibration.jsonl +0 -0
  26. {decision_toolkit-0.4.3 → decision_toolkit-0.4.4}/bench/suites/smoke.jsonl +0 -0
  27. {decision_toolkit-0.4.3 → decision_toolkit-0.4.4}/docs/BENCH.md +0 -0
  28. {decision_toolkit-0.4.3 → decision_toolkit-0.4.4}/docs/CLI.md +0 -0
  29. {decision_toolkit-0.4.3 → decision_toolkit-0.4.4}/docs/CORE.md +0 -0
  30. {decision_toolkit-0.4.3 → decision_toolkit-0.4.4}/docs/EXAMPLES.md +0 -0
  31. {decision_toolkit-0.4.3 → decision_toolkit-0.4.4}/docs/FAQ.md +0 -0
  32. {decision_toolkit-0.4.3 → decision_toolkit-0.4.4}/docs/GLOSSARY.md +0 -0
  33. {decision_toolkit-0.4.3 → decision_toolkit-0.4.4}/docs/INSTALLATION.md +0 -0
  34. {decision_toolkit-0.4.3 → decision_toolkit-0.4.4}/docs/LIBRARY.md +0 -0
  35. {decision_toolkit-0.4.3 → decision_toolkit-0.4.4}/docs/MODELS.md +0 -0
  36. {decision_toolkit-0.4.3 → decision_toolkit-0.4.4}/docs/OPERATIONS.md +0 -0
  37. {decision_toolkit-0.4.3 → decision_toolkit-0.4.4}/docs/QUICKSTART.md +0 -0
  38. {decision_toolkit-0.4.3 → decision_toolkit-0.4.4}/docs/RECIPES.md +0 -0
  39. {decision_toolkit-0.4.3 → decision_toolkit-0.4.4}/docs/TROUBLESHOOTING.md +0 -0
  40. {decision_toolkit-0.4.3 → decision_toolkit-0.4.4}/docs/VARIANTS.md +0 -0
  41. {decision_toolkit-0.4.3 → decision_toolkit-0.4.4}/docs/index.md +0 -0
  42. {decision_toolkit-0.4.3 → decision_toolkit-0.4.4}/docs/models/README.md +0 -0
  43. {decision_toolkit-0.4.3 → decision_toolkit-0.4.4}/docs/models/gliner2.5-decide.md +0 -0
  44. {decision_toolkit-0.4.3 → decision_toolkit-0.4.4}/docs/models/gliner2.5-multi.md +0 -0
  45. {decision_toolkit-0.4.3 → decision_toolkit-0.4.4}/docs/models/julia-1.md +0 -0
  46. {decision_toolkit-0.4.3 → decision_toolkit-0.4.4}/docs/models/laya-multilingual.md +0 -0
  47. {decision_toolkit-0.4.3 → decision_toolkit-0.4.4}/docs/models/laya.md +0 -0
  48. {decision_toolkit-0.4.3 → decision_toolkit-0.4.4}/docs/models/open-jev-deberta-v3-large.md +0 -0
  49. {decision_toolkit-0.4.3 → decision_toolkit-0.4.4}/docs/models/opendecider-nano.md +0 -0
  50. {decision_toolkit-0.4.3 → decision_toolkit-0.4.4}/docs/models/strands-decider-2b.md +0 -0
  51. {decision_toolkit-0.4.3 → decision_toolkit-0.4.4}/src/decision_toolkit/__main__.py +0 -0
  52. {decision_toolkit-0.4.3 → decision_toolkit-0.4.4}/src/decision_toolkit/adapters/__init__.py +0 -0
  53. {decision_toolkit-0.4.3 → decision_toolkit-0.4.4}/src/decision_toolkit/adapters/base.py +0 -0
  54. {decision_toolkit-0.4.3 → decision_toolkit-0.4.4}/src/decision_toolkit/adapters/gliner2.py +0 -0
  55. {decision_toolkit-0.4.3 → decision_toolkit-0.4.4}/src/decision_toolkit/adapters/gliner2_decide.py +0 -0
  56. {decision_toolkit-0.4.3 → decision_toolkit-0.4.4}/src/decision_toolkit/adapters/julia.py +0 -0
  57. {decision_toolkit-0.4.3 → decision_toolkit-0.4.4}/src/decision_toolkit/adapters/laya.py +0 -0
  58. {decision_toolkit-0.4.3 → decision_toolkit-0.4.4}/src/decision_toolkit/adapters/opendecider.py +0 -0
  59. {decision_toolkit-0.4.3 → decision_toolkit-0.4.4}/src/decision_toolkit/adapters/openjev.py +0 -0
  60. {decision_toolkit-0.4.3 → decision_toolkit-0.4.4}/src/decision_toolkit/adapters/strands_decider.py +0 -0
  61. {decision_toolkit-0.4.3 → decision_toolkit-0.4.4}/src/decision_toolkit/calibration.py +0 -0
  62. {decision_toolkit-0.4.3 → decision_toolkit-0.4.4}/src/decision_toolkit/catalog.py +0 -0
  63. {decision_toolkit-0.4.3 → decision_toolkit-0.4.4}/src/decision_toolkit/cli.py +0 -0
  64. {decision_toolkit-0.4.3 → decision_toolkit-0.4.4}/src/decision_toolkit/config.py +0 -0
  65. {decision_toolkit-0.4.3 → decision_toolkit-0.4.4}/src/decision_toolkit/contracts/__init__.py +0 -0
  66. {decision_toolkit-0.4.3 → decision_toolkit-0.4.4}/src/decision_toolkit/contracts/common.py +0 -0
  67. {decision_toolkit-0.4.3 → decision_toolkit-0.4.4}/src/decision_toolkit/contracts/mapping.py +0 -0
  68. {decision_toolkit-0.4.3 → decision_toolkit-0.4.4}/src/decision_toolkit/contracts/openai_decisions_beta.py +0 -0
  69. {decision_toolkit-0.4.3 → decision_toolkit-0.4.4}/src/decision_toolkit/decision_model.py +0 -0
  70. {decision_toolkit-0.4.3 → decision_toolkit-0.4.4}/src/decision_toolkit/engine/__init__.py +0 -0
  71. {decision_toolkit-0.4.3 → decision_toolkit-0.4.4}/src/decision_toolkit/errors.py +0 -0
  72. {decision_toolkit-0.4.3 → decision_toolkit-0.4.4}/src/decision_toolkit/limits.py +0 -0
  73. {decision_toolkit-0.4.3 → decision_toolkit-0.4.4}/src/decision_toolkit/metrics.py +0 -0
  74. {decision_toolkit-0.4.3 → decision_toolkit-0.4.4}/src/decision_toolkit/models.py +0 -0
  75. {decision_toolkit-0.4.3 → decision_toolkit-0.4.4}/src/decision_toolkit/observability.py +0 -0
  76. {decision_toolkit-0.4.3 → decision_toolkit-0.4.4}/src/decision_toolkit/py.typed +0 -0
  77. {decision_toolkit-0.4.3 → decision_toolkit-0.4.4}/src/decision_toolkit/registry.py +0 -0
  78. {decision_toolkit-0.4.3 → decision_toolkit-0.4.4}/src/decision_toolkit/results.py +0 -0
  79. {decision_toolkit-0.4.3 → decision_toolkit-0.4.4}/src/decision_toolkit/schema.py +0 -0
  80. {decision_toolkit-0.4.3 → decision_toolkit-0.4.4}/src/decision_toolkit/server.py +0 -0
  81. {decision_toolkit-0.4.3 → decision_toolkit-0.4.4}/src/decision_toolkit/tracing.py +0 -0
  82. {decision_toolkit-0.4.3 → decision_toolkit-0.4.4}/tests/__init__.py +0 -0
  83. {decision_toolkit-0.4.3 → decision_toolkit-0.4.4}/tests/conftest.py +0 -0
  84. {decision_toolkit-0.4.3 → decision_toolkit-0.4.4}/tests/test_adapters_gliner2.py +0 -0
  85. {decision_toolkit-0.4.3 → decision_toolkit-0.4.4}/tests/test_adapters_gliner2_decide.py +0 -0
  86. {decision_toolkit-0.4.3 → decision_toolkit-0.4.4}/tests/test_adapters_julia.py +0 -0
  87. {decision_toolkit-0.4.3 → decision_toolkit-0.4.4}/tests/test_adapters_laya.py +0 -0
  88. {decision_toolkit-0.4.3 → decision_toolkit-0.4.4}/tests/test_adapters_opendecider.py +0 -0
  89. {decision_toolkit-0.4.3 → decision_toolkit-0.4.4}/tests/test_adapters_openjev.py +0 -0
  90. {decision_toolkit-0.4.3 → decision_toolkit-0.4.4}/tests/test_adapters_strands.py +0 -0
  91. {decision_toolkit-0.4.3 → decision_toolkit-0.4.4}/tests/test_bench.py +0 -0
  92. {decision_toolkit-0.4.3 → decision_toolkit-0.4.4}/tests/test_catalog.py +0 -0
  93. {decision_toolkit-0.4.3 → decision_toolkit-0.4.4}/tests/test_cli.py +0 -0
  94. {decision_toolkit-0.4.3 → decision_toolkit-0.4.4}/tests/test_config.py +0 -0
  95. {decision_toolkit-0.4.3 → decision_toolkit-0.4.4}/tests/test_contracts_conformance.py +0 -0
  96. {decision_toolkit-0.4.3 → decision_toolkit-0.4.4}/tests/test_core_phase1.py +0 -0
  97. {decision_toolkit-0.4.3 → decision_toolkit-0.4.4}/tests/test_decision_model.py +0 -0
  98. {decision_toolkit-0.4.3 → decision_toolkit-0.4.4}/tests/test_docs.py +0 -0
  99. {decision_toolkit-0.4.3 → decision_toolkit-0.4.4}/tests/test_fuzz_rest.py +0 -0
  100. {decision_toolkit-0.4.3 → decision_toolkit-0.4.4}/tests/test_help_examples.py +0 -0
  101. {decision_toolkit-0.4.3 → decision_toolkit-0.4.4}/tests/test_integration_gliner2.py +0 -0
  102. {decision_toolkit-0.4.3 → decision_toolkit-0.4.4}/tests/test_models.py +0 -0
  103. {decision_toolkit-0.4.3 → decision_toolkit-0.4.4}/tests/test_operations.py +0 -0
  104. {decision_toolkit-0.4.3 → decision_toolkit-0.4.4}/tests/test_results.py +0 -0
  105. {decision_toolkit-0.4.3 → decision_toolkit-0.4.4}/tests/test_schema.py +0 -0
  106. {decision_toolkit-0.4.3 → decision_toolkit-0.4.4}/tests/test_server.py +0 -0
@@ -1,8 +1,15 @@
1
1
  # Changelog
2
2
 
3
- All notable changes to this project are documented here. Version `0.4.3` is
3
+ All notable changes to this project are documented here. Version `0.4.4` is
4
4
  published on PyPI.
5
5
 
6
+ ## [0.4.4] — 2026-10-21
7
+
8
+ Documentation correction: removed the remaining wording that described
9
+ `variant` as a request extension. System One and OpenAI request bodies have no
10
+ `variant` field; quantization is selected with the model alias and the chosen
11
+ variant is reported under `x_decision_toolkit` in responses. No runtime changes.
12
+
6
13
  ## [0.4.3] — 2026-10-21
7
14
 
8
15
  Documentation and help UX improvements. Added a Quickstart, Installation guide,
@@ -235,6 +242,7 @@ README correction. No code or model behavior changed.
235
242
  - Typed `DecisionModel` API with lifecycle, batching, async, usage, warnings,
236
243
  normalized confidence, capabilities, structured events and atomic model store.
237
244
 
245
+ [0.4.4]: https://pypi.org/project/decision-toolkit/0.4.4/
238
246
  [0.4.3]: https://pypi.org/project/decision-toolkit/0.4.3/
239
247
  [0.4.2]: https://pypi.org/project/decision-toolkit/0.4.2/
240
248
  [0.4.1]: https://pypi.org/project/decision-toolkit/0.4.1/
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: decision-toolkit
3
- Version: 0.4.3
3
+ Version: 0.4.4
4
4
  Summary: Local-first toolkit for open-weights decision models: one ONNX engine, one adapter per model contract, typed choice/yes-no/score decisions with probabilities on CPU.
5
5
  Project-URL: Homepage, https://github.com/gia-uh/decision-toolkit
6
6
  Project-URL: Repository, https://github.com/gia-uh/decision-toolkit
@@ -70,7 +70,7 @@ uv pip install "decision-toolkit[onnx,server]" # + REST server (FastAPI)
70
70
  The project is managed with [uv](https://docs.astral.sh/uv/) and ships a committed `uv.lock`. Published
71
71
  wheels remain compatible with `pip` for environments that do not use uv.
72
72
 
73
- PyPI: <https://pypi.org/project/decision-toolkit/0.4.3/>. See
73
+ PyPI: <https://pypi.org/project/decision-toolkit/0.4.4/>. See
74
74
  [docs/RELEASE.md](https://github.com/gia-uh/decision-toolkit/blob/main/docs/RELEASE.md)
75
75
  for the Trusted Publishing flow and clean-install checks.
76
76
 
@@ -32,7 +32,7 @@ uv pip install "decision-toolkit[onnx,server]" # + REST server (FastAPI)
32
32
  The project is managed with [uv](https://docs.astral.sh/uv/) and ships a committed `uv.lock`. Published
33
33
  wheels remain compatible with `pip` for environments that do not use uv.
34
34
 
35
- PyPI: <https://pypi.org/project/decision-toolkit/0.4.3/>. See
35
+ PyPI: <https://pypi.org/project/decision-toolkit/0.4.4/>. See
36
36
  [docs/RELEASE.md](https://github.com/gia-uh/decision-toolkit/blob/main/docs/RELEASE.md)
37
37
  for the Trusted Publishing flow and clean-install checks.
38
38
 
@@ -13,7 +13,8 @@ changed the public documentation URLs to this repository's Pages site; `0.3.0`
13
13
  added the Laya multilingual, Open-Jev DeBERTa v3 large and Strands Decider ONNX models; `0.3.1` made the catalog list one row per variant with exact commands; `0.4.0`
14
14
  replaced the non-standard REST `variant` body field with standard model aliases
15
15
  (`id@variant`); `0.4.3` added the user-facing documentation guides and cleaned
16
- up CLI help/status output.
16
+ up CLI help/status output; `0.4.4` corrected the remaining REST wording about
17
+ variant request fields.
17
18
 
18
19
  ## Local build and verification
19
20
 
@@ -40,7 +41,7 @@ Clean install test (no `PYTHONPATH`):
40
41
  ```bash
41
42
  uv venv --python 3.12 /tmp/dtk-wheel
42
43
  uv pip install --python /tmp/dtk-wheel/bin/python \
43
- dist/decision_toolkit-0.4.3-py3-none-any.whl
44
+ dist/decision_toolkit-0.4.4-py3-none-any.whl
44
45
  uv pip check --python /tmp/dtk-wheel/bin/python
45
46
  /tmp/dtk-wheel/bin/dtk --version
46
47
  /tmp/dtk-wheel/bin/dtk models list --json
@@ -51,7 +52,7 @@ With inference and server extras:
51
52
 
52
53
  ```bash
53
54
  uv pip install --python /tmp/dtk-wheel/bin/python \
54
- "dist/decision_toolkit-0.4.3-py3-none-any.whl[onnx,server,tracing]"
55
+ "dist/decision_toolkit-0.4.4-py3-none-any.whl[onnx,server,tracing]"
55
56
  /tmp/dtk-wheel/bin/dtk decide --model gliner2.5-decide ...
56
57
  /tmp/dtk-wheel/bin/dtk serve --model gliner2.5-decide --warmup --port 8016
57
58
  curl -s http://127.0.0.1:8016/health
@@ -85,8 +86,8 @@ No long-lived PyPI token is needed; the workflow uses GitHub OIDC
85
86
  4. Create and push an annotated tag:
86
87
 
87
88
  ```bash
88
- git tag -a v0.4.3 -m "decision-toolkit 0.4.3"
89
- git push origin v0.4.3
89
+ git tag -a v0.4.4 -m "decision-toolkit 0.4.4"
90
+ git push origin v0.4.4
90
91
  ```
91
92
 
92
93
  5. `.github/workflows/release.yml` builds once, publishes to **TestPyPI**, then
@@ -135,9 +136,9 @@ to TestPyPI without publishing to PyPI or creating a GitHub release.
135
136
 
136
137
  ## Published release
137
138
 
138
- `0.4.3` is published through Trusted Publishing on 2026-10-21:
139
+ `0.4.4` is published through Trusted Publishing on 2026-10-21:
139
140
 
140
- <https://pypi.org/project/decision-toolkit/0.4.3/>
141
+ <https://pypi.org/project/decision-toolkit/0.4.4/>
141
142
 
142
143
  `0.1.0` was the first release; `0.1.1` refreshed the PyPI description; `0.1.2`
143
144
  validated the OIDC TestPyPI → PyPI flow; `0.1.3` added post-publish install
@@ -151,7 +152,8 @@ added the three new ONNX decision models; `0.3.1` made the catalog list one row
151
152
  selection to standard model aliases; `0.4.1` exposed aliases in the catalog and
152
153
  per-variant loading examples in every model card; `0.4.2` removed internal
153
154
  project language and public proposal/roadmap pages; `0.4.3` added user-facing
154
- guides and cleaned up CLI help/status output.
155
+ guides and cleaned up CLI help/status output; `0.4.4` corrected the remaining
156
+ REST variant-request wording.
155
157
 
156
158
  The tag-triggered workflow remains the preferred path for future releases once
157
159
  the TestPyPI/PyPI trusted publishers and protected environments are configured.
@@ -147,7 +147,8 @@ Standard fields:
147
147
  current catalog is text-only. Legacy `files`/`images` fields are local
148
148
  extensions; valid data URLs also return `501`, malformed values return `422`.
149
149
  - `model` is optional only as a local convenience; standard clients send it.
150
- `variant` is a local extension, not part of the TypeSafe schema.
150
+ There is no `variant` request field; the chosen variant is reported as
151
+ `x_decision_toolkit.variant` in the response.
151
152
 
152
153
  ## OpenAI Decisions beta
153
154
 
@@ -211,7 +212,8 @@ Response:
211
212
  - Duplicate question names return `400`.
212
213
  - Images in `input` return `501` (`multimodal_not_supported`); the published
213
214
  beta supports inline images, but the current catalog has no vision model.
214
- - `variant` is a local extension; standard clients omit it.
215
+ - `x_decision_toolkit.variant` is a response extension; standard clients ignore
216
+ it, and the request has no `variant` field.
215
217
  - OpenAI SDK clients can list models (`client.models.list()`) and parse the
216
218
  error envelope (`{"error": {message, type, param, code}}`).
217
219
 
@@ -309,7 +311,8 @@ Adding a new spec version means adding a new module, not editing the old one.
309
311
  | Images/assets | `501` for current models | `501` for current models |
310
312
  | Usage | `input_tokens` + non-negative `output_tokens` | input/output/total + details |
311
313
  | Per-request model | standard field; optional local default | standard field; optional local default |
312
- | `variant` | local extension | local extension |
314
+ | `variant` request field | not present | not present |
315
+ | `x_decision_toolkit.variant` response | extension | extension |
313
316
  | Validation errors | `422` + `detail` | `400` + envelope |
314
317
  | Auth / CORS / limits | server-level | server-level |
315
318
 
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "decision-toolkit"
7
- version = "0.4.3"
7
+ version = "0.4.4"
8
8
  description = "Local-first toolkit for open-weights decision models: one ONNX engine, one adapter per model contract, typed choice/yes-no/score decisions with probabilities on CPU."
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.12"
@@ -7,7 +7,7 @@ questions with a calibrated probability for every option, on CPU.
7
7
 
8
8
  from __future__ import annotations
9
9
 
10
- __version__ = "0.4.3"
10
+ __version__ = "0.4.4"
11
11
 
12
12
  from .adapters import register_adapter
13
13
  from .calibration import brier_score, expected_calibration_error, threshold_sweep
@@ -13,7 +13,7 @@ documentation at ``https://docs.typesafe.ai/api``:
13
13
  * unsupported image/asset input returns ``501`` because the current catalog is
14
14
  text-only
15
15
 
16
- ``model`` and ``variant`` remain optional routing extensions for the local
16
+ ``model`` remains an optional routing extension for the local
17
17
  multi-model server; standard clients send ``model``. Toolkit-specific metadata
18
18
  lives under ``x_decision_toolkit`` so standard fields keep their meaning.
19
19
  """
@@ -103,9 +103,9 @@ class SystemOneQuestion(BaseModel):
103
103
  class SystemOneRequest(BaseModel):
104
104
  """System One request body.
105
105
 
106
- ``model`` and ``variant`` are routing extensions: System One itself does not
107
- require a model field, but a multi-model local server does. They are
108
- optional and standard clients can omit them.
106
+ ``model`` is a routing extension: System One itself does not require a model
107
+ field, but a multi-model local server does. It is optional and standard
108
+ clients can omit it.
109
109
  """
110
110
 
111
111
  model_config = ConfigDict(extra="forbid")
@@ -349,7 +349,7 @@ wheels = [
349
349
 
350
350
  [[package]]
351
351
  name = "decision-toolkit"
352
- version = "0.4.3"
352
+ version = "0.4.4"
353
353
  source = { editable = "." }
354
354
  dependencies = [
355
355
  { name = "huggingface-hub" },