| 41 | } |
| 42 | |
| 43 | pub fn pair_timestamps_values( |
| 44 | timestamps: Vec<String>, |
| 45 | values: Vec<f64>, |
| 46 | left_name: &str, |
| 47 | right_name: &str, |
| 48 | ) -> PyResult<Vec<(chrono::NaiveDateTime, f64)>> { |
| 49 | let ts = parse_naive_datetimes(timestamps)?; |
| 50 | if ts.len() != values.len() { |
| 51 | return Err(PyValueError::new_err(format!( |
| 52 | "{left_name}/{right_name} length mismatch: {} vs {}", |
| 53 | ts.len(), |
| 54 | values.len() |
| 55 | ))); |
| 56 | } |
| 57 | Ok(ts.into_iter().zip(values).collect()) |
| 58 | } |
| 59 | |
| 60 | pub fn parse_vertical_barriers( |
| 61 | values: Option<Vec<(String, String)>>, |