diff --git a/solara/toestand.py b/solara/toestand.py index 51aae1639..a9c3ecec4 100644 --- a/solara/toestand.py +++ b/solara/toestand.py @@ -92,6 +92,28 @@ def __init__(self, merge: Callable = merge_state): self.listeners: Dict[str, Set[Tuple[Callable[[T], None], Optional[ContextManager]]]] = defaultdict(set) self.listeners2: Dict[str, Set[Tuple[Callable[[T, T], None], Optional[ContextManager]]]] = defaultdict(set) + # make sure all boolean operations give type errors + def __bool__(self): + raise TypeError("Reactive vars are not allowed in boolean expressions, did you want to use .value?") + + def __eq__(self, other): + raise TypeError("Reactive vars are not allowed in boolean expressions, did you want to use .value?") + + def __ne__(self, other): + raise TypeError("Reactive vars are not allowed in boolean expressions, did you want to use .value?") + + def __lt__(self, other): + raise TypeError("Reactive vars are not allowed in boolean expressions, did you want to use .value?") + + def __le__(self, other): + raise TypeError("Reactive vars are not allowed in boolean expressions, did you want to use .value?") + + def __gt__(self, other): + raise TypeError("Reactive vars are not allowed in boolean expressions, did you want to use .value?") + + def __ge__(self, other): + raise TypeError("Reactive vars are not allowed in boolean expressions, did you want to use .value?") + @property def lock(self): raise NotImplementedError