From e81486894f3952c68a3219589f57a66aad696f24 Mon Sep 17 00:00:00 2001 From: Dave Halter Date: Tue, 5 Sep 2017 18:38:32 +0200 Subject: [PATCH] Prepare for eventual cache changes. --- jedi/evaluate/cache.py | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/jedi/evaluate/cache.py b/jedi/evaluate/cache.py index 4cfb4793..15f47a93 100644 --- a/jedi/evaluate/cache.py +++ b/jedi/evaluate/cache.py @@ -21,8 +21,8 @@ def memoize_default(default=NO_DEFAULT, evaluator_is_first_arg=False, second_arg def wrapper(obj, *args, **kwargs): if evaluator_is_first_arg: cache = obj.memoize_cache - elif second_arg_is_evaluator: # needed for meta classes - cache = args[0].memoize_cache + elif second_arg_is_evaluator: + cache = args[0].memoize_cache # needed for meta classes else: cache = obj.evaluator.memoize_cache @@ -47,6 +47,20 @@ def memoize_default(default=NO_DEFAULT, evaluator_is_first_arg=False, second_arg return func +def evaluator_function_cache(default=NO_DEFAULT): + def decorator(func): + return memoize_default(default=default, evaluator_is_first_arg=True)(func) + + return decorator + + +def evaluator_method_cache(default=NO_DEFAULT): + def decorator(func): + return memoize_default(default=default)(func) + + return decorator + + class CachedMetaClass(type): """ This is basically almost the same than the decorator above, it just caches