Spaces:
Runtime error
Runtime error
| # tools/calculator.py | |
| import ast, operator as op | |
| from smolagents import tool | |
| _ops = { | |
| ast.Add: op.add, ast.Sub: op.sub, ast.Mult: op.mul, | |
| ast.Div: op.truediv, ast.Pow: op.pow, ast.Mod: op.mod, | |
| ast.USub: op.neg | |
| } | |
| def _safe_eval(node): | |
| if isinstance(node, ast.Expression): | |
| return _safe_eval(node.body) | |
| if isinstance(node, ast.Constant): | |
| return node.value | |
| if isinstance(node, ast.BinOp): | |
| return _ops[type(node.op)](_safe_eval(node.left), _safe_eval(node.right)) | |
| if isinstance(node, ast.UnaryOp): | |
| return _ops[type(node.op)](_safe_eval(node.operand)) | |
| raise ValueError("Unsupported expression") | |
| def calculator(expression: str) -> str: | |
| """Evaluate a simple arithmetic expression safely. | |
| Args: | |
| expression: The math expression to evaluate. | |
| """ | |
| tree = ast.parse(expression, mode="eval") | |
| return str(_safe_eval(tree)) | |