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.
- {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/CHANGELOG.md +18 -8
- {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/CONTRIBUTING.md +4 -4
- {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/PKG-INFO +5 -5
- {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/README.md +4 -4
- {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/docs/RELEASE.md +15 -9
- {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/pyproject.toml +1 -1
- {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/src/decision_toolkit/__init__.py +1 -1
- {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/.github/workflows/ci.yml +0 -0
- {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/.github/workflows/release.yml +0 -0
- {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/.gitignore +0 -0
- {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/LICENSE +0 -0
- {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/SECURITY.md +0 -0
- {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/THIRD_PARTY_NOTICES.md +0 -0
- {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/bench/README.md +0 -0
- {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/bench/__init__.py +0 -0
- {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/bench/load.py +0 -0
- {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/bench/results/2026-10-20-calibration.json +0 -0
- {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/bench/results/2026-10-20-load.json +0 -0
- {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/bench/results/2026-10-20-smoke.json +0 -0
- {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/bench/run.py +0 -0
- {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/bench/suites/calibration.jsonl +0 -0
- {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/bench/suites/smoke.jsonl +0 -0
- {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/docs/BENCH.md +0 -0
- {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/docs/CLI.md +0 -0
- {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/docs/CORE.md +0 -0
- {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/docs/EXAMPLES.md +0 -0
- {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/docs/OPERATIONS.md +0 -0
- {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/docs/REST.md +0 -0
- {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/docs/ROADMAP.md +0 -0
- {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/docs/models/README.md +0 -0
- {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/docs/models/gliner2.5-decide.md +0 -0
- {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/docs/models/gliner2.5-multi.md +0 -0
- {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/docs/models/julia-1.md +0 -0
- {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/docs/models/laya.md +0 -0
- {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/docs/models/opendecider-nano.md +0 -0
- {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/src/decision_toolkit/__main__.py +0 -0
- {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/src/decision_toolkit/adapters/__init__.py +0 -0
- {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/src/decision_toolkit/adapters/base.py +0 -0
- {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/src/decision_toolkit/adapters/gliner2.py +0 -0
- {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/src/decision_toolkit/adapters/gliner2_decide.py +0 -0
- {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/src/decision_toolkit/adapters/julia.py +0 -0
- {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/src/decision_toolkit/adapters/laya.py +0 -0
- {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/src/decision_toolkit/adapters/opendecider.py +0 -0
- {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/src/decision_toolkit/calibration.py +0 -0
- {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/src/decision_toolkit/catalog.py +0 -0
- {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/src/decision_toolkit/cli.py +0 -0
- {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/src/decision_toolkit/config.py +0 -0
- {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/src/decision_toolkit/contracts/__init__.py +0 -0
- {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/src/decision_toolkit/contracts/common.py +0 -0
- {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/src/decision_toolkit/contracts/mapping.py +0 -0
- {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/src/decision_toolkit/contracts/openai_decisions_beta.py +0 -0
- {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/src/decision_toolkit/contracts/systemone_v1.py +0 -0
- {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/src/decision_toolkit/decision_model.py +0 -0
- {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/src/decision_toolkit/engine/__init__.py +0 -0
- {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/src/decision_toolkit/errors.py +0 -0
- {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/src/decision_toolkit/limits.py +0 -0
- {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/src/decision_toolkit/metrics.py +0 -0
- {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/src/decision_toolkit/models.py +0 -0
- {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/src/decision_toolkit/observability.py +0 -0
- {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/src/decision_toolkit/py.typed +0 -0
- {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/src/decision_toolkit/registry.py +0 -0
- {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/src/decision_toolkit/results.py +0 -0
- {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/src/decision_toolkit/schema.py +0 -0
- {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/src/decision_toolkit/server.py +0 -0
- {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/src/decision_toolkit/tracing.py +0 -0
- {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/tests/__init__.py +0 -0
- {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/tests/conftest.py +0 -0
- {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/tests/test_adapters_gliner2.py +0 -0
- {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/tests/test_adapters_gliner2_decide.py +0 -0
- {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/tests/test_adapters_julia.py +0 -0
- {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/tests/test_adapters_laya.py +0 -0
- {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/tests/test_adapters_opendecider.py +0 -0
- {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/tests/test_bench.py +0 -0
- {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/tests/test_catalog.py +0 -0
- {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/tests/test_cli.py +0 -0
- {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/tests/test_config.py +0 -0
- {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/tests/test_core_phase1.py +0 -0
- {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/tests/test_decision_model.py +0 -0
- {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/tests/test_fuzz_rest.py +0 -0
- {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/tests/test_integration_gliner2.py +0 -0
- {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/tests/test_models.py +0 -0
- {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/tests/test_operations.py +0 -0
- {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/tests/test_results.py +0 -0
- {decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/tests/test_schema.py +0 -0
- {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.
|
|
4
|
-
published
|
|
3
|
+
All notable changes to this project are documented here. Version `0.1.2` is
|
|
4
|
+
published on PyPI.
|
|
5
5
|
|
|
6
|
-
## [
|
|
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
|
-
-
|
|
17
|
-
|
|
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
|
-
|
|
67
|
-
|
|
68
|
-
|
|
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`.
|
|
76
|
-
|
|
77
|
-
[
|
|
78
|
-
|
|
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.
|
|
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 (
|
|
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
|
-
|
|
69
|
-
|
|
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 (
|
|
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
|
-
|
|
25
|
-
|
|
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
|
|
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.
|
|
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.
|
|
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.
|
|
70
|
-
git push origin v0.1.
|
|
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
|
-
##
|
|
112
|
+
## Published release
|
|
113
113
|
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
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.
|
|
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.
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/src/decision_toolkit/adapters/gliner2_decide.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/src/decision_toolkit/adapters/opendecider.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/src/decision_toolkit/contracts/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{decision_toolkit-0.1.0 → decision_toolkit-0.1.2}/src/decision_toolkit/contracts/systemone_v1.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|