'Evaluate a python expression and return the result.
Raises:
SyntaxError: If the given expression_str is not a valid python
statement.
ExpressionEvaluator.Error: If the instance of ExpressionEvaluator
does not have a handler for the ast.Node.'

def __call__(self, expression_str, timeout=5.0):

    ast_expression = ast.parse(expression_str, mode=u'eval')
    return self._eval_node(ast_expression.body, (time.time() + timeout))
