in src/pyarrow_filter_expression.rs [55:82]
fn extract_scalar_list(exprs: &[Expr], py: Python) -> Result<Vec<PyObject>, DataFusionError> {
let ret: Result<Vec<PyObject>, DataFusionError> = exprs
.iter()
.map(|expr| match expr {
Expr::Literal(v) => match v {
ScalarValue::Boolean(Some(b)) => Ok(b.into_py(py)),
ScalarValue::Int8(Some(i)) => Ok(i.into_py(py)),
ScalarValue::Int16(Some(i)) => Ok(i.into_py(py)),
ScalarValue::Int32(Some(i)) => Ok(i.into_py(py)),
ScalarValue::Int64(Some(i)) => Ok(i.into_py(py)),
ScalarValue::UInt8(Some(i)) => Ok(i.into_py(py)),
ScalarValue::UInt16(Some(i)) => Ok(i.into_py(py)),
ScalarValue::UInt32(Some(i)) => Ok(i.into_py(py)),
ScalarValue::UInt64(Some(i)) => Ok(i.into_py(py)),
ScalarValue::Float32(Some(f)) => Ok(f.into_py(py)),
ScalarValue::Float64(Some(f)) => Ok(f.into_py(py)),
ScalarValue::Utf8(Some(s)) => Ok(s.into_py(py)),
_ => Err(DataFusionError::Common(format!(
"PyArrow can't handle ScalarValue: {v:?}"
))),
},
_ => Err(DataFusionError::Common(format!(
"Only a list of Literals are supported got {expr:?}"
))),
})
.collect();
ret
}