def test_compile__compile_restricted_eval__1():
    """It compiles code as an Expression.

    Function definitions are not allowed in Expressions.
    """
    result = compile_restricted_eval(FUNCTION_DEF)
    assert result.errors == (
        "Line 1: SyntaxError: invalid syntax at statement: 'def a():'", )
Example #2
0
 def __init__(self, name, expr, engine):
     self.expr = expr = expr.strip().replace('\n', ' ')
     code, err, warn, use = compile_restricted_eval(expr, str(self))
     if err:
         raise CompilerError, ('Python expression error:\n%s' %
                               '\n'.join(err) )
     self._f_varnames = use.keys()
     self._code = code
Example #3
0
    def __init__(self, name, expr, engine):
        self.text = self.expr = text = expr.strip().replace('\n', ' ')
        code, err, warn, use = compile_restricted_eval(text,
                                                       self.__class__.__name__)

        if err:
            raise engine.getCompilerError()('Python expression error:\n%s' %
                                            '\n'.join(err))

        self._varnames = list(use.keys())
        self._code = code
Example #4
0
    def __init__(self, name, expr, engine):
        self.text = self.expr = text = expr.strip().replace('\n', ' ')
        code, err, warn, use = compile_restricted_eval(
            text, self.__class__.__name__)

        if err:
            raise engine.getCompilerError()(
                'Python expression error:\n%s' % '\n'.join(err))

        self._varnames = list(use.keys())
        self._code = code
Example #5
0
    def __init__(self, name, expr, engine):
        self.text = self.expr = text = expr.strip().replace('\n', ' ')

        # Unicode expression are not handled properly by RestrictedPython
        # We convert the expression to UTF-8 (ajung)
        if isinstance(text, unicode):
            text = text.encode('utf-8')
        code, err, warn, use = compile_restricted_eval(text, 
                                                       self.__class__.__name__)
        if err:
            raise engine.getCompilerError()('Python expression error:\n%s' %
                                            '\n'.join(err))            
        self._varnames = use.keys()
        self._code = code
    def __init__(self, name, expr, engine):
        self.text = self.expr = text = expr.strip().replace('\n', ' ')

        # Unicode expression are not handled properly by RestrictedPython
        # We convert the expression to UTF-8 (ajung)
        if isinstance(text, unicode):
            text = text.encode('utf-8')
        code, err, warn, use = compile_restricted_eval(text, 
                                                       self.__class__.__name__)
        if err:
            raise engine.getCompilerError()('Python expression error:\n%s' %
                                            '\n'.join(err))            
        self._varnames = use.keys()
        self._code = code
Example #7
0
 def prepRestrictedCode(self):
     if self.rcode is None:
         if PROFILE:
             from time import clock
             start = clock()
         co, err, warn, used = compile_restricted_eval(
             self.expr, '<string>')
         if PROFILE:
             end = clock()
             print 'prepRestrictedCode: %d ms for %s' % (
                 (end - start) * 1000, `self.expr`)
         if err:
             raise SyntaxError, err[0]
         self.used = tuple(used.keys())
         self.rcode = co
 def prepRestrictedCode(self):
     if self.rcode is None:
         if PROFILE:
             from time import clock
             start = clock()
         co, err, warn, used = compile_restricted_eval(
             self.expr, '<string>')
         if PROFILE:
             end = clock()
             print 'prepRestrictedCode: %d ms for %s' % (
                 (end - start) * 1000, `self.expr`)
         if err:
             raise SyntaxError, err[0]
         self.used = tuple(used.keys())
         self.rcode = co
Example #9
0
    def prepRestrictedCode(self):
        if self.rcode is None:
            global compile_restricted_eval
            if compile_restricted_eval is None:
                # Late binding because this will import the whole
                # compiler suite.
                from RestrictedPython import compile_restricted_eval

            if PROFILE:
                from time import clock
                start = clock()
            co, err, warn, used = compile_restricted_eval(
                self.expr, '<string>')
            if PROFILE:
                end = clock()
                print 'prepRestrictedCode: %d ms for %s' % (
                    (end - start) * 1000, `self.expr`)
            if err:
                raise SyntaxError, err[0]
            self.used = tuple(used.keys())
            self.rcode = co
Example #10
0
def test_compile__compile_restricted_eval__used_names():
    result = compile_restricted_eval("a + b + func(x)")
    assert result.errors == ()
    assert result.warnings == []
    assert result.used_names == {'a': True, 'b': True, 'x': True, 'func': True}
Example #11
0
def test_MatMult():
    result = compile_restricted_eval('(8, 3, 5) @ (2, 7, 1)')
    assert result.errors == (
        'Line None: MatMult statements are not allowed.', )
    assert result.code is None
def test_MatMult():
    result = compile_restricted_eval('(8, 3, 5) @ (2, 7, 1)')
    assert result.errors == (
        'Line None: MatMult statements are not allowed.',
    )
    assert result.code is None