decision-toolkit 0.1.0__tar.gz → 0.1.2__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 (85) hide show
  1. {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/CHANGELOG.md +18 -8
  2. {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/CONTRIBUTING.md +4 -4
  3. {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/PKG-INFO +5 -5
  4. {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/README.md +4 -4
  5. {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/docs/RELEASE.md +15 -9
  6. {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/pyproject.toml +1 -1
  7. {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/src/decision_toolkit/__init__.py +1 -1
  8. {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/.github/workflows/ci.yml +0 -0
  9. {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/.github/workflows/release.yml +0 -0
  10. {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/.gitignore +0 -0
  11. {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/LICENSE +0 -0
  12. {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/SECURITY.md +0 -0
  13. {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/THIRD_PARTY_NOTICES.md +0 -0
  14. {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/bench/README.md +0 -0
  15. {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/bench/__init__.py +0 -0
  16. {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/bench/load.py +0 -0
  17. {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/bench/results/2026-10-20-calibration.json +0 -0
  18. {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/bench/results/2026-10-20-load.json +0 -0
  19. {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/bench/results/2026-10-20-smoke.json +0 -0
  20. {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/bench/run.py +0 -0
  21. {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/bench/suites/calibration.jsonl +0 -0
  22. {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/bench/suites/smoke.jsonl +0 -0
  23. {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/docs/BENCH.md +0 -0
  24. {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/docs/CLI.md +0 -0
  25. {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/docs/CORE.md +0 -0
  26. {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/docs/EXAMPLES.md +0 -0
  27. {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/docs/OPERATIONS.md +0 -0
  28. {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/docs/REST.md +0 -0
  29. {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/docs/ROADMAP.md +0 -0
  30. {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/docs/models/README.md +0 -0
  31. {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/docs/models/gliner2.5-decide.md +0 -0
  32. {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/docs/models/gliner2.5-multi.md +0 -0
  33. {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/docs/models/julia-1.md +0 -0
  34. {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/docs/models/laya.md +0 -0
  35. {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/docs/models/opendecider-nano.md +0 -0
  36. {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/src/decision_toolkit/__main__.py +0 -0
  37. {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/src/decision_toolkit/adapters/__init__.py +0 -0
  38. {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/src/decision_toolkit/adapters/base.py +0 -0
  39. {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/src/decision_toolkit/adapters/gliner2.py +0 -0
  40. {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/src/decision_toolkit/adapters/gliner2_decide.py +0 -0
  41. {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/src/decision_toolkit/adapters/julia.py +0 -0
  42. {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/src/decision_toolkit/adapters/laya.py +0 -0
  43. {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/src/decision_toolkit/adapters/opendecider.py +0 -0
  44. {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/src/decision_toolkit/calibration.py +0 -0
  45. {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/src/decision_toolkit/catalog.py +0 -0
  46. {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/src/decision_toolkit/cli.py +0 -0
  47. {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/src/decision_toolkit/config.py +0 -0
  48. {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/src/decision_toolkit/contracts/__init__.py +0 -0
  49. {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/src/decision_toolkit/contracts/common.py +0 -0
  50. {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/src/decision_toolkit/contracts/mapping.py +0 -0
  51. {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/src/decision_toolkit/contracts/openai_decisions_beta.py +0 -0
  52. {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/src/decision_toolkit/contracts/systemone_v1.py +0 -0
  53. {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/src/decision_toolkit/decision_model.py +0 -0
  54. {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/src/decision_toolkit/engine/__init__.py +0 -0
  55. {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/src/decision_toolkit/errors.py +0 -0
  56. {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/src/decision_toolkit/limits.py +0 -0
  57. {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/src/decision_toolkit/metrics.py +0 -0
  58. {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/src/decision_toolkit/models.py +0 -0
  59. {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/src/decision_toolkit/observability.py +0 -0
  60. {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/src/decision_toolkit/py.typed +0 -0
  61. {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/src/decision_toolkit/registry.py +0 -0
  62. {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/src/decision_toolkit/results.py +0 -0
  63. {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/src/decision_toolkit/schema.py +0 -0
  64. {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/src/decision_toolkit/server.py +0 -0
  65. {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/src/decision_toolkit/tracing.py +0 -0
  66. {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/tests/__init__.py +0 -0
  67. {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/tests/conftest.py +0 -0
  68. {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/tests/test_adapters_gliner2.py +0 -0
  69. {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/tests/test_adapters_gliner2_decide.py +0 -0
  70. {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/tests/test_adapters_julia.py +0 -0
  71. {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/tests/test_adapters_laya.py +0 -0
  72. {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/tests/test_adapters_opendecider.py +0 -0
  73. {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/tests/test_bench.py +0 -0
  74. {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/tests/test_catalog.py +0 -0
  75. {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/tests/test_cli.py +0 -0
  76. {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/tests/test_config.py +0 -0
  77. {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/tests/test_core_phase1.py +0 -0
  78. {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/tests/test_decision_model.py +0 -0
  79. {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/tests/test_fuzz_rest.py +0 -0
  80. {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/tests/test_integration_gliner2.py +0 -0
  81. {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/tests/test_models.py +0 -0
  82. {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/tests/test_operations.py +0 -0
  83. {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/tests/test_results.py +0 -0
  84. {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/tests/test_schema.py +0 -0
  85. {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/tests/test_server.py +0 -0
@@ -1,9 +1,18 @@
1
1
  # Changelog
2
2
 
3
- All notable changes to this project are documented here. The project has not
4
- published a distribution artifact yet; versions are repository milestones.
3
+ All notable changes to this project are documented here. Version `0.1.2` is
4
+ published on PyPI.
5
5
 
6
- ## [Unreleased]
6
+ ## [0.1.2] — 2026-10-20
7
+
8
+ Trusted Publishing validation release. No functional or model changes.
9
+
10
+ ## [0.1.1] — 2026-10-20
11
+
12
+ Metadata-only release: refreshed the PyPI project description after the final
13
+ README correction. No code or model behavior changed.
14
+
15
+ ## [0.1.0] — 2026-10-20
7
16
 
8
17
  ### Phase 6 — packaging
9
18
 
@@ -13,8 +22,9 @@ published a distribution artifact yet; versions are repository milestones.
13
22
  REST server work from the installed artifact.
14
23
  - Added a Trusted Publishing release workflow for TestPyPI → PyPI and GitHub
15
24
  Releases.
16
- - No artifact has been uploaded yet; PyPI/TestPyPI publishing requires the
17
- configured environments and approval.
25
+ - Published `0.1.0` to PyPI:
26
+ <https://pypi.org/project/decision-toolkit/0.1.0/>.
27
+ - Trusted Publishing workflow is available for future TestPyPI/PyPI releases.
18
28
  - Added `docs/RELEASE.md`.
19
29
 
20
30
  ### Phase 5 — operations
@@ -63,6 +73,6 @@ published a distribution artifact yet; versions are repository milestones.
63
73
  - Typed `DecisionModel` API with lifecycle, batching, async, usage, warnings,
64
74
  normalized confidence, capabilities, structured events and atomic model store.
65
75
 
66
- ## [0.1.0] — unreleased
67
-
68
- The version is not tagged or packaged yet. Wheel/PyPI construction is deferred.
76
+ [0.1.2]: https://pypi.org/project/decision-toolkit/0.1.2/
77
+ [0.1.1]: https://pypi.org/project/decision-toolkit/0.1.1/
78
+ [0.1.0]: https://pypi.org/project/decision-toolkit/0.1.0/
@@ -72,10 +72,10 @@ python -m decision_toolkit --version
72
72
  pip-audit # dependency scan (CI runs this)
73
73
  ```
74
74
 
75
- CI runs these on Python 3.12 and 3.13 from source, plus `pip-audit`. It does
76
- **not** build a wheel; packaging is a later milestone. See
77
- [OPERATIONS.md](docs/OPERATIONS.md) for rate limits, metrics, tracing and the
78
- load probe.
75
+ CI runs these on Python 3.12 and 3.13 from source, plus `pip-audit`. A separate
76
+ tag-triggered release workflow builds and publishes the wheel; see
77
+ [RELEASE.md](docs/RELEASE.md). For rate limits, metrics, tracing and the load
78
+ probe see [OPERATIONS.md](docs/OPERATIONS.md).
79
79
 
80
80
  ## Commits
81
81
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: decision-toolkit
3
- Version: 0.1.0
3
+ Version: 0.1.2
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
@@ -60,14 +60,14 @@ CLI. `dtk --help` and every subcommand help also include runnable examples.
60
60
  ## Installation
61
61
 
62
62
  ```bash
63
- pip install decision-toolkit # library + CLI (once v0.1.0 is on PyPI)
63
+ pip install decision-toolkit # library + CLI (0.1.2 on PyPI)
64
64
  pip install "decision-toolkit[onnx]" # + onnxruntime, tokenizers (the model runtime)
65
65
  pip install "decision-toolkit[server]" # + REST server (FastAPI)
66
66
  ```
67
67
 
68
- Pre-release: the artifact is built and verified locally, but not uploaded yet.
69
- See [docs/RELEASE.md](https://github.com/gia-uh/decision-toolkit/blob/main/docs/RELEASE.md) for the Trusted Publishing flow and
70
- clean-install checks.
68
+ PyPI: <https://pypi.org/project/decision-toolkit/0.1.2/>. See
69
+ [docs/RELEASE.md](https://github.com/gia-uh/decision-toolkit/blob/main/docs/RELEASE.md)
70
+ for the Trusted Publishing flow and clean-install checks.
71
71
 
72
72
  ## Three ways to use it
73
73
 
@@ -16,14 +16,14 @@ CLI. `dtk --help` and every subcommand help also include runnable examples.
16
16
  ## Installation
17
17
 
18
18
  ```bash
19
- pip install decision-toolkit # library + CLI (once v0.1.0 is on PyPI)
19
+ pip install decision-toolkit # library + CLI (0.1.2 on PyPI)
20
20
  pip install "decision-toolkit[onnx]" # + onnxruntime, tokenizers (the model runtime)
21
21
  pip install "decision-toolkit[server]" # + REST server (FastAPI)
22
22
  ```
23
23
 
24
- Pre-release: the artifact is built and verified locally, but not uploaded yet.
25
- See [docs/RELEASE.md](https://github.com/gia-uh/decision-toolkit/blob/main/docs/RELEASE.md) for the Trusted Publishing flow and
26
- clean-install checks.
24
+ PyPI: <https://pypi.org/project/decision-toolkit/0.1.2/>. See
25
+ [docs/RELEASE.md](https://github.com/gia-uh/decision-toolkit/blob/main/docs/RELEASE.md)
26
+ for the Trusted Publishing flow and clean-install checks.
27
27
 
28
28
  ## Three ways to use it
29
29
 
@@ -1,7 +1,7 @@
1
1
  # Release
2
2
 
3
3
  The package name is `decision-toolkit` (PyPI/TestPyPI returned 404 when this
4
- file was written, so the name was available). The first release is `0.1.0`.
4
+ file was written, so the name was available). The first release was `0.1.0`; `0.1.1` was a metadata-only refresh; `0.1.2` validates Trusted Publishing end to end.
5
5
 
6
6
  ## Local build and verification
7
7
 
@@ -24,7 +24,7 @@ Clean install test (no `PYTHONPATH`):
24
24
  ```bash
25
25
  python -m venv /tmp/dtk-wheel
26
26
  . /tmp/dtk-wheel/bin/activate
27
- pip install dist/decision_toolkit-0.1.0-py3-none-any.whl
27
+ pip install dist/decision_toolkit-0.1.2-py3-none-any.whl
28
28
  dtk --version
29
29
  dtk models list --json
30
30
  dtk doctor --json
@@ -33,7 +33,7 @@ dtk doctor --json
33
33
  With inference and server extras:
34
34
 
35
35
  ```bash
36
- pip install "decision_toolkit-0.1.0-py3-none-any.whl[onnx,server,tracing]"
36
+ pip install "decision_toolkit-0.1.2-py3-none-any.whl[onnx,server,tracing]"
37
37
  dtk decide --model gliner2.5-decide ...
38
38
  dtk serve --model gliner2.5-decide --warmup --port 8016
39
39
  curl -s http://127.0.0.1:8016/health
@@ -66,8 +66,8 @@ No long-lived PyPI token is needed; the workflow uses GitHub OIDC
66
66
  4. Create and push an annotated tag:
67
67
 
68
68
  ```bash
69
- git tag -a v0.1.0 -m "decision-toolkit 0.1.0"
70
- git push origin v0.1.0
69
+ git tag -a v0.1.2 -m "decision-toolkit 0.1.2"
70
+ git push origin v0.1.2
71
71
  ```
72
72
 
73
73
  5. `.github/workflows/release.yml` builds once, publishes to **TestPyPI**, then
@@ -109,8 +109,14 @@ No long-lived PyPI token is needed; the workflow uses GitHub OIDC
109
109
  From GitHub Actions, run `release` with `target=testpypi`. It builds and uploads
110
110
  to TestPyPI without publishing to PyPI or creating a GitHub release.
111
111
 
112
- ## Pre-release status
112
+ ## Published release
113
113
 
114
- The repository can build and install cleanly, but **no artifact has been
115
- uploaded yet**. The actual upload requires the PyPI/TestPyPI trusted publisher
116
- configuration and GitHub environment approval described above.
114
+ `0.1.2` was published through Trusted Publishing on 2026-10-20:
115
+
116
+ <https://pypi.org/project/decision-toolkit/0.1.2/>
117
+
118
+ `0.1.0` was the first release; `0.1.1` refreshed the PyPI description; `0.1.2`
119
+ validates the OIDC TestPyPI → PyPI flow end to end.
120
+
121
+ The tag-triggered workflow remains the preferred path for future releases once
122
+ the TestPyPI/PyPI trusted publishers and protected environments are configured.
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "decision-toolkit"
7
- version = "0.1.0"
7
+ version = "0.1.2"
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.1.0"
10
+ __version__ = "0.1.2"
11
11
 
12
12
  from .adapters import register_adapter
13
13
  from .calibration import brier_score, expected_calibration_error, threshold_sweep