diff options
-rw-r--r-- | pyflakes/checker.py | 9 | ||||
-rw-r--r-- | pyflakes/test/test_imports.py | 6 |
2 files changed, 14 insertions, 1 deletions
diff --git a/pyflakes/checker.py b/pyflakes/checker.py index 45c7a4a..45f2a42 100644 --- a/pyflakes/checker.py +++ b/pyflakes/checker.py @@ -1291,7 +1291,14 @@ class Checker(object): parent_stmt != node._pyflakes_parent and not self.isLiteralTupleUnpacking(parent_stmt)): binding = Binding(name, node) - elif name == '__all__' and isinstance(self.scope, ModuleScope): + elif ( + name == '__all__' and + isinstance(self.scope, ModuleScope) and + isinstance( + node._pyflakes_parent, + (ast.Assign, ast.AugAssign, ast.AnnAssign) + ) + ): binding = ExportBinding(name, node._pyflakes_parent, self.scope) elif PY2 and isinstance(getattr(node, 'ctx', None), ast.Param): binding = Argument(name, self.getScopeNode(node)) diff --git a/pyflakes/test/test_imports.py b/pyflakes/test/test_imports.py index d5be269..07504d9 100644 --- a/pyflakes/test/test_imports.py +++ b/pyflakes/test/test_imports.py @@ -1057,6 +1057,12 @@ class TestSpecialAll(TestCase): __all__ = ["bar"] ''', m.UnusedImport) + def test_ignored_when_not_directly_assigned(self): + self.flakes(''' + import bar + (__all__,) = ("foo",) + ''', m.UnusedImport) + def test_warningSuppressed(self): """ If a name is imported and unused but is named in C{__all__}, no warning |