def simple_condition_builder(lhs: Expression, op: str, literal: Any) -> Expression: if op in UNARY_OPERATORS: if literal is not None: raise ParsingException( f"Right hand side operand {literal} provided to unary operator {op}" ) return unary_condition(None, OPERATOR_TO_FUNCTION[op], lhs) else: if literal is None: raise ParsingException( f"Missing right hand side operand for binary operator {op}" ) return binary_condition(None, OPERATOR_TO_FUNCTION[op], lhs, preprocess_literal(op, literal))
def test_is_x_condition_functions() -> None: eq_condition = binary_condition( ConditionFunctions.EQ, Column(None, None, "test"), Literal(None, "1") ) assert is_any_binary_condition(eq_condition, ConditionFunctions.EQ) assert not is_any_binary_condition(eq_condition, ConditionFunctions.NEQ) un_condition = unary_condition( ConditionFunctions.IS_NOT_NULL, Column(None, None, "test") ) assert is_unary_condition(un_condition, ConditionFunctions.IS_NOT_NULL) assert not is_unary_condition(un_condition, ConditionFunctions.IS_NULL) assert not is_unary_condition(eq_condition, ConditionFunctions.IS_NOT_NULL) almost_condition = FunctionCall(None, "isNotNullish", (Column(None, None, "test"),)) assert is_condition(eq_condition) assert is_condition(un_condition) assert not is_condition(almost_condition)
def visit_unary_condition( self, node: Node, visited_children: Tuple[Expression, Any, str] ) -> Expression: exp, _, op = visited_children return unary_condition(op, exp)