Path: blob/main/crates/polars-plan/src/dsl/function_expr/boolean.rs
6940 views
#[cfg(feature = "is_close")]1use polars_utils::total_ord::TotalOrdWrap;23use super::*;45#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]6#[cfg_attr(feature = "dsl-schema", derive(schemars::JsonSchema))]7#[derive(Clone, PartialEq, Debug, Eq, Hash)]8pub enum BooleanFunction {9Any {10ignore_nulls: bool,11},12All {13ignore_nulls: bool,14},15IsNull,16IsNotNull,17IsFinite,18IsInfinite,19IsNan,20IsNotNan,21#[cfg(feature = "is_first_distinct")]22IsFirstDistinct,23#[cfg(feature = "is_last_distinct")]24IsLastDistinct,25#[cfg(feature = "is_unique")]26IsUnique,27#[cfg(feature = "is_unique")]28IsDuplicated,29#[cfg(feature = "is_between")]30IsBetween {31closed: ClosedInterval,32},33#[cfg(feature = "is_in")]34IsIn {35nulls_equal: bool,36},37#[cfg(feature = "is_close")]38IsClose {39abs_tol: TotalOrdWrap<f64>,40rel_tol: TotalOrdWrap<f64>,41nans_equal: bool,42},43AllHorizontal,44AnyHorizontal,45// Also bitwise negate46Not,47}4849impl Display for BooleanFunction {50fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {51use BooleanFunction::*;52let s = match self {53All { .. } => "all",54Any { .. } => "any",55IsNull => "is_null",56IsNotNull => "is_not_null",57IsFinite => "is_finite",58IsInfinite => "is_infinite",59IsNan => "is_nan",60IsNotNan => "is_not_nan",61#[cfg(feature = "is_first_distinct")]62IsFirstDistinct => "is_first_distinct",63#[cfg(feature = "is_last_distinct")]64IsLastDistinct => "is_last_distinct",65#[cfg(feature = "is_unique")]66IsUnique => "is_unique",67#[cfg(feature = "is_unique")]68IsDuplicated => "is_duplicated",69#[cfg(feature = "is_between")]70IsBetween { .. } => "is_between",71#[cfg(feature = "is_in")]72IsIn { .. } => "is_in",73#[cfg(feature = "is_close")]74IsClose { .. } => "is_close",75AnyHorizontal => "any_horizontal",76AllHorizontal => "all_horizontal",77Not => "not",78};79write!(f, "{s}")80}81}8283impl From<BooleanFunction> for FunctionExpr {84fn from(value: BooleanFunction) -> Self {85Self::Boolean(value)86}87}888990