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