| 231 | /// Conditional select: `where(cond, true_val, false_val)`. |
| 232 | #[pyo3(name = "where_")] |
| 233 | fn where_expr( |
| 234 | &self, |
| 235 | cond: PyExpr, |
| 236 | true_val: &Bound<'_, PyAny>, |
| 237 | false_val: &Bound<'_, PyAny>, |
| 238 | ) -> PyResult<PyExpr> { |
| 239 | let t = coerce_to_coerced(true_val)?; |
| 240 | let f = coerce_to_coerced(false_val)?; |
| 241 | let mut merged = cond.temp_args.clone(); |
| 242 | merged.extend(t.temp_args.iter().map(|(k, v)| (*k, v.clone()))); |
| 243 | merged.extend(f.temp_args.iter().map(|(k, v)| (*k, v.clone()))); |
| 244 | Ok(PyExpr::from_parts( |
| 245 | Expr::Select(Box::new(cond.inner), Box::new(t.inner), Box::new(f.inner)), |
| 246 | merged, |
| 247 | )) |
| 248 | } |
| 249 | |
| 250 | // --- Reduce --- |
| 251 | |