Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
import six
from six.moves import range
def safe_pow_fn(a, b):
raise InvalidExpression
def safe_range(start, *args):
ret = list(range(start, *args))
if len(ret) < 100:
return ret
return None
SAFE_OPERATORS = copy.copy(DEFAULT_OPERATORS)
SAFE_OPERATORS[ast.Pow] = safe_pow_fn # don't allow power operations
FUNCTIONS = DEFAULT_FUNCTIONS
FUNCTIONS.update({
'timedelta_to_seconds': lambda x: x.total_seconds() if isinstance(x, timedelta) else None,
'range': safe_range
})
def eval_statements(statement, variable_context):
"""Evaluates math statements and returns the value
args
statement: a simple python-like math statement
variable_context: a dict with variable names as key and assigned values as dict values
"""