diff --git a/pymbolic/primitives.py b/pymbolic/primitives.py index 9f108598da4612d7c05e3293b064379795b08dde..461573114905ce59fbd2364c438e332ffe8356d1 100644 --- a/pymbolic/primitives.py +++ b/pymbolic/primitives.py @@ -185,6 +185,12 @@ class Expression(object): def get_hash(self): raise NotImplementedError("get_hash() in "+str(type(self))) + # comparison interface ---------------------------------------------------- + def __le__(self, other): raise TypeError("expressions don't have an order") + def __lt__(self, other): raise TypeError("expressions don't have an order") + def __ge__(self, other): raise TypeError("expressions don't have an order") + def __gt__(self, other): raise TypeError("expressions don't have an order") + diff --git a/test/test_pymbolic.py b/test/test_pymbolic.py index 7b8e97a3872c0e0b190ba252c990ee742ac15b1a..715d4a72ced556db7512cb5dd3824ac1bb10349e 100644 --- a/test/test_pymbolic.py +++ b/test/test_pymbolic.py @@ -107,3 +107,24 @@ def test_sparse_multiply(): mat_vec_2 = csr_matrix_multiply(s_mat, vec) assert la.norm(mat_vec-mat_vec_2) < 1e-14 + + + +def test_no_comparison(): + from pymbolic import parse + + x = parse("17+3*x") + y = parse("12-5*y") + + def expect_typeerror(f): + try: + f() + except TypeError: + pass + else: + assert False + + expect_typeerror(lambda: x < y) + expect_typeerror(lambda: x <= y) + expect_typeerror(lambda: x > y) + expect_typeerror(lambda: x >= y)