polars_python/lazyframe/
optflags.rs1use polars::prelude::OptFlags;
2use pyo3::pymethods;
3
4use super::PyOptFlags;
5
6macro_rules! flag_getter_setters {
7 ($(($flag:ident, $getter:ident, $setter:ident))+) => {
8 #[pymethods]
9 impl PyOptFlags {
10 #[staticmethod]
11 pub fn empty() -> Self {
12 Self {
13 inner: OptFlags::empty()
14 }
15 }
16
17 pub fn no_optimizations(&mut self) {
18 self.inner.remove(OptFlags::PREDICATE_PUSHDOWN);
19 self.inner.remove(OptFlags::PROJECTION_PUSHDOWN);
20 self.inner.remove(OptFlags::COMM_SUBPLAN_ELIM);
21 self.inner.remove(OptFlags::COMM_SUBEXPR_ELIM);
22 self.inner.remove(OptFlags::CLUSTER_WITH_COLUMNS);
23 self.inner.remove(OptFlags::COLLAPSE_JOINS);
24 self.inner.remove(OptFlags::CHECK_ORDER_OBSERVE);
25 self.inner.remove(OptFlags::SIMPLIFY_EXPR);
26 self.inner.remove(OptFlags::SLICE_PUSHDOWN);
27 }
28
29 $(
30 #[getter]
31 fn $getter(&self) -> bool {
32 self.inner.contains(OptFlags::$flag)
33 }
34 #[setter]
35 fn $setter(&mut self, value: bool) {
36 self.inner.set(OptFlags::$flag, value)
37 }
38 )+
39 }
40 };
41}
42
43flag_getter_setters! {
44 (PROJECTION_PUSHDOWN, get_projection_pushdown, set_projection_pushdown)
45 (PREDICATE_PUSHDOWN, get_predicate_pushdown, set_predicate_pushdown)
46 (CLUSTER_WITH_COLUMNS, get_cluster_with_columns, set_cluster_with_columns)
47 (TYPE_COERCION, get_type_coercion, set_type_coercion)
48 (SIMPLIFY_EXPR, get_simplify_expression, set_simplify_expression)
49 (TYPE_CHECK, get_type_check, set_type_check)
50 (SLICE_PUSHDOWN, get_slice_pushdown, set_slice_pushdown)
51 (COMM_SUBPLAN_ELIM, get_comm_subplan_elim, set_comm_subplan_elim)
52 (COMM_SUBEXPR_ELIM, get_comm_subexpr_elim, set_comm_subexpr_elim)
53 (COLLAPSE_JOINS, get_collapse_joins, set_collapse_joins)
54 (CHECK_ORDER_OBSERVE, get_check_order_observe, set_check_order_observe)
55}