summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorryneeverett <ryneeverett@gmail.com>2015-08-13 21:53:01 -0400
committerryneeverett <ryneeverett@gmail.com>2015-08-14 12:12:15 -0400
commitad8e83db81c054152ae931ad9c8d3148b4171972 (patch)
treed1195a5616533f21661e681b6c13e6119209d3f2
parent12653ca4dcf56f10ac041dae7a916e86343239ca (diff)
downloadpyflakes-ad8e83db81c054152ae931ad9c8d3148b4171972.tar.gz
Don't report UnusedImport when binding global name
When an import binds to a name declared global by the "global" statment, don't report it as unused.
-rw-r--r--pyflakes/checker.py7
-rw-r--r--pyflakes/test/test_imports.py10
2 files changed, 14 insertions, 3 deletions
diff --git a/pyflakes/checker.py b/pyflakes/checker.py
index abd7f50..faa12d2 100644
--- a/pyflakes/checker.py
+++ b/pyflakes/checker.py
@@ -448,6 +448,10 @@ class Checker(object):
elif isinstance(existing, Importation) and value.redefines(existing):
existing.redefined.append(node)
+ if value.name in self.scope:
+ # then assume the rebound name is used as a global or within a loop
+ value.used = self.scope[value.name].used
+
self.scope[value.name] = value
def getNodeHandler(self, node_class):
@@ -526,9 +530,6 @@ class Checker(object):
binding = ExportBinding(name, node.parent, self.scope)
else:
binding = Assignment(name, node)
- if name in self.scope:
- # then assume the rebound name is used as a global or within a loop
- binding.used = self.scope[name].used
self.addBinding(node, binding)
def handleNodeDelete(self, node):
diff --git a/pyflakes/test/test_imports.py b/pyflakes/test/test_imports.py
index 077a728..6cd0ec5 100644
--- a/pyflakes/test/test_imports.py
+++ b/pyflakes/test/test_imports.py
@@ -525,6 +525,16 @@ class Test(TestCase):
def g(): foo.is_used()
''')
+ def test_assignedToGlobal(self):
+ """
+ Binding an import to a declared global should not cause it to be
+ reported as unused.
+ """
+ self.flakes('''
+ def f(): global foo; import foo
+ def g(): foo.is_used()
+ ''')
+
@skipIf(version_info >= (3,), 'deprecated syntax')
def test_usedInBackquote(self):
self.flakes('import fu; `fu`')