diff options
-rw-r--r-- | pyflakes/checker.py | 7 | ||||
-rw-r--r-- | pyflakes/test/test_imports.py | 9 |
2 files changed, 12 insertions, 4 deletions
diff --git a/pyflakes/checker.py b/pyflakes/checker.py index 756b77e..9937685 100644 --- a/pyflakes/checker.py +++ b/pyflakes/checker.py @@ -665,9 +665,16 @@ class Checker(object): # mark all import '*' as used by the undefined in __all__ if scope.importStarred: + from_list = [] for binding in scope.values(): if isinstance(binding, StarImportation): binding.used = all_binding + from_list.append(binding.fullName) + # report * usage, with a list of possible sources + from_list = ', '.join(sorted(from_list)) + for name in undefined: + self.report(messages.ImportStarUsage, + scope['__all__'].source, name, from_list) # Look for imported names that aren't used. for value in scope.values(): diff --git a/pyflakes/test/test_imports.py b/pyflakes/test/test_imports.py index 4272186..193f9d3 100644 --- a/pyflakes/test/test_imports.py +++ b/pyflakes/test/test_imports.py @@ -1110,12 +1110,13 @@ class TestSpecialAll(TestCase): def test_importStarExported(self): """ - Do not report undefined if import * is used + Report undefined if import * is used """ self.flakes(''' - from foolib import * - __all__ = ["foo"] - ''', m.ImportStarUsed) + from math import * + __all__ = ['sin', 'cos'] + csc(1) + ''', m.ImportStarUsed, m.ImportStarUsage, m.ImportStarUsage, m.ImportStarUsage) def test_importStarNotExported(self): """Report unused import when not needed to satisfy __all__.""" |