diff --git a/jedi/api/environment.py b/jedi/api/environment.py index 22c7c4d6..40d5e626 100644 --- a/jedi/api/environment.py +++ b/jedi/api/environment.py @@ -14,7 +14,7 @@ from collections import namedtuple from distutils.spawn import find_executable from jedi._compatibility import GeneralizedPopen -from jedi.cache import memoize_method +from jedi.cache import memoize_method, time_cache from jedi.evaluate.compiled.subprocess import get_subprocess, \ EvaluatorSameProcess, EvaluatorSubprocess @@ -170,6 +170,11 @@ def get_default_environment(): return SameEnvironment() +@time_cache("_default_environment_validity") +def get_cached_default_environment(): + return get_default_environment() + + def find_virtualenvs(paths=None, **kwargs): """ :param paths: A list of paths in your file system to be scanned for diff --git a/jedi/api/project.py b/jedi/api/project.py index ec01f82f..ca6992b5 100644 --- a/jedi/api/project.py +++ b/jedi/api/project.py @@ -3,7 +3,7 @@ import json from jedi._compatibility import FileNotFoundError, NotADirectoryError from jedi.api.environment import SameEnvironment, \ - get_default_environment + get_cached_default_environment from jedi.api.exceptions import WrongVersion from jedi._compatibility import force_unicode from jedi.evaluate.sys_path import discover_buildout_paths @@ -136,7 +136,7 @@ class Project(object): def get_environment(self): if self._environment is None: - return get_default_environment() + return get_cached_default_environment() return self._environment diff --git a/jedi/settings.py b/jedi/settings.py index f1ae6dbb..bbd3a378 100644 --- a/jedi/settings.py +++ b/jedi/settings.py @@ -161,3 +161,5 @@ call_signatures_validity = 3.0 Finding function calls might be slow (0.1-0.5s). This is not acceptible for normal writing. Therefore cache it for a short time. """ + +_default_environment_validity = 10 * 60 # 0 Minutes