datafusion_python/expr/
between.rs1use crate::expr::PyExpr;
19use datafusion::logical_expr::expr::Between;
20use pyo3::prelude::*;
21use std::fmt::{self, Display, Formatter};
22
23#[pyclass(name = "Between", module = "datafusion.expr", subclass)]
24#[derive(Clone)]
25pub struct PyBetween {
26 between: Between,
27}
28
29impl From<PyBetween> for Between {
30 fn from(between: PyBetween) -> Self {
31 between.between
32 }
33}
34
35impl From<Between> for PyBetween {
36 fn from(between: Between) -> PyBetween {
37 PyBetween { between }
38 }
39}
40
41impl Display for PyBetween {
42 fn fmt(&self, f: &mut Formatter) -> fmt::Result {
43 write!(
44 f,
45 "Between
46 Expr: {:?}
47 Negated: {:?}
48 Low: {:?}
49 High: {:?}",
50 &self.between.expr, &self.between.negated, &self.between.low, &self.between.high
51 )
52 }
53}
54
55#[pymethods]
56impl PyBetween {
57 fn expr(&self) -> PyResult<PyExpr> {
58 Ok((*self.between.expr).clone().into())
59 }
60
61 fn negated(&self) -> PyResult<bool> {
62 Ok(self.between.negated)
63 }
64
65 fn low(&self) -> PyResult<PyExpr> {
66 Ok((*self.between.low).clone().into())
67 }
68
69 fn high(&self) -> PyResult<PyExpr> {
70 Ok((*self.between.high).clone().into())
71 }
72
73 fn __repr__(&self) -> String {
74 format!("{}", self)
75 }
76}