From 84c2be9f5860de6d13fa4c04b155cb4bc7df7a91 Mon Sep 17 00:00:00 2001 From: Dave Halter Date: Thu, 26 Dec 2013 02:31:18 +0100 Subject: [PATCH] remove old way of using a separate decorator for search param memoization, use the default one --- jedi/api_classes.py | 2 -- jedi/evaluate/dynamic.py | 23 +++-------------------- 2 files changed, 3 insertions(+), 22 deletions(-) diff --git a/jedi/api_classes.py b/jedi/api_classes.py index facf40db..c87225d9 100644 --- a/jedi/api_classes.py +++ b/jedi/api_classes.py @@ -14,7 +14,6 @@ from jedi import cache from jedi.evaluate import representation as er from jedi.evaluate import imports from jedi import keywords -from jedi.evaluate import dynamic def clear_caches(): @@ -23,7 +22,6 @@ def clear_caches(): be deleted is the module cache. """ cache.clear_caches() - dynamic.search_param_cache.clear() def _clear_caches_after_call(func): diff --git a/jedi/evaluate/dynamic.py b/jedi/evaluate/dynamic.py index edaa1edb..502bcdeb 100644 --- a/jedi/evaluate/dynamic.py +++ b/jedi/evaluate/dynamic.py @@ -64,7 +64,6 @@ from jedi.evaluate.cache import memoize_default # This is something like the sys.path, but only for searching params. It means # that this is the order in which Jedi searches params. search_param_modules = ['.'] -search_param_cache = {} def get_directory_modules_for_name(mods, name): @@ -110,22 +109,6 @@ def get_directory_modules_for_name(mods, name): yield c -def _search_param_memoize(func): - """ - Is only good for search params memoize, respectively the closure, - because it just caches the input, not the func, like normal memoize does. - """ - def wrapper(*args, **kwargs): - key = (args, frozenset(kwargs.items())) - if key in search_param_cache: - return search_param_cache[key] - else: - rv = func(*args, **kwargs) - search_param_cache[key] = rv - return rv - return wrapper - - class ParamListener(object): """ This listener is used to get the params for a function. @@ -158,8 +141,8 @@ def search_params(evaluator, param): """ Returns the values of a param, or an empty array. """ - @_search_param_memoize - def get_posibilities(module, func_name): + @memoize_default([], evaluator_is_first_arg=True) + def get_posibilities(evaluator, module, func_name): try: possible_stmts = module.used_names[func_name] except KeyError: @@ -209,7 +192,7 @@ def search_params(evaluator, param): return listener.param_possibilities result = [] - for params in get_posibilities(module, func_name): + for params in get_posibilities(evaluator, module, func_name): for p in params: if str(p) == param_name: result += evaluator.follow_statement(p.parent)