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