datafusion_python/expr/
cast.rs1use datafusion::logical_expr::{Cast, TryCast};
19use pyo3::prelude::*;
20
21use crate::common::data_type::PyDataType;
22use crate::expr::PyExpr;
23
24#[pyclass(frozen, name = "Cast", module = "datafusion.expr", subclass)]
25#[derive(Clone)]
26pub struct PyCast {
27 cast: Cast,
28}
29
30impl From<PyCast> for Cast {
31 fn from(cast: PyCast) -> Self {
32 cast.cast
33 }
34}
35
36impl From<Cast> for PyCast {
37 fn from(cast: Cast) -> PyCast {
38 PyCast { cast }
39 }
40}
41
42#[pymethods]
43impl PyCast {
44 fn expr(&self) -> PyResult<PyExpr> {
45 Ok((*self.cast.expr).clone().into())
46 }
47
48 fn data_type(&self) -> PyResult<PyDataType> {
49 Ok(self.cast.data_type.clone().into())
50 }
51}
52
53#[pyclass(name = "TryCast", module = "datafusion.expr", subclass)]
54#[derive(Clone)]
55pub struct PyTryCast {
56 try_cast: TryCast,
57}
58
59impl From<PyTryCast> for TryCast {
60 fn from(try_cast: PyTryCast) -> Self {
61 try_cast.try_cast
62 }
63}
64
65impl From<TryCast> for PyTryCast {
66 fn from(try_cast: TryCast) -> PyTryCast {
67 PyTryCast { try_cast }
68 }
69}
70
71#[pymethods]
72impl PyTryCast {
73 fn expr(&self) -> PyResult<PyExpr> {
74 Ok((*self.try_cast.expr).clone().into())
75 }
76
77 fn data_type(&self) -> PyResult<PyDataType> {
78 Ok(self.try_cast.data_type.clone().into())
79 }
80}