File: comparisons.py

package info (click to toggle)
python-moto 5.1.18-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 116,520 kB
  • sloc: python: 636,725; javascript: 181; makefile: 39; sh: 3
file content (24 lines) | stat: -rw-r--r-- 1,192 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
from typing import Any, Callable

# TODO add tests for all of these
COMPARISON_FUNCS = {
    "EQ": lambda item_value, test_value: item_value == test_value,
    "NE": lambda item_value, test_value: item_value != test_value,
    "LE": lambda item_value, test_value: item_value <= test_value,
    "LT": lambda item_value, test_value: item_value < test_value,
    "GE": lambda item_value, test_value: item_value >= test_value,
    "GT": lambda item_value, test_value: item_value > test_value,
    "NULL": lambda item_value: item_value is None,
    "NOT_NULL": lambda item_value: item_value is not None,
    "CONTAINS": lambda item_value, test_value: test_value in item_value,
    "NOT_CONTAINS": lambda item_value, test_value: test_value not in item_value,
    "BEGINS_WITH": lambda item_value, test_value: item_value.startswith(test_value),
    "IN": lambda item_value, *test_values: item_value in test_values,
    "BETWEEN": lambda item_value, lower_test_value, upper_test_value: lower_test_value
    <= item_value
    <= upper_test_value,
}


def get_comparison_func(range_comparison: str) -> Callable[..., Any]:
    return COMPARISON_FUNCS.get(range_comparison)  # type: ignore[return-value]