From 31b5392f90922ce995ecddf9fc35cfef71c3b58a Mon Sep 17 00:00:00 2001 From: Constantine Evans Date: Mon, 20 Apr 2026 16:13:39 +0100 Subject: [PATCH 1/2] Make CSV parsing and polars optional (but default) If someone is using Optimizer directly, then polars is a giant dependency that isn't needed. This makes the file parsing optional (but enabled by default), which in turn makes polars optional. --- crates/coffee/Cargo.toml | 6 +++++- crates/coffee/src/lib.rs | 15 +++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/crates/coffee/Cargo.toml b/crates/coffee/Cargo.toml index 8a551f0..d8cfe68 100644 --- a/crates/coffee/Cargo.toml +++ b/crates/coffee/Cargo.toml @@ -3,10 +3,14 @@ name = "coffee" version = "0.1.0" edition = "2021" +[features] +default = ["file-input"] +file-input = ["dep:polars"] + [dependencies] ndarray = { version = "0.16.1", features = ["rayon"] } csv = "1.1.6" -polars = { version = "0.23.2", features = ["csv-file"] } +polars = { version = "0.23.2", features = ["csv-file"], optional = true } nalgebra = "0.33.2" chrono = "0.4" approx = "0.5.1" diff --git a/crates/coffee/src/lib.rs b/crates/coffee/src/lib.rs index 5d6f661..b0511fa 100644 --- a/crates/coffee/src/lib.rs +++ b/crates/coffee/src/lib.rs @@ -1,24 +1,37 @@ pub mod extras; +#[cfg(feature = "file-input")] pub mod fileparse; pub mod format; pub mod optimize; pub mod steihaug; +#[cfg(feature = "file-input")] use std::fs::File; +#[cfg(feature = "file-input")] use std::io::Read; +#[cfg(feature = "file-input")] use extras::{OptimizerArgs, OptimizerResults}; +#[cfg(feature = "file-input")] use fileparse::{parse_float, read_inputs_to_dataframe}; +#[cfg(feature = "file-input")] use format::results_message; +#[cfg(feature = "file-input")] use ndarray::{Array1, Array2}; +#[cfg(feature = "file-input")] use optimize::Optimizer; +#[cfg(feature = "file-input")] use core::result::Result; +#[cfg(feature = "file-input")] use std::error::Error; +#[cfg(feature = "file-input")] use std::io::Write; +#[cfg(feature = "file-input")] use polars::prelude::DataType; +#[cfg(feature = "file-input")] fn run_coffee_computation( cfe_bytes: &[u8], con_bytes: &[u8], @@ -78,6 +91,7 @@ fn run_coffee_computation( Ok(optimizer.get_results()) } +#[cfg(feature = "file-input")] pub fn run_coffee_server(cfe_bytes: &[u8], con_bytes: &[u8]) -> Result> { let args = OptimizerArgs { use_terminal: true, // print to logs for websocket version @@ -95,6 +109,7 @@ pub fn run_coffee_server(cfe_bytes: &[u8], con_bytes: &[u8]) -> Result Date: Mon, 20 Apr 2026 16:32:01 +0100 Subject: [PATCH 2/2] Bump ndarray to 0.17 Co-Authored-By: Claude Opus 4.7 (1M context) --- crates/coffee/Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/coffee/Cargo.toml b/crates/coffee/Cargo.toml index d8cfe68..d72e53c 100644 --- a/crates/coffee/Cargo.toml +++ b/crates/coffee/Cargo.toml @@ -8,7 +8,7 @@ default = ["file-input"] file-input = ["dep:polars"] [dependencies] -ndarray = { version = "0.16.1", features = ["rayon"] } +ndarray = { version = "0.17", features = ["rayon"] } csv = "1.1.6" polars = { version = "0.23.2", features = ["csv-file"], optional = true } nalgebra = "0.33.2"