forked from VimPlug/jedi
Avoid dynamic params search for Interpreter, fixes #1899
This commit is contained in:
@@ -742,6 +742,14 @@ class Interpreter(Script):
|
|||||||
|
|
||||||
self.namespaces = namespaces
|
self.namespaces = namespaces
|
||||||
self._inference_state.allow_descriptor_getattr = settings.instance_allow_descriptor_getattr
|
self._inference_state.allow_descriptor_getattr = settings.instance_allow_descriptor_getattr
|
||||||
|
# Dynamic params search is important when we work on functions that are
|
||||||
|
# called by other pieces of code. However for interpreter completions
|
||||||
|
# this is not important at all, because the current code is always new
|
||||||
|
# and will never be called by something.
|
||||||
|
# Also sometimes this logic goes a bit too far like in
|
||||||
|
# https://github.com/ipython/ipython/issues/13866, where it takes
|
||||||
|
# seconds to do a simple completion.
|
||||||
|
self._inference_state.do_dynamic_params_search = False
|
||||||
|
|
||||||
@cache.memoize_method
|
@cache.memoize_method
|
||||||
def _get_module_context(self):
|
def _get_module_context(self):
|
||||||
|
|||||||
@@ -99,6 +99,7 @@ class InferenceState:
|
|||||||
self.mixed_cache = {} # see `inference.compiled.mixed._create()`
|
self.mixed_cache = {} # see `inference.compiled.mixed._create()`
|
||||||
self.analysis = []
|
self.analysis = []
|
||||||
self.dynamic_params_depth = 0
|
self.dynamic_params_depth = 0
|
||||||
|
self.do_dynamic_params_search = settings.dynamic_params
|
||||||
self.is_analysis = False
|
self.is_analysis = False
|
||||||
self.project = project
|
self.project = project
|
||||||
self.access_cache = {}
|
self.access_cache = {}
|
||||||
|
|||||||
@@ -66,11 +66,11 @@ def dynamic_param_lookup(function_value, param_index):
|
|||||||
have to look for all calls to ``func`` to find out what ``foo`` possibly
|
have to look for all calls to ``func`` to find out what ``foo`` possibly
|
||||||
is.
|
is.
|
||||||
"""
|
"""
|
||||||
funcdef = function_value.tree_node
|
if not function_value.inference_state.do_dynamic_params_search:
|
||||||
|
|
||||||
if not settings.dynamic_params:
|
|
||||||
return NO_VALUES
|
return NO_VALUES
|
||||||
|
|
||||||
|
funcdef = function_value.tree_node
|
||||||
|
|
||||||
path = function_value.get_root_context().py__file__()
|
path = function_value.get_root_context().py__file__()
|
||||||
if path is not None and is_stdlib_path(path):
|
if path is not None and is_stdlib_path(path):
|
||||||
# We don't want to search for references in the stdlib. Usually people
|
# We don't want to search for references in the stdlib. Usually people
|
||||||
|
|||||||
Reference in New Issue
Block a user