Skip to content

Commit

Permalink
move parsed cache to outside of class
Browse files Browse the repository at this point in the history
  • Loading branch information
Rfank2021 committed Apr 6, 2021
1 parent dfbdc6b commit ea98d06
Showing 1 changed file with 3 additions and 4 deletions.
7 changes: 3 additions & 4 deletions simpleeval.py
Expand Up @@ -261,6 +261,7 @@ def safe_add(a, b): # pylint: disable=invalid-name

ATTR_INDEX_FALLBACK = True

PARSED_EXPRESSION_CACHE = {}

########################################
# And the actual evaluator:
Expand Down Expand Up @@ -291,8 +292,6 @@ def __init__(self, operators=None, functions=None, names=None, enable_cache=Fals
self.names = names

self.enable_cache = enable_cache
if enable_cache:
self.parsed_expression_cache = {}

self.nodes = {
ast.Expr: self._eval_expr,
Expand Down Expand Up @@ -352,11 +351,11 @@ def eval(self, expr):
return self._eval(ast.parse(expr.strip()).body[0])

stripped_expr = expr.strip()
parsed_expr = self.parsed_expression_cache.get(stripped_expr)
parsed_expr = PARSED_EXPRESSION_CACHE.get(stripped_expr)
if parsed_expr:
return self._eval(parsed_expr)
parsed_expr = ast.parse(stripped_expr).body[0]
self.parsed_expression_cache[stripped_expr] = parsed_expr
PARSED_EXPRESSION_CACHE[stripped_expr] = parsed_expr
return self._eval(parsed_expr)

def _eval(self, node):
Expand Down

0 comments on commit ea98d06

Please sign in to comment.