Error raised when an expression cannot be parsed, fails validation, or throws
during evaluation — and when a helper rejects its input. Every failure
surfaced by SafeExpression (and the built-in helpers) is an instance
of this class.
It lives in its own module so that both SafeExpression and the
ExpressionHelperRegistry can throw it without forming an import cycle
(the registry is consulted by SafeExpression, so it must not import back
from it).
Error raised when an expression cannot be parsed, fails validation, or throws during evaluation — and when a helper rejects its input. Every failure surfaced by SafeExpression (and the built-in helpers) is an instance of this class.
It lives in its own module so that both SafeExpression and the
ExpressionHelperRegistrycan throw it without forming an import cycle (the registry is consulted bySafeExpression, so it must not import back from it).