mirror of
https://github.com/davidhalter/jedi.git
synced 2025-12-06 22:14:27 +08:00
ImportError detection
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -7,6 +7,7 @@ from jedi import debug
|
||||
|
||||
CODES = {
|
||||
'attribute-error': (1, 'Potential AttributeError.'),
|
||||
'import-error': (2, 'Potential ImportError.'),
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user