ImportError detection

This commit is contained in:
Dave Halter
2014-05-11 01:54:25 +02:00
parent 586ac9d013
commit c59a8dce28
3 changed files with 7 additions and 3 deletions

View File

@@ -588,14 +588,14 @@ class Script(object):
def analysis(self):
statements = set(chain(*self._parser.module().used_names.values()))
for stmt in statements:
if stmt.start_pos[0] != 32:
if stmt.start_pos[0] != 254:
continue
if isinstance(stmt, pr.Import):
imports.strip_imports(self._evaluator, [stmt])
else:
self._evaluator.eval_statement(stmt)
for error in self._evaluator.analysis:
for error in sorted(self._evaluator.analysis, key=lambda x: x.line):
print(repr(error))
raise AssertionError
return self._evaluator.analysis

View File

@@ -7,6 +7,7 @@ from jedi import debug
CODES = {
'attribute-error': (1, 'Potential AttributeError.'),
'import-error': (2, 'Potential ImportError.'),
}

View File

@@ -27,6 +27,7 @@ from jedi.evaluate import helpers
from jedi import settings
from jedi.common import source_to_unicode
from jedi.evaluate import compiled
from jedi.evaluate import analysis
from jedi.evaluate.cache import memoize_default, NO_DEFAULT
@@ -170,7 +171,7 @@ class ImportWrapper(pr.Base):
try:
scope, rest = self._importer.follow_file_system()
except ModuleNotFound:
debug.warning('Module not found: %s', self.import_stmt)
analysis.add(self._evaluator, 'import-error', self.import_stmt)
return []
if self._is_nested_import():
@@ -204,6 +205,8 @@ class ImportWrapper(pr.Base):
else:
scopes = [ImportWrapper.GlobalNamespace]
debug.dbg('after import: %s', scopes)
if not scopes:
analysis.add(self._evaluator, 'import-error', self.import_stmt)
self._evaluator.recursion_detector.pop_stmt()
return scopes