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(
25 from_py_object,
26 frozen,
27 name = "Cast",
28 module = "datafusion.expr",
29 subclass
30)]
31#[derive(Clone)]
32pub struct PyCast {
33 cast: Cast,
34}
35
36impl From<PyCast> for Cast {
37 fn from(cast: PyCast) -> Self {
38 cast.cast
39 }
40}
41
42impl From<Cast> for PyCast {
43 fn from(cast: Cast) -> PyCast {
44 PyCast { cast }
45 }
46}
47
48#[pymethods]
49impl PyCast {
50 fn expr(&self) -> PyResult<PyExpr> {
51 Ok((*self.cast.expr).clone().into())
52 }
53
54 fn data_type(&self) -> PyResult<PyDataType> {
55 Ok(self.cast.data_type.clone().into())
56 }
57}
58
59#[pyclass(from_py_object, name = "TryCast", module = "datafusion.expr", subclass)]
60#[derive(Clone)]
61pub struct PyTryCast {
62 try_cast: TryCast,
63}
64
65impl From<PyTryCast> for TryCast {
66 fn from(try_cast: PyTryCast) -> Self {
67 try_cast.try_cast
68 }
69}
70
71impl From<TryCast> for PyTryCast {
72 fn from(try_cast: TryCast) -> PyTryCast {
73 PyTryCast { try_cast }
74 }
75}
76
77#[pymethods]
78impl PyTryCast {
79 fn expr(&self) -> PyResult<PyExpr> {
80 Ok((*self.try_cast.expr).clone().into())
81 }
82
83 fn data_type(&self) -> PyResult<PyDataType> {
84 Ok(self.try_cast.data_type.clone().into())
85 }
86}