Modules that are not importable shouldn't cause Jedi to stop working (just issue a warning). Fixes #468, #71.

This commit is contained in:
Dave Halter
2015-03-06 11:13:04 +01:00
parent 910f2e6486
commit eb146adcc1
2 changed files with 11 additions and 0 deletions

View File

@@ -375,6 +375,11 @@ def load_module(path, name):
# the QObject class.
# See https://github.com/davidhalter/jedi/pull/483
return None
raise
except ImportError:
# If a module is "corrupt" or not really a Python module or whatever.
debug.warning('Module %s not importable.', path)
return None
# Just access the cache after import, because of #59 as well as the very
# complicated import structure of Python.
module = sys.modules[dotted_path]

View File

@@ -51,3 +51,9 @@ def test_flask_ext(script, name):
assert name in [c.name for c in jedi.Script(script).completions()]
finally:
sys.path.remove(path)
@cwd_at('test/test_evaluate/')
def test_not_importable_file():
src = 'import not_importable_file as x; x.'
assert not jedi.Script(src, path='example.py').completions()