If safe is a list, a restricted evaluation will be executed. Otherwise if safe is None, a unrestriced eval will be executed.
Parameters: |
|
---|
>>> compile_expr('<1+1>_<abs(2-3)>', safe=False)
u'2_1'
>>> compile_expr('<###(index+1)>', _locals={'index':1},
... preprocess=format_expr, safe=False)
u'002'
Evaluate an expression while allowing a restricted set of names.
Parameter: | allowed (list of string) – allowed names |
---|---|
Returns: | result |
>>> eval_restricted('max(a, a+b)', _globals={'a':0, 'b':2},
... _locals={'a':1}, allowed=['max'])
3
>>> try:
... eval_restricted('a+b+c', _globals={'a':0, 'b':2}, _locals={'a':1})
... except UnsafeError, error:
... print(error)
The following name(s) are invalid: c
Safely evaluate an expression. It will raise a ValueError if non validated names are used.
Parameter: | expr (string) – expression |
---|---|
Returns: | result |
>>> eval_safe('1+1')
2
>>> try:
... eval_safe('"lowercase".upper()')
... except UnsafeError, error:
... print(error)
The following name(s) are invalid: upper
Extend vars with new unique variables from s.
Parameters: |
|
---|
>>> vars = ['a1']
>>> extend_vars(vars, '<a1>_<foo>_<world>_<###index>')
>>> vars
['a1', 'foo', 'world', 'index']
Returns an expression with #### in a pure python expression which can be evaluated.
Parameter: | s (expression) – expression |
---|
>>> f = format_expr('###(5+1)')
>>> f
'"%03d"%(5+1)'
>>> eval(f)
'006'