8000 Simpify `PyExpr::python_value` by using `ScalarValue::into_py` · Issue #729 · apache/datafusion-python · GitHub
[go: up one dir, main page]

Skip to content
Simpify PyExpr::python_value by using ScalarValue::into_py #729
Closed
@Michael-J-Ward

Description

@Michael-J-Ward

Is your feature request related to a problem or challenge? Please describe what you are trying to do.
Currently, we de-structure every ScalarValue variant

pub fn python_value(&self, py: Python) -> PyResult<PyObject> {
match &self.expr {
Expr::Literal(scalar_value) => match scalar_value {
ScalarValue::Null => Err(py_datafusion_err(
datafusion_common::DataFusionError::NotImplemented(
"ScalarValue::Null".to_string(),
),
)),
ScalarValue::Boolean(v) => Ok(v.into_py(py)),
ScalarValue::Float32(v) => Ok(v.into_py(py)),
ScalarValue::Float64(v) => Ok(v.into_py(py)),
ScalarValue::Decimal128(v, _, _) => Ok(v.into_py(py)),

But ScalarValue already implements IntoPy:
https://github.com/apache/datafusion/blob/b7d2aea1dd4bb4a3abe3163dae936d7bfa5b32c9/datafusion/common/src/pyarrow.rs#L72-L76

If we want to avoid that unwrap, we could use the ToPyArrow trait:
https://github.com/apache/datafusion/blob/b7d2aea1dd4bb4a3abe3163dae936d7bfa5b32c9/datafusion/common/src/pyarrow.rs#L55-L64

Additional context
Are there other constraints the ScalarValue variants that datafusion-python can support other than what datafusion can convert?

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

      0