diff --git a/src/vowel/evals.py b/src/vowel/evals.py index 4d7cab4..860c198 100644 --- a/src/vowel/evals.py +++ b/src/vowel/evals.py @@ -35,6 +35,7 @@ "list": list, "max": max, "min": min, + "pow": pow, "range": range, "round": round, "set": set, @@ -68,8 +69,7 @@ def _eval_assertion_restricted(condition: str, inputs: dict[str, typing.Any]) -> bool: - env = {"__builtins__": SAFE_ASSERTION_BUILTINS} - env.update(inputs) + env = {**inputs, "__builtins__": SAFE_ASSERTION_BUILTINS} return bool(eval(condition, env, env)) @@ -271,7 +271,8 @@ def eval_python(self, condition: str, inputs: dict) -> EvaluationReason: error=str(exc), ) with suppress(Exception): - if eval(self.condition, inputs, inputs): + fallback_env = {**inputs, "__builtins__": SAFE_ASSERTION_BUILTINS} + if eval(self.condition, fallback_env, fallback_env): return EvaluationReason( value=True, reason=f"Assertion passed for condition: {condition}" )