diff --git a/crates/coffee/Cargo.toml b/crates/coffee/Cargo.toml index 8a551f0..d72e53c 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"] } +ndarray = { version = "0.17", 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