forked from VimPlug/jedi
make some parser caches private
This commit is contained in:
+14
-14
@@ -31,9 +31,9 @@ from jedi import settings
|
|||||||
from jedi import common
|
from jedi import common
|
||||||
from jedi import debug
|
from jedi import debug
|
||||||
|
|
||||||
time_caches = []
|
_time_caches = []
|
||||||
|
|
||||||
star_import_cache = {}
|
_star_import_cache = {}
|
||||||
|
|
||||||
# for fast_parser, should not be deleted
|
# for fast_parser, should not be deleted
|
||||||
parser_cache = {}
|
parser_cache = {}
|
||||||
@@ -54,15 +54,15 @@ def clear_caches(delete_all=False):
|
|||||||
:param delete_all: Deletes also the cache that is normally not deleted,
|
:param delete_all: Deletes also the cache that is normally not deleted,
|
||||||
like parser cache, which is important for faster parsing.
|
like parser cache, which is important for faster parsing.
|
||||||
"""
|
"""
|
||||||
global time_caches
|
global _time_caches
|
||||||
|
|
||||||
if delete_all:
|
if delete_all:
|
||||||
time_caches = []
|
_time_caches = []
|
||||||
star_import_cache.clear()
|
_star_import_cache.clear()
|
||||||
parser_cache.clear()
|
parser_cache.clear()
|
||||||
else:
|
else:
|
||||||
# normally just kill the expired entries, not all
|
# normally just kill the expired entries, not all
|
||||||
for tc in time_caches:
|
for tc in _time_caches:
|
||||||
# check time_cache for expired entries
|
# check time_cache for expired entries
|
||||||
for key, (t, value) in list(tc.items()):
|
for key, (t, value) in list(tc.items()):
|
||||||
if t < time.time():
|
if t < time.time():
|
||||||
@@ -78,7 +78,7 @@ def time_cache(time_add_setting):
|
|||||||
"""
|
"""
|
||||||
def _temp(key_func):
|
def _temp(key_func):
|
||||||
dct = {}
|
dct = {}
|
||||||
time_caches.append(dct)
|
_time_caches.append(dct)
|
||||||
|
|
||||||
def wrapper(optional_callable, *args, **kwargs):
|
def wrapper(optional_callable, *args, **kwargs):
|
||||||
key = key_func(*args, **kwargs)
|
key = key_func(*args, **kwargs)
|
||||||
@@ -105,13 +105,13 @@ def cache_call_signatures(stmt):
|
|||||||
def cache_star_import(func):
|
def cache_star_import(func):
|
||||||
def wrapper(evaluator, scope, *args, **kwargs):
|
def wrapper(evaluator, scope, *args, **kwargs):
|
||||||
with common.ignored(KeyError):
|
with common.ignored(KeyError):
|
||||||
mods = star_import_cache[scope]
|
mods = _star_import_cache[scope]
|
||||||
if mods[0] + settings.star_import_cache_validity > time.time():
|
if mods[0] + settings.star_import_cache_validity > time.time():
|
||||||
return mods[1]
|
return mods[1]
|
||||||
# cache is too old and therefore invalid or not available
|
# cache is too old and therefore invalid or not available
|
||||||
invalidate_star_import_cache(scope)
|
invalidate_star_import_cache(scope)
|
||||||
mods = func(evaluator, scope, *args, **kwargs)
|
mods = func(evaluator, scope, *args, **kwargs)
|
||||||
star_import_cache[scope] = time.time(), mods
|
_star_import_cache[scope] = time.time(), mods
|
||||||
|
|
||||||
return mods
|
return mods
|
||||||
return wrapper
|
return wrapper
|
||||||
@@ -120,9 +120,9 @@ def cache_star_import(func):
|
|||||||
def invalidate_star_import_cache(module, only_main=False):
|
def invalidate_star_import_cache(module, only_main=False):
|
||||||
""" Important if some new modules are being reparsed """
|
""" Important if some new modules are being reparsed """
|
||||||
with common.ignored(KeyError):
|
with common.ignored(KeyError):
|
||||||
t, mods = star_import_cache[module]
|
t, mods = _star_import_cache[module]
|
||||||
|
|
||||||
del star_import_cache[module]
|
del _star_import_cache[module]
|
||||||
|
|
||||||
for m in mods:
|
for m in mods:
|
||||||
invalidate_star_import_cache(m, only_main=True)
|
invalidate_star_import_cache(m, only_main=True)
|
||||||
@@ -130,7 +130,7 @@ def invalidate_star_import_cache(module, only_main=False):
|
|||||||
if not only_main:
|
if not only_main:
|
||||||
# We need a list here because otherwise the list is being changed
|
# We need a list here because otherwise the list is being changed
|
||||||
# during the iteration in py3k: iteritems -> items.
|
# during the iteration in py3k: iteritems -> items.
|
||||||
for key, (t, mods) in list(star_import_cache.items()):
|
for key, (t, mods) in list(_star_import_cache.items()):
|
||||||
if module in mods:
|
if module in mods:
|
||||||
invalidate_star_import_cache(key)
|
invalidate_star_import_cache(key)
|
||||||
|
|
||||||
@@ -246,7 +246,7 @@ class _ModulePickling(object):
|
|||||||
else:
|
else:
|
||||||
# 0 means version is not defined (= always delete cache):
|
# 0 means version is not defined (= always delete cache):
|
||||||
if data.get('version', 0) != self.version:
|
if data.get('version', 0) != self.version:
|
||||||
self.delete_cache()
|
self.clear_cache()
|
||||||
self.__index = {}
|
self.__index = {}
|
||||||
else:
|
else:
|
||||||
self.__index = data['index']
|
self.__index = data['index']
|
||||||
@@ -265,7 +265,7 @@ class _ModulePickling(object):
|
|||||||
json.dump(data, f)
|
json.dump(data, f)
|
||||||
self.__index = None
|
self.__index = None
|
||||||
|
|
||||||
def delete_cache(self):
|
def clear_cache(self):
|
||||||
shutil.rmtree(self._cache_directory())
|
shutil.rmtree(self._cache_directory())
|
||||||
|
|
||||||
def _get_hashed_path(self, path):
|
def _get_hashed_path(self, path):
|
||||||
|
|||||||
Reference in New Issue
Block a user