summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--pyflakes/checker.py9
-rw-r--r--pyflakes/test/test_imports.py6
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