millwright 0.2.0__tar.gz → 2.2.0__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 (78) hide show
  1. millwright-2.2.0/.cargo/audit.toml +5 -0
  2. {millwright-0.2.0 → millwright-2.2.0}/.github/workflows/ci.yml +45 -18
  3. {millwright-0.2.0 → millwright-2.2.0}/.github/workflows/release-python.yml +20 -1
  4. {millwright-0.2.0 → millwright-2.2.0}/CHANGELOG.md +30 -3
  5. {millwright-0.2.0 → millwright-2.2.0}/Cargo.lock +108 -80
  6. {millwright-0.2.0 → millwright-2.2.0}/Cargo.toml +12 -5
  7. {millwright-0.2.0 → millwright-2.2.0}/GUIDE.md +1 -1
  8. {millwright-0.2.0 → millwright-2.2.0}/PKG-INFO +4 -7
  9. {millwright-0.2.0 → millwright-2.2.0}/README.md +3 -6
  10. {millwright-0.2.0 → millwright-2.2.0}/docs/deploy.html +1 -0
  11. {millwright-0.2.0 → millwright-2.2.0}/guide.html +3 -2
  12. {millwright-0.2.0 → millwright-2.2.0}/index.html +15 -15
  13. {millwright-0.2.0 → millwright-2.2.0}/pyproject.toml +1 -1
  14. {millwright-0.2.0 → millwright-2.2.0}/src/automl.rs +48 -2
  15. {millwright-0.2.0 → millwright-2.2.0}/src/backends/smartcore.rs +30 -11
  16. {millwright-0.2.0 → millwright-2.2.0}/src/evaluate.rs +29 -4
  17. {millwright-0.2.0 → millwright-2.2.0}/src/explain.rs +3 -0
  18. {millwright-0.2.0 → millwright-2.2.0}/src/lib.rs +1 -1
  19. {millwright-0.2.0 → millwright-2.2.0}/src/monitor.rs +61 -9
  20. millwright-2.2.0/src/onnx.rs +1075 -0
  21. {millwright-0.2.0 → millwright-2.2.0}/src/pipeline.rs +29 -34
  22. {millwright-0.2.0 → millwright-2.2.0}/src/profile.rs +3 -0
  23. {millwright-0.2.0 → millwright-2.2.0}/src/python.rs +15 -15
  24. millwright-2.2.0/src/registry.rs +472 -0
  25. {millwright-0.2.0 → millwright-2.2.0}/src/selection/mod.rs +30 -0
  26. {millwright-0.2.0 → millwright-2.2.0}/src/selection/scoring.rs +21 -14
  27. {millwright-0.2.0 → millwright-2.2.0}/src/selection/search.rs +9 -0
  28. {millwright-0.2.0 → millwright-2.2.0}/src/serve.rs +151 -10
  29. {millwright-0.2.0 → millwright-2.2.0}/src/traits.rs +11 -0
  30. {millwright-0.2.0 → millwright-2.2.0}/src/transform.rs +15 -0
  31. millwright-2.2.0/tests/hero_snippet.rs +51 -0
  32. millwright-2.2.0/tests/onnx_export.rs +151 -0
  33. millwright-2.2.0/tests/python_smoke.py +29 -0
  34. millwright-0.2.0/src/onnx.rs +0 -327
  35. millwright-0.2.0/src/registry.rs +0 -279
  36. {millwright-0.2.0 → millwright-2.2.0}/.github/workflows/release-crate.yml +0 -0
  37. {millwright-0.2.0 → millwright-2.2.0}/.gitignore +0 -0
  38. {millwright-0.2.0 → millwright-2.2.0}/CNAME +0 -0
  39. {millwright-0.2.0 → millwright-2.2.0}/CONTRIBUTING.md +0 -0
  40. {millwright-0.2.0 → millwright-2.2.0}/LICENSE +0 -0
  41. {millwright-0.2.0 → millwright-2.2.0}/RELEASING.md +0 -0
  42. {millwright-0.2.0 → millwright-2.2.0}/benches/throughput.rs +0 -0
  43. {millwright-0.2.0 → millwright-2.2.0}/docs/data.html +0 -0
  44. {millwright-0.2.0 → millwright-2.2.0}/docs/index.html +0 -0
  45. {millwright-0.2.0 → millwright-2.2.0}/docs/insight.html +0 -0
  46. {millwright-0.2.0 → millwright-2.2.0}/docs/pipelines.html +0 -0
  47. {millwright-0.2.0 → millwright-2.2.0}/docs/python.html +0 -0
  48. {millwright-0.2.0 → millwright-2.2.0}/docs/site.css +0 -0
  49. {millwright-0.2.0 → millwright-2.2.0}/examples/automl.rs +0 -0
  50. {millwright-0.2.0 → millwright-2.2.0}/examples/backends.rs +0 -0
  51. {millwright-0.2.0 → millwright-2.2.0}/examples/explore.rs +0 -0
  52. {millwright-0.2.0 → millwright-2.2.0}/examples/insight.rs +0 -0
  53. {millwright-0.2.0 → millwright-2.2.0}/examples/operations.rs +0 -0
  54. {millwright-0.2.0 → millwright-2.2.0}/examples/portability.rs +0 -0
  55. {millwright-0.2.0 → millwright-2.2.0}/examples/specialized.rs +0 -0
  56. {millwright-0.2.0 → millwright-2.2.0}/examples/spine.rs +0 -0
  57. {millwright-0.2.0 → millwright-2.2.0}/examples/trust.rs +0 -0
  58. {millwright-0.2.0 → millwright-2.2.0}/examples/workflow.rs +0 -0
  59. {millwright-0.2.0 → millwright-2.2.0}/scripts/release.sh +0 -0
  60. {millwright-0.2.0 → millwright-2.2.0}/src/anomaly.rs +0 -0
  61. {millwright-0.2.0 → millwright-2.2.0}/src/backends/chronos.rs +0 -0
  62. {millwright-0.2.0 → millwright-2.2.0}/src/backends/incremental.rs +0 -0
  63. {millwright-0.2.0 → millwright-2.2.0}/src/backends/linfa.rs +0 -0
  64. {millwright-0.2.0 → millwright-2.2.0}/src/backends/mod.rs +0 -0
  65. {millwright-0.2.0 → millwright-2.2.0}/src/balance.rs +0 -0
  66. {millwright-0.2.0 → millwright-2.2.0}/src/calibration.rs +0 -0
  67. {millwright-0.2.0 → millwright-2.2.0}/src/diagnostics.rs +0 -0
  68. {millwright-0.2.0 → millwright-2.2.0}/src/ensemble.rs +0 -0
  69. {millwright-0.2.0 → millwright-2.2.0}/src/error.rs +0 -0
  70. {millwright-0.2.0 → millwright-2.2.0}/src/frame.rs +0 -0
  71. {millwright-0.2.0 → millwright-2.2.0}/src/logistic.rs +0 -0
  72. {millwright-0.2.0 → millwright-2.2.0}/src/rng.rs +0 -0
  73. {millwright-0.2.0 → millwright-2.2.0}/src/selection/cv.rs +0 -0
  74. {millwright-0.2.0 → millwright-2.2.0}/src/table.rs +0 -0
  75. {millwright-0.2.0 → millwright-2.2.0}/src/viz.rs +0 -0
  76. {millwright-0.2.0 → millwright-2.2.0}/tests/ensemble_zoo.rs +0 -0
  77. {millwright-0.2.0 → millwright-2.2.0}/tests/golden.rs +0 -0
  78. {millwright-0.2.0 → millwright-2.2.0}/tests/real_data.rs +0 -0
@@ -0,0 +1,5 @@
1
+ [advisories]
2
+ # quick-xml 0.39.4 is retained in Cargo.lock by an inactive optional dependency
3
+ # and does not appear in Cargo's resolved graph for any target or feature set.
4
+ # Keep these explicit until the upstream package drops that stale lock edge.
5
+ ignore = ["RUSTSEC-2026-0194", "RUSTSEC-2026-0195"]
@@ -73,23 +73,23 @@ jobs:
73
73
  - { name: "spine", features: "--no-default-features --features smartcore-backend" }
74
74
  # The default install.
75
75
  - { name: "default", features: "" }
76
- # Each feature added on top of default the realistic install shape,
77
- # and enough to catch a feature that fails to compile in isolation.
78
- - { name: "eda", features: "--features eda" }
79
- - { name: "calibration", features: "--features calibration" }
80
- - { name: "anomaly", features: "--features anomaly" }
81
- - { name: "linfa", features: "--features linfa-backend" }
82
- - { name: "hpo", features: "--features hpo" }
83
- - { name: "diagnostics", features: "--features diagnostics" }
84
- - { name: "explain", features: "--features explain" }
85
- - { name: "viz", features: "--features viz" }
86
- - { name: "onnx", features: "--features onnx" }
87
- - { name: "registry", features: "--features registry" }
88
- - { name: "monitor", features: "--features monitor" }
89
- - { name: "serve", features: "--features serve" }
90
- - { name: "timeseries", features: "--features timeseries" }
91
- - { name: "incremental", features: "--features incremental" }
92
- - { name: "automl", features: "--features automl" }
76
+ # Each feature in isolation. Dependencies declared by that feature are
77
+ # enabled transitively; unrelated defaults cannot hide a bad edge.
78
+ - { name: "eda", features: "--no-default-features --features eda" }
79
+ - { name: "calibration", features: "--no-default-features --features calibration" }
80
+ - { name: "anomaly", features: "--no-default-features --features anomaly" }
81
+ - { name: "linfa", features: "--no-default-features --features linfa-backend" }
82
+ - { name: "hpo", features: "--no-default-features --features hpo" }
83
+ - { name: "diagnostics", features: "--no-default-features --features diagnostics" }
84
+ - { name: "explain", features: "--no-default-features --features explain" }
85
+ - { name: "viz", features: "--no-default-features --features viz" }
86
+ - { name: "onnx", features: "--no-default-features --features onnx" }
87
+ - { name: "registry", features: "--no-default-features --features registry" }
88
+ - { name: "monitor", features: "--no-default-features --features monitor" }
89
+ - { name: "serve", features: "--no-default-features --features serve" }
90
+ - { name: "timeseries", features: "--no-default-features --features timeseries" }
91
+ - { name: "incremental", features: "--no-default-features --features incremental" }
92
+ - { name: "automl", features: "--no-default-features --features automl" }
93
93
  # Everything at once — the superset build, including both ndarray worlds.
94
94
  - { name: "full", features: "--features full" }
95
95
  steps:
@@ -115,6 +115,33 @@ jobs:
115
115
  - uses: Swatinem/rust-cache@v2
116
116
  - run: cargo test --locked
117
117
 
118
+ msrv:
119
+ name: minimum Rust 1.95
120
+ runs-on: ubuntu-latest
121
+ steps:
122
+ - uses: actions/checkout@v5
123
+ - uses: dtolnay/rust-toolchain@1.95
124
+ - uses: Swatinem/rust-cache@v2
125
+ - run: cargo check --locked --all-targets --features full
126
+
127
+ supply-chain:
128
+ name: advisories
129
+ runs-on: ubuntu-latest
130
+ steps:
131
+ - uses: actions/checkout@v5
132
+ - uses: dtolnay/rust-toolchain@stable
133
+ - run: cargo install cargo-audit --locked
134
+ - run: cargo audit
135
+
136
+ semver:
137
+ name: public API compatibility
138
+ runs-on: ubuntu-latest
139
+ steps:
140
+ - uses: actions/checkout@v5
141
+ - uses: dtolnay/rust-toolchain@stable
142
+ - run: cargo install cargo-semver-checks --locked
143
+ - run: cargo semver-checks check-release
144
+
118
145
  # Compile and *run* the examples (the `test` jobs only build the library and
119
146
  # its tests), plus a compile-check of the benchmarks. The declared MSRV
120
147
  # (`rust-version` in Cargo.toml) is enforced by cargo for consumers; we do not
@@ -165,4 +192,4 @@ jobs:
165
192
  - run: pip install maturin
166
193
  - run: maturin build --locked --release
167
194
  - run: pip install --find-links target/wheels millwright
168
- - run: python -c "import millwright; print('millwright', getattr(millwright, '__version__', 'ok'))"
195
+ - run: python tests/python_smoke.py
@@ -12,7 +12,24 @@ permissions:
12
12
  contents: read
13
13
 
14
14
  jobs:
15
+ verify-version:
16
+ runs-on: ubuntu-latest
17
+ steps:
18
+ - uses: actions/checkout@v5
19
+ - uses: dtolnay/rust-toolchain@stable
20
+ - name: check Cargo, Python, and tag versions agree
21
+ shell: bash
22
+ run: |
23
+ cargo_version="$(cargo metadata --no-deps --format-version 1 | jq -r '.packages[0].version')"
24
+ python_version="$(python -c "import tomllib; print(tomllib.load(open('pyproject.toml','rb'))['project']['version'])")"
25
+ test "$cargo_version" = "$python_version" || { echo "::error::Cargo $cargo_version != Python $python_version"; exit 1; }
26
+ if [[ "$GITHUB_REF" == refs/tags/* ]]; then
27
+ tag="${GITHUB_REF_NAME#v}"
28
+ test "$tag" = "$cargo_version" || { echo "::error::tag $tag != package $cargo_version"; exit 1; }
29
+ fi
30
+
15
31
  linux:
32
+ needs: verify-version
16
33
  runs-on: ubuntu-latest
17
34
  strategy:
18
35
  fail-fast: false
@@ -37,6 +54,7 @@ jobs:
37
54
  path: dist
38
55
 
39
56
  windows:
57
+ needs: verify-version
40
58
  runs-on: windows-latest
41
59
  strategy:
42
60
  fail-fast: false
@@ -59,6 +77,7 @@ jobs:
59
77
  path: dist
60
78
 
61
79
  macos:
80
+ needs: verify-version
62
81
  runs-on: macos-latest
63
82
  strategy:
64
83
  fail-fast: false
@@ -80,6 +99,7 @@ jobs:
80
99
  path: dist
81
100
 
82
101
  sdist:
102
+ needs: verify-version
83
103
  runs-on: ubuntu-latest
84
104
  steps:
85
105
  - uses: actions/checkout@v5
@@ -111,4 +131,3 @@ jobs:
111
131
  uses: pypa/gh-action-pypi-publish@release/v1
112
132
  with:
113
133
  packages-dir: dist
114
- skip-existing: true
@@ -6,6 +6,34 @@ All notable changes to Millwright are recorded here. The format follows
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [2.2.0] - 2026-08-24
10
+
11
+ ## [0.2.1] - 2026-08-23
12
+
13
+ ### Added
14
+ - **Exported forests now serve in Millwright.** `InferenceModel` runs linear / NN
15
+ ONNX graphs through tract as before, and evaluates the ONNX-ML tree-ensemble
16
+ ops tract doesn't implement (from an exported `RandomForest`) with a small
17
+ native interpreter. A model exported by Millwright always round-trips back into
18
+ `InferenceModel`/`Server` — forests included — while the artifact stays portable
19
+ to any ONNX runtime.
20
+ - **Imputers and one-hot encoders are ONNX-exportable.** A `SimpleImputer` step
21
+ exports as `Where(IsNaN(x), fill, x)`; a `OneHotEncoder` step exports as a
22
+ per-column `Gather` → `Round` → `Equal` → `Cast` → `Concat` expansion (with the
23
+ graph input re-declared at the raw feature width). So the whole realistic
24
+ `impute → one-hot → scale → model` pipeline exports and serves as one graph —
25
+ through tract (linear) or the native interpreter (behind a forest), verified
26
+ identical to the in-memory pipeline. The pipeline export generalized from
27
+ folding one affine map to splicing an ordered chain of transformer "prefixes"
28
+ (new `Transformer::onnx_prefix`). Only steps with no ONNX form now error.
29
+ - **`SearchResult::export_onnx`** — a `GridSearch`/`RandomSearch` winner can now
30
+ be exported to ONNX (it could only `predict` before). Backed by a new
31
+ object-safe `Estimator::to_onnx_proto` on `Pipeline`.
32
+ - **`Server::from_registry(&reg, name, tag)`** and
33
+ **`DriftMonitor::from_registry(&version)`** — serve a tagged artifact straight
34
+ from a registry, and build a PSI monitor from the version's stored reference
35
+ distribution.
36
+
9
37
  ## [0.2.0] - 2026-08-23
10
38
 
11
39
  ### Added
@@ -99,9 +127,8 @@ All notable changes to Millwright are recorded here. The format follows
99
127
  feature-matrix CI (fmt, clippy `-D warnings`, docs, matrix, OS, examples,
100
128
  benches, publish dry-run, wheel).
101
129
  - `selection.rs` split into `selection/{scoring,cv,search}`.
102
- - MSRV is **1.95** (dep-dictated — `sysinfo` via tract, and polars); enforced by
103
- cargo via `rust-version` rather than a dedicated CI job (which would break on
104
- every transitive bump). The default install needs 1.85.
130
+ - MSRV is **1.95** (dep-dictated — `sysinfo` via tract, and polars), declared
131
+ through `rust-version` and exercised by a dedicated CI job.
105
132
  - De-staled the crate and module docs (no more "Phase 0 · the spine").
106
133
 
107
134
  ### Fixed
@@ -205,7 +205,7 @@ checksum = "82f6aeea286b8eb4dd3431a1be1b59d290ace00f5bfd8e2a159bc2a05e2c1667"
205
205
  dependencies = [
206
206
  "proc-macro2",
207
207
  "quote",
208
- "syn 3.0.3",
208
+ "syn 3.0.4",
209
209
  ]
210
210
 
211
211
  [[package]]
@@ -346,7 +346,16 @@ dependencies = [
346
346
  "cc",
347
347
  "cfg-if",
348
348
  "constant_time_eq",
349
- "cpufeatures",
349
+ "cpufeatures 0.3.0",
350
+ ]
351
+
352
+ [[package]]
353
+ name = "block-buffer"
354
+ version = "0.10.4"
355
+ source = "registry+https://github.com/rust-lang/crates.io-index"
356
+ checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71"
357
+ dependencies = [
358
+ "generic-array",
350
359
  ]
351
360
 
352
361
  [[package]]
@@ -432,7 +441,7 @@ checksum = "fc0e56a716f1e132ff6bf4bdac1c944a3fcdc1cae65f70a4a2a1ac3b401d2d1f"
432
441
  dependencies = [
433
442
  "proc-macro2",
434
443
  "quote",
435
- "syn 3.0.3",
444
+ "syn 3.0.4",
436
445
  ]
437
446
 
438
447
  [[package]]
@@ -496,7 +505,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
496
505
  checksum = "d524456ba66e72eb8b115ff89e01e497f8e6d11d78b70b1aa13c0fbd97540a81"
497
506
  dependencies = [
498
507
  "cfg-if",
499
- "cpufeatures",
508
+ "cpufeatures 0.3.0",
500
509
  "rand_core 0.10.1",
501
510
  ]
502
511
 
@@ -647,6 +656,15 @@ version = "0.8.7"
647
656
  source = "registry+https://github.com/rust-lang/crates.io-index"
648
657
  checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b"
649
658
 
659
+ [[package]]
660
+ name = "cpufeatures"
661
+ version = "0.2.17"
662
+ source = "registry+https://github.com/rust-lang/crates.io-index"
663
+ checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280"
664
+ dependencies = [
665
+ "libc",
666
+ ]
667
+
650
668
  [[package]]
651
669
  name = "cpufeatures"
652
670
  version = "0.3.0"
@@ -658,9 +676,9 @@ dependencies = [
658
676
 
659
677
  [[package]]
660
678
  name = "crc32fast"
661
- version = "1.5.0"
679
+ version = "1.5.1"
662
680
  source = "registry+https://github.com/rust-lang/crates.io-index"
663
- checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511"
681
+ checksum = "8498c871161e1742aaa9d52551b2d6ebdd4c3d45a3be423e3728f33b955be550"
664
682
  dependencies = [
665
683
  "cfg-if",
666
684
  ]
@@ -750,6 +768,16 @@ version = "0.2.4"
750
768
  source = "registry+https://github.com/rust-lang/crates.io-index"
751
769
  checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5"
752
770
 
771
+ [[package]]
772
+ name = "crypto-common"
773
+ version = "0.1.7"
774
+ source = "registry+https://github.com/rust-lang/crates.io-index"
775
+ checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a"
776
+ dependencies = [
777
+ "generic-array",
778
+ "typenum",
779
+ ]
780
+
753
781
  [[package]]
754
782
  name = "crypto-common"
755
783
  version = "0.2.2"
@@ -776,15 +804,25 @@ dependencies = [
776
804
  "syn 2.0.119",
777
805
  ]
778
806
 
807
+ [[package]]
808
+ name = "digest"
809
+ version = "0.10.7"
810
+ source = "registry+https://github.com/rust-lang/crates.io-index"
811
+ checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292"
812
+ dependencies = [
813
+ "block-buffer 0.10.4",
814
+ "crypto-common 0.1.7",
815
+ ]
816
+
779
817
  [[package]]
780
818
  name = "digest"
781
819
  version = "0.11.3"
782
820
  source = "registry+https://github.com/rust-lang/crates.io-index"
783
821
  checksum = "f1dd6dbb5841937940781866fa1281a1ff7bd3bf827091440879f9994983d5c2"
784
822
  dependencies = [
785
- "block-buffer",
823
+ "block-buffer 0.12.1",
786
824
  "const-oid",
787
- "crypto-common",
825
+ "crypto-common 0.2.2",
788
826
  ]
789
827
 
790
828
  [[package]]
@@ -793,7 +831,7 @@ version = "0.1.0"
793
831
  source = "registry+https://github.com/rust-lang/crates.io-index"
794
832
  checksum = "2de63d600bc7fab91180bc17385f29b342468dc8ef2af09dceba450a293de3da"
795
833
  dependencies = [
796
- "digest",
834
+ "digest 0.11.3",
797
835
  ]
798
836
 
799
837
  [[package]]
@@ -804,7 +842,7 @@ checksum = "c6232dd377dcc64799954cbd3a9bb882e9cdc1308ccd87b1c098f1fb2eaf82a8"
804
842
  dependencies = [
805
843
  "proc-macro2",
806
844
  "quote",
807
- "syn 3.0.3",
845
+ "syn 3.0.4",
808
846
  ]
809
847
 
810
848
  [[package]]
@@ -991,6 +1029,16 @@ dependencies = [
991
1029
  "percent-encoding",
992
1030
  ]
993
1031
 
1032
+ [[package]]
1033
+ name = "fs2"
1034
+ version = "0.4.3"
1035
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1036
+ checksum = "9564fc758e15025b46aa6643b1b77d047d1a56a1aea6e01002ac0c7026876213"
1037
+ dependencies = [
1038
+ "libc",
1039
+ "winapi",
1040
+ ]
1041
+
994
1042
  [[package]]
995
1043
  name = "fs4"
996
1044
  version = "1.1.0"
@@ -1057,7 +1105,7 @@ checksum = "9fb9654ba8355388abeb8dcb4fc62f511300867002afc858860463bdd9fe0c44"
1057
1105
  dependencies = [
1058
1106
  "proc-macro2",
1059
1107
  "quote",
1060
- "syn 3.0.3",
1108
+ "syn 3.0.4",
1061
1109
  ]
1062
1110
 
1063
1111
  [[package]]
@@ -1089,6 +1137,16 @@ dependencies = [
1089
1137
  "slab",
1090
1138
  ]
1091
1139
 
1140
+ [[package]]
1141
+ name = "generic-array"
1142
+ version = "0.14.7"
1143
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1144
+ checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a"
1145
+ dependencies = [
1146
+ "typenum",
1147
+ "version_check",
1148
+ ]
1149
+
1092
1150
  [[package]]
1093
1151
  name = "getrandom"
1094
1152
  version = "0.2.17"
@@ -1591,15 +1649,6 @@ dependencies = [
1591
1649
  "serde_core",
1592
1650
  ]
1593
1651
 
1594
- [[package]]
1595
- name = "indoc"
1596
- version = "2.0.7"
1597
- source = "registry+https://github.com/rust-lang/crates.io-index"
1598
- checksum = "79cf5c93f93228cf8efb3ba362535fb11199ac548a09ce117c9b1adc3030d706"
1599
- dependencies = [
1600
- "rustversion",
1601
- ]
1602
-
1603
1652
  [[package]]
1604
1653
  name = "instant"
1605
1654
  version = "0.1.13"
@@ -1852,9 +1901,9 @@ dependencies = [
1852
1901
 
1853
1902
  [[package]]
1854
1903
  name = "log"
1855
- version = "0.4.33"
1904
+ version = "0.4.34"
1856
1905
  source = "registry+https://github.com/rust-lang/crates.io-index"
1857
- checksum = "0ceec5bc11778974d1bcb055b18002eba7f4b3518b6a0081b3af5f21666da9ad"
1906
+ checksum = "f9f8bd3e56ce4dfc153cf470fffbfa98c7620958b312ca5c3a4b8d5181fd13c6"
1858
1907
 
1859
1908
  [[package]]
1860
1909
  name = "lru-slab"
@@ -1924,23 +1973,15 @@ version = "0.3.3"
1924
1973
  source = "registry+https://github.com/rust-lang/crates.io-index"
1925
1974
  checksum = "38d1115007560874e373613744c6fba374c17688327a71c1476d1a5954cc857b"
1926
1975
 
1927
- [[package]]
1928
- name = "memoffset"
1929
- version = "0.9.1"
1930
- source = "registry+https://github.com/rust-lang/crates.io-index"
1931
- checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a"
1932
- dependencies = [
1933
- "autocfg",
1934
- ]
1935
-
1936
1976
  [[package]]
1937
1977
  name = "millwright"
1938
- version = "0.2.0"
1978
+ version = "2.2.0"
1939
1979
  dependencies = [
1940
1980
  "axum",
1941
1981
  "chronos-ts",
1942
1982
  "criterion",
1943
1983
  "driftwatch",
1984
+ "fs2",
1944
1985
  "http-body-util",
1945
1986
  "hyperopt-rs",
1946
1987
  "imbalance-rs",
@@ -1956,11 +1997,13 @@ dependencies = [
1956
1997
  "plotters",
1957
1998
  "plotters-statistical",
1958
1999
  "polars",
2000
+ "prost 0.13.5",
1959
2001
  "pyo3",
1960
2002
  "rayon",
1961
2003
  "regression-diagnostics",
1962
2004
  "serde",
1963
2005
  "serde_json",
2006
+ "sha2 0.10.9",
1964
2007
  "shap-rs",
1965
2008
  "smartcore 0.6.10",
1966
2009
  "tokio",
@@ -2013,7 +2056,6 @@ checksum = "1e224dbc8a12719140b6766def2944fd994c9c60aab3cd20a3717b6993b28e5f"
2013
2056
  dependencies = [
2014
2057
  "ndarray 0.16.1",
2015
2058
  "rand 0.8.7",
2016
- "smartcore 0.3.2",
2017
2059
  "thiserror 1.0.69",
2018
2060
  ]
2019
2061
 
@@ -3037,7 +3079,7 @@ dependencies = [
3037
3079
  "rayon",
3038
3080
  "recursive",
3039
3081
  "regex",
3040
- "sha2",
3082
+ "sha2 0.11.0",
3041
3083
  "slotmap",
3042
3084
  "strum_macros",
3043
3085
  "tokio",
@@ -3317,37 +3359,32 @@ dependencies = [
3317
3359
 
3318
3360
  [[package]]
3319
3361
  name = "pyo3"
3320
- version = "0.24.2"
3362
+ version = "0.29.2"
3321
3363
  source = "registry+https://github.com/rust-lang/crates.io-index"
3322
- checksum = "e5203598f366b11a02b13aa20cab591229ff0a89fd121a308a5df751d5fc9219"
3364
+ checksum = "4688ddedf473e32662b9b067670129a8afb8c18e351482c70d62ba4a88171e8b"
3323
3365
  dependencies = [
3324
- "cfg-if",
3325
- "indoc",
3326
3366
  "libc",
3327
- "memoffset",
3328
3367
  "once_cell",
3329
3368
  "portable-atomic",
3330
3369
  "pyo3-build-config",
3331
3370
  "pyo3-ffi",
3332
3371
  "pyo3-macros",
3333
- "unindent",
3334
3372
  ]
3335
3373
 
3336
3374
  [[package]]
3337
3375
  name = "pyo3-build-config"
3338
- version = "0.24.2"
3376
+ version = "0.29.2"
3339
3377
  source = "registry+https://github.com/rust-lang/crates.io-index"
3340
- checksum = "99636d423fa2ca130fa5acde3059308006d46f98caac629418e53f7ebb1e9999"
3378
+ checksum = "f41027e41b4bd03f6e60f9f417fe24a6341a6bb744edd62b6f709f2a52ea30e9"
3341
3379
  dependencies = [
3342
- "once_cell",
3343
3380
  "target-lexicon",
3344
3381
  ]
3345
3382
 
3346
3383
  [[package]]
3347
3384
  name = "pyo3-ffi"
3348
- version = "0.24.2"
3385
+ version = "0.29.2"
3349
3386
  source = "registry+https://github.com/rust-lang/crates.io-index"
3350
- checksum = "78f9cf92ba9c409279bc3305b5409d90db2d2c22392d443a87df3a1adad59e33"
3387
+ checksum = "e591a95526fead067432c3b3a33fc74770b87b1e04e73671090d9c2055a2b327"
3351
3388
  dependencies = [
3352
3389
  "libc",
3353
3390
  "pyo3-build-config",
@@ -3355,9 +3392,9 @@ dependencies = [
3355
3392
 
3356
3393
  [[package]]
3357
3394
  name = "pyo3-macros"
3358
- version = "0.24.2"
3395
+ version = "0.29.2"
3359
3396
  source = "registry+https://github.com/rust-lang/crates.io-index"
3360
- checksum = "0b999cb1a6ce21f9a6b147dcf1be9ffedf02e0043aec74dc390f3007047cecd9"
3397
+ checksum = "73225868fc1cd84eef2c3c230ddb91273bf1de46aeb8a4248da76d32a0924a1c"
3361
3398
  dependencies = [
3362
3399
  "proc-macro2",
3363
3400
  "pyo3-macros-backend",
@@ -3367,13 +3404,12 @@ dependencies = [
3367
3404
 
3368
3405
  [[package]]
3369
3406
  name = "pyo3-macros-backend"
3370
- version = "0.24.2"
3407
+ version = "0.29.2"
3371
3408
  source = "registry+https://github.com/rust-lang/crates.io-index"
3372
- checksum = "822ece1c7e1012745607d5cf0bcb2874769f0f7cb34c4cde03b9358eb9ef911a"
3409
+ checksum = "571575aa3749fa6216757dd47d2a3e7ef360f329a40f0666a9fbd14889024952"
3373
3410
  dependencies = [
3374
3411
  "heck",
3375
3412
  "proc-macro2",
3376
- "pyo3-build-config",
3377
3413
  "quote",
3378
3414
  "syn 2.0.119",
3379
3415
  ]
@@ -3955,7 +3991,7 @@ checksum = "e7a5d71263a5a7d47b41f6b3f06ba276f10cc18b0931f1799f710578e2309348"
3955
3991
  dependencies = [
3956
3992
  "proc-macro2",
3957
3993
  "quote",
3958
- "syn 3.0.3",
3994
+ "syn 3.0.4",
3959
3995
  ]
3960
3996
 
3961
3997
  [[package]]
@@ -4005,6 +4041,17 @@ dependencies = [
4005
4041
  "serde",
4006
4042
  ]
4007
4043
 
4044
+ [[package]]
4045
+ name = "sha2"
4046
+ version = "0.10.9"
4047
+ source = "registry+https://github.com/rust-lang/crates.io-index"
4048
+ checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283"
4049
+ dependencies = [
4050
+ "cfg-if",
4051
+ "cpufeatures 0.2.17",
4052
+ "digest 0.10.7",
4053
+ ]
4054
+
4008
4055
  [[package]]
4009
4056
  name = "sha2"
4010
4057
  version = "0.11.0"
@@ -4012,8 +4059,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
4012
4059
  checksum = "446ba717509524cb3f22f17ecc096f10f4822d76ab5c0b9822c5f9c284e825f4"
4013
4060
  dependencies = [
4014
4061
  "cfg-if",
4015
- "cpufeatures",
4016
- "digest",
4062
+ "cpufeatures 0.3.0",
4063
+ "digest 0.11.3",
4017
4064
  ]
4018
4065
 
4019
4066
  [[package]]
@@ -4143,19 +4190,6 @@ version = "1.15.2"
4143
4190
  source = "registry+https://github.com/rust-lang/crates.io-index"
4144
4191
  checksum = "8ed6a63f02c8539c91a8685a86f4099661ba3da017932f6ebbea6de3f0fa7c90"
4145
4192
 
4146
- [[package]]
4147
- name = "smartcore"
4148
- version = "0.3.2"
4149
- source = "registry+https://github.com/rust-lang/crates.io-index"
4150
- checksum = "c42ca1fcd851ada8834d3dfcd088850dc8c703bde50c2baccd89181b74dc3ade"
4151
- dependencies = [
4152
- "approx 0.5.1",
4153
- "cfg-if",
4154
- "num",
4155
- "num-traits",
4156
- "rand 0.8.7",
4157
- ]
4158
-
4159
4193
  [[package]]
4160
4194
  name = "smartcore"
4161
4195
  version = "0.5.5"
@@ -4400,9 +4434,9 @@ dependencies = [
4400
4434
 
4401
4435
  [[package]]
4402
4436
  name = "syn"
4403
- version = "3.0.3"
4437
+ version = "3.0.4"
4404
4438
  source = "registry+https://github.com/rust-lang/crates.io-index"
4405
- checksum = "53e9bae58849f64dfa4f5d5ae372c8341f7305f82a3868709269343628b659a3"
4439
+ checksum = "e6275cddf4610d1775e6d1fe9469b2e77d0f39fd98fb7450901b821e0c53649f"
4406
4440
  dependencies = [
4407
4441
  "proc-macro2",
4408
4442
  "quote",
@@ -4510,7 +4544,7 @@ checksum = "bc04cd3e1236dd4a98afca4569f2deb3f120e5422a4023be2cb683f8486292af"
4510
4544
  dependencies = [
4511
4545
  "proc-macro2",
4512
4546
  "quote",
4513
- "syn 3.0.3",
4547
+ "syn 3.0.4",
4514
4548
  ]
4515
4549
 
4516
4550
  [[package]]
@@ -4580,7 +4614,7 @@ checksum = "78773a2a397f451582ce068015985c33193cf6dea8b74d2a639fe457b2f07b0e"
4580
4614
  dependencies = [
4581
4615
  "proc-macro2",
4582
4616
  "quote",
4583
- "syn 3.0.3",
4617
+ "syn 3.0.4",
4584
4618
  ]
4585
4619
 
4586
4620
  [[package]]
@@ -4974,7 +5008,7 @@ checksum = "f153acc4e99a5f2a5aefa09fb078be54e26271b2813f6041200b224c098d8328"
4974
5008
  dependencies = [
4975
5009
  "proc-macro2",
4976
5010
  "quote",
4977
- "syn 3.0.3",
5011
+ "syn 3.0.4",
4978
5012
  ]
4979
5013
 
4980
5014
  [[package]]
@@ -5007,12 +5041,6 @@ version = "1.13.3"
5007
5041
  source = "registry+https://github.com/rust-lang/crates.io-index"
5008
5042
  checksum = "c6f5d3c3b1bf09027a88a6bc961fc00497d651009560b5463668dc81b0fa87a8"
5009
5043
 
5010
- [[package]]
5011
- name = "unindent"
5012
- version = "0.2.4"
5013
- source = "registry+https://github.com/rust-lang/crates.io-index"
5014
- checksum = "7264e107f553ccae879d21fbea1d6724ac785e8c3bfc762137959b5802826ef3"
5015
-
5016
5044
  [[package]]
5017
5045
  name = "untrusted"
5018
5046
  version = "0.9.0"
@@ -5045,9 +5073,9 @@ checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be"
5045
5073
 
5046
5074
  [[package]]
5047
5075
  name = "uuid"
5048
- version = "1.24.1"
5076
+ version = "1.25.0"
5049
5077
  source = "registry+https://github.com/rust-lang/crates.io-index"
5050
- checksum = "2cefc03fd367c0c6d4305de1b312cf00248c4114f4a0418ce6a6af769e3b0bd9"
5078
+ checksum = "f053576934f05a761a402421fbbe3d425d9366f75f978806a037b3ca481abecc"
5051
5079
  dependencies = [
5052
5080
  "getrandom 0.4.3",
5053
5081
  "js-sys",
@@ -5560,7 +5588,7 @@ checksum = "34df6fc39dbd26ddc9c10e6a2984476e13acce22e64e4487636ef494369225da"
5560
5588
  dependencies = [
5561
5589
  "proc-macro2",
5562
5590
  "quote",
5563
- "syn 3.0.3",
5591
+ "syn 3.0.4",
5564
5592
  ]
5565
5593
 
5566
5594
  [[package]]