diff options
author | ryneeverett <ryneeverett@gmail.com> | 2015-08-13 21:53:01 -0400 |
---|---|---|
committer | ryneeverett <ryneeverett@gmail.com> | 2015-08-14 12:12:15 -0400 |
commit | ad8e83db81c054152ae931ad9c8d3148b4171972 (patch) | |
tree | d1195a5616533f21661e681b6c13e6119209d3f2 | |
parent | 12653ca4dcf56f10ac041dae7a916e86343239ca (diff) | |
download | pyflakes-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.py | 7 | ||||
-rw-r--r-- | pyflakes/test/test_imports.py | 10 |
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`') |