Skip to content

Commit

Permalink
more work to make exception messages more Python like
Browse files Browse the repository at this point in the history
  • Loading branch information
newville committed Aug 2, 2024
1 parent d837fb9 commit 22f6f48
Showing 1 changed file with 7 additions and 6 deletions.
13 changes: 7 additions & 6 deletions asteval/asteval.py
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,6 @@
MINIMAL_CONFIG[_tnode] = False
DEFAULT_CONFIG[_tnode] = True


class Interpreter:
"""create an asteval Interpreter: a restricted, simplified interpreter
of mathematical expressions using Python syntax.
Expand Down Expand Up @@ -223,6 +222,8 @@ def raise_exception(self, node, exc=None, msg='', expr=None,
"""Add an exception."""
if self.error is None:
self.error = []
if len(self.error) > 1:
return
if expr is None:
expr = self.expr
if len(self.error) > 0 and not isinstance(node, ast.Module):
Expand All @@ -231,9 +232,9 @@ def raise_exception(self, node, exc=None, msg='', expr=None,
self._interrupt = ast.Raise()
self.error.append(err)
if self.error_msg is None:
self.error_msg = (' '.join([msg, f"at expr='{self.expr}'"])).strip()
elif len(msg) > 0:
self.error_msg = msg
elif len(msg) > 0:
self.error_msg = f"{exc:s}: {msg}"
if exc is None:
try:
exc = self.error[0].exc
Expand Down Expand Up @@ -289,14 +290,14 @@ def run(self, node, expr=None, lineno=None, with_raise=True):

# run the handler: this will likely generate
# recursive calls into this run method.

try:
ret = handler(node)
if isinstance(ret, enumerate):
ret = list(ret)
return ret
except:
if with_raise:
# Unhandled exception that didn't use raise_exception
self.raise_exception(node, expr=expr)
raise
return None
Expand All @@ -316,7 +317,7 @@ def eval(self, expr, lineno=0, show_errors=True, raise_errors=False):
except Exception:
errmsg = exc_info()[1]
if len(self.error) > 0:
errmsg = "\n".join(self.error[0].get_error())
errmsg = self.error[0].get_error()[1]
if raise_errors:
try:
exc = self.error[0].exc
Expand All @@ -333,7 +334,7 @@ def eval(self, expr, lineno=0, show_errors=True, raise_errors=False):
except:
errmsg = exc_info()[1]
if len(self.error) > 0:
errmsg = "\n".join(self.error[0].get_error())
errmsg = self.error[0].get_error()[1]
if raise_errors:
try:
exc = self.error[0].exc
Expand Down

0 comments on commit 22f6f48

Please sign in to comment.