diff options
author | eight <eight04@gmail.com> | 2017-12-09 07:30:19 +0800 |
---|---|---|
committer | Steven Myint <git@stevenmyint.com> | 2017-12-08 15:30:19 -0800 |
commit | 8a1feac08dae2478e3f67ab4018af86ff4ec56f0 (patch) | |
tree | 1cba78262e5b187f73592d06beb4af38a570e790 | |
parent | 8aece72839adb4add6c31ccfcb021cef2d731a81 (diff) | |
download | pyflakes-8a1feac08dae2478e3f67ab4018af86ff4ec56f0.tar.gz |
Ignore underscore redefinition (#73)
* Ignore underscore redefinition
* Add test: ignore underscore redefinition
* Redefining an importation should always raise a warning
-rw-r--r-- | pyflakes/checker.py | 5 | ||||
-rw-r--r-- | pyflakes/test/test_other.py | 19 |
2 files changed, 22 insertions, 2 deletions
diff --git a/pyflakes/checker.py b/pyflakes/checker.py index a070822..baef833 100644 --- a/pyflakes/checker.py +++ b/pyflakes/checker.py @@ -679,8 +679,9 @@ class Checker(object): self.report(messages.RedefinedInListComp, node, value.name, existing.source) elif not existing.used and value.redefines(existing): - self.report(messages.RedefinedWhileUnused, - node, value.name, existing.source) + if value.name != '_' or isinstance(existing, Importation): + self.report(messages.RedefinedWhileUnused, + node, value.name, existing.source) elif isinstance(existing, Importation) and value.redefines(existing): existing.redefined.append(node) diff --git a/pyflakes/test/test_other.py b/pyflakes/test/test_other.py index 14f213c..5bae7a0 100644 --- a/pyflakes/test/test_other.py +++ b/pyflakes/test/test_other.py @@ -151,6 +151,25 @@ class Test(TestCase): def a(): pass ''', m.RedefinedWhileUnused) + def test_redefinedUnderscoreFunction(self): + """ + Test that shadowing a function definition named with underscore doesn't + raise anything. + """ + self.flakes(''' + def _(): pass + def _(): pass + ''') + + def test_redefinedUnderscoreImportation(self): + """ + Test that shadowing an underscore importation raises a warning. + """ + self.flakes(''' + from .i18n import _ + def _(): pass + ''', m.RedefinedWhileUnused) + def test_redefinedClassFunction(self): """ Test that shadowing a function definition in a class suite with another |