[package]
name = "millwright"
version = "0.2.1"
edition = "2021"
rust-version = "1.95"
description = "A unified ML framework for Rust — proven Rust crates, assembled into one machine."
license = "MIT"
homepage = "https://millwright-rs.dev/"
repository = "https://github.com/mi7plus/millwright"
readme = "README.md"
keywords = ["machine-learning", "ml", "pipeline", "sklearn", "smartcore"]
categories = ["science", "algorithms"]
[package.metadata.docs.rs]
features = ["full"]
[lib]
crate-type = ["cdylib", "rlib"]
[dependencies]
smartcore = { version = "=0.6.10", optional = true }
imbalance-rs = { version = "=0.5.0", optional = true }
model-selection-rs = { version = "=0.1.0", optional = true, features = ["smartcore-metrics"] }
linfa = { version = "=0.8.1", optional = true }
linfa-clustering = { version = "=0.8.1", optional = true }
linfa-reduction = { version = "=0.8.1", optional = true }
linfa-nn = { version = "=0.8.1", optional = true }
hyperopt-rs = { version = "=0.1.1", optional = true }
regression-diagnostics = { version = "=0.2.0", optional = true }
shap-rs = { version = "=0.1.0", optional = true }
plotters-statistical = { version = "=0.2.0", optional = true }
onnx-export-rs = { version = "=0.1.1", optional = true, features = ["smartcore-compat"] }
driftwatch = { version = "=0.1.0", optional = true }
chronos-ts = { version = "=0.1.0", optional = true }
incremental-rs = { version = "=0.1.2", optional = true }
polars = { version = "=0.55.2", default-features = false, features = ["csv", "parquet", "dtype-categorical", "dtype-datetime", "temporal", "is_in"], optional = true }
pyo3 = { version = "0.24", features = ["extension-module", "abi3-py39"], optional = true }
ndarray = { version = "0.16", optional = true }
rayon = { version = "1", optional = true }
prost = { version = "0.13", optional = true }
plotters = { version = "0.3.7", default-features = false, features = ["svg_backend", "all_series"], optional = true }
tract-onnx = { version = "0.23", optional = true }
axum = { version = "0.8", optional = true }
tokio = { version = "1", features = ["rt-multi-thread", "macros", "net"], optional = true }
serde = { version = "1", features = ["derive"], optional = true }
serde_json = { version = "1", optional = true }
ndarray015 = { package = "ndarray", version = "0.15", optional = true }
[dev-dependencies]
tokio = { version = "1", features = ["rt-multi-thread", "macros"] }
tower = { version = "0.5", features = ["util"] }
http-body-util = "0.1"
criterion = "0.5"
[[bench]]
name = "throughput"
harness = false
required-features = ["smartcore-backend"]
[features]
default = ["smartcore-backend", "preprocessing", "model-selection", "ensemble"]
smartcore-backend = ["dep:smartcore"]
preprocessing = ["dep:imbalance-rs", "dep:ndarray"]
model-selection = ["dep:model-selection-rs", "dep:ndarray", "dep:rayon"]
ensemble = ["dep:rayon"]
eda = ["dep:polars"]
linfa-backend = [
"dep:linfa",
"dep:linfa-clustering",
"dep:linfa-reduction",
"dep:linfa-nn",
"dep:ndarray",
]
hpo = ["dep:hyperopt-rs", "model-selection"]
diagnostics = ["dep:regression-diagnostics", "dep:ndarray"]
explain = ["dep:shap-rs"]
calibration = []
anomaly = []
viz = ["dep:plotters-statistical", "dep:plotters"]
onnx = [
"dep:onnx-export-rs",
"onnx-export-rs/smartcore-compat",
"dep:tract-onnx",
"dep:ndarray",
"dep:prost",
"smartcore-backend",
"smartcore/serde",
]
python = ["dep:pyo3", "smartcore-backend", "model-selection", "explain", "onnx", "eda"]
registry = ["dep:serde", "dep:serde_json", "onnx"]
monitor = ["dep:driftwatch"]
serve = ["dep:axum", "dep:tokio", "dep:serde", "dep:serde_json", "onnx"]
full = [
"smartcore-backend",
"preprocessing",
"model-selection",
"ensemble",
"eda",
"linfa-backend",
"hpo",
"diagnostics",
"explain",
"calibration",
"anomaly",
"viz",
"onnx",
"registry",
"monitor",
"serve",
"timeseries",
"incremental",
"automl",
]
timeseries = ["dep:chronos-ts", "dep:ndarray015"]
incremental = ["dep:incremental-rs", "dep:ndarray015"]
automl = ["model-selection", "ensemble", "smartcore-backend"]
[[example]]
name = "spine"
required-features = ["smartcore-backend"]
[[example]]
name = "explore"
required-features = ["eda", "smartcore-backend"]
[[example]]
name = "trust"
required-features = ["calibration", "anomaly"]
[[example]]
name = "workflow"
required-features = ["smartcore-backend", "preprocessing", "model-selection", "ensemble"]
[[example]]
name = "backends"
required-features = ["smartcore-backend", "linfa-backend", "hpo"]
[[example]]
name = "insight"
required-features = ["smartcore-backend", "diagnostics", "explain", "viz"]
[[example]]
name = "portability"
required-features = ["smartcore-backend", "onnx"]
[[example]]
name = "operations"
required-features = ["smartcore-backend", "onnx", "registry", "monitor", "serve"]
[[example]]
name = "specialized"
required-features = ["timeseries", "incremental"]
[[example]]
name = "automl"
required-features = ["smartcore-backend", "automl", "onnx"]