diff --git a/inference/core/workflows/core_steps/common/query_language/entities/operations.py b/inference/core/workflows/core_steps/common/query_language/entities/operations.py index 078da5c0cc..64d5c92655 100644 --- a/inference/core/workflows/core_steps/common/query_language/entities/operations.py +++ b/inference/core/workflows/core_steps/common/query_language/entities/operations.py @@ -765,6 +765,21 @@ class NumberLowerEqual(BinaryOperator): type: Literal["(Number) <="] +class NumberInRange(BinaryOperator): + model_config = ConfigDict( + json_schema_extra={ + "description": "Checks if first value (number) is within the inclusive range given as second value (list of two numbers: [min, max])", + "operands_number": 2, + "operands_kinds": [ + [INTEGER_KIND, FLOAT_KIND, FLOAT_ZERO_TO_ONE_KIND], + [LIST_OF_VALUES_KIND], + ], + "output_kind": [BOOLEAN_KIND], + }, + ) + type: Literal["(Number) in range"] + + class StringStartsWith(BinaryOperator): model_config = ConfigDict( json_schema_extra={ @@ -994,6 +1009,7 @@ class BinaryStatement(BaseModel): StringContains, StringEndsWith, StringStartsWith, + NumberInRange, NumberLowerEqual, NumberLower, NumberGreaterEqual, diff --git a/inference/core/workflows/core_steps/common/query_language/evaluation_engine/core.py b/inference/core/workflows/core_steps/common/query_language/evaluation_engine/core.py index 6b615f3054..ad8d37cefb 100644 --- a/inference/core/workflows/core_steps/common/query_language/evaluation_engine/core.py +++ b/inference/core/workflows/core_steps/common/query_language/evaluation_engine/core.py @@ -34,6 +34,7 @@ "(Number) >=": lambda a, b: a >= b, "(Number) <": lambda a, b: a < b, "(Number) <=": lambda a, b: a <= b, + "(Number) in range": lambda a, b: b[0] <= a <= b[1], "(String) startsWith": lambda a, b: a.startswith(b), "(String) endsWith": lambda a, b: a.endswith(b), "(String) contains": lambda a, b: b in a, diff --git a/inference/core/workflows/core_steps/common/query_language/introspection/core.py b/inference/core/workflows/core_steps/common/query_language/introspection/core.py index c16009e8d8..71106d302b 100644 --- a/inference/core/workflows/core_steps/common/query_language/introspection/core.py +++ b/inference/core/workflows/core_steps/common/query_language/introspection/core.py @@ -16,6 +16,7 @@ NotEquals, NumberGreater, NumberGreaterEqual, + NumberInRange, NumberLower, NumberLowerEqual, OperationsChain, @@ -104,6 +105,7 @@ def prepare_operators_descriptions() -> List[OperatorDescription]: NumberLower, NumberGreaterEqual, NumberGreater, + NumberInRange, NotEquals, Equals, Exists,