Esempio n. 1
0
    def check(self, expression):
        if not isinstance(expression, str):
            raise InvalidExpression(
                "Python expressions must be defined as strings")
        if not expression:
            raise InvalidExpression("Empty python expression")

        try:
            tree = ast.parse(expression)
        except SyntaxError as e:
            raise e

        if not tree.body:
            raise InvalidExpression("Empty python expression")
        elif len(tree.body) > 1:
            raise InvalidExpression(
                "Python expressions must be a single line expression")

        start_node = tree.body[0]
        if not isinstance(start_node, ast.Expr):
            raise InvalidExpression(
                "Python string must be an expression: '%s' found" %
                start_node.__class__.__name__)

        self._check_node(start_node)
Esempio n. 2
0
 def _raise_not_allowed_node(self, node):
     raise InvalidExpression(
         "'%s' definition not allowed in python expressions" %
         node.__class__.__name__)