forked from VimPlug/jedi
Fix tensorflow issues with a few hacks (temporary), fixes #1195
This commit is contained in:
@@ -177,6 +177,19 @@ class Script(object):
|
|||||||
self._pos, self.call_signatures
|
self._pos, self.call_signatures
|
||||||
)
|
)
|
||||||
completions = completion.completions()
|
completions = completion.completions()
|
||||||
|
|
||||||
|
import_completions_count = len([
|
||||||
|
c for c in completions
|
||||||
|
if not c._name.tree_name
|
||||||
|
or c._name.tree_name.get_definition().type in ('import_name', 'import_from')
|
||||||
|
])
|
||||||
|
if import_completions_count > 10:
|
||||||
|
# For now disable completions if there's a lot of imports that
|
||||||
|
# might potentially be resolved. This is the case for tensorflow
|
||||||
|
# and has been fixed for it. This is obviously temporary until we
|
||||||
|
# have a better solution.
|
||||||
|
self._evaluator.infer_enabled = True
|
||||||
|
|
||||||
debug.speed('completions end')
|
debug.speed('completions end')
|
||||||
return completions
|
return completions
|
||||||
|
|
||||||
|
|||||||
@@ -105,6 +105,9 @@ class Evaluator(object):
|
|||||||
self.is_analysis = False
|
self.is_analysis = False
|
||||||
self.project = project
|
self.project = project
|
||||||
self.access_cache = {}
|
self.access_cache = {}
|
||||||
|
# This setting is only temporary to limit the work we have to do with
|
||||||
|
# tensorflow and others.
|
||||||
|
self.infer_enabled = True
|
||||||
|
|
||||||
self.reset_recursion_limitations()
|
self.reset_recursion_limitations()
|
||||||
self.allow_different_encoding = True
|
self.allow_different_encoding = True
|
||||||
@@ -123,6 +126,9 @@ class Evaluator(object):
|
|||||||
return self.project._get_sys_path(self, environment=self.environment)
|
return self.project._get_sys_path(self, environment=self.environment)
|
||||||
|
|
||||||
def eval_element(self, context, element):
|
def eval_element(self, context, element):
|
||||||
|
if not self.infer_enabled:
|
||||||
|
return NO_CONTEXTS
|
||||||
|
|
||||||
if isinstance(context, CompForContext):
|
if isinstance(context, CompForContext):
|
||||||
return eval_node(context, element)
|
return eval_node(context, element)
|
||||||
|
|
||||||
|
|||||||
@@ -32,8 +32,12 @@ def get_string_context_set(evaluator):
|
|||||||
return builtin_from_name(evaluator, u'str').execute_evaluated()
|
return builtin_from_name(evaluator, u'str').execute_evaluated()
|
||||||
|
|
||||||
|
|
||||||
def load_module(evaluator, **kwargs):
|
def load_module(evaluator, dotted_name, **kwargs):
|
||||||
access_path = evaluator.compiled_subprocess.load_module(**kwargs)
|
# Temporary, some tensorflow builtins cannot be loaded, so it's tried again
|
||||||
|
# and again and it's really slow.
|
||||||
|
if dotted_name.startswith('tensorflow.'):
|
||||||
|
return None
|
||||||
|
access_path = evaluator.compiled_subprocess.load_module(dotted_name=dotted_name, **kwargs)
|
||||||
if access_path is None:
|
if access_path is None:
|
||||||
return None
|
return None
|
||||||
return create_from_access_path(evaluator, access_path)
|
return create_from_access_path(evaluator, access_path)
|
||||||
|
|||||||
@@ -21,7 +21,6 @@ from jedi._compatibility import (FileNotFoundError, ImplicitNSInfo,
|
|||||||
force_unicode, unicode)
|
force_unicode, unicode)
|
||||||
from jedi import debug
|
from jedi import debug
|
||||||
from jedi import settings
|
from jedi import settings
|
||||||
from jedi.common.utils import traverse_parents
|
|
||||||
from jedi.parser_utils import get_cached_code_lines
|
from jedi.parser_utils import get_cached_code_lines
|
||||||
from jedi.evaluate import sys_path
|
from jedi.evaluate import sys_path
|
||||||
from jedi.evaluate import helpers
|
from jedi.evaluate import helpers
|
||||||
@@ -279,7 +278,7 @@ class Importer(object):
|
|||||||
return sys_path_mod
|
return sys_path_mod
|
||||||
|
|
||||||
def follow(self):
|
def follow(self):
|
||||||
if not self.import_path:
|
if not self.import_path or not self._evaluator.infer_enabled:
|
||||||
return NO_CONTEXTS
|
return NO_CONTEXTS
|
||||||
|
|
||||||
return self._do_import(self.import_path, self.sys_path_with_modifications())
|
return self._do_import(self.import_path, self.sys_path_with_modifications())
|
||||||
|
|||||||
Reference in New Issue
Block a user