summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoreight <eight04@gmail.com>2017-12-09 07:30:19 +0800
committerSteven Myint <git@stevenmyint.com>2017-12-08 15:30:19 -0800
commit8a1feac08dae2478e3f67ab4018af86ff4ec56f0 (patch)
tree1cba78262e5b187f73592d06beb4af38a570e790
parent8aece72839adb4add6c31ccfcb021cef2d731a81 (diff)
downloadpyflakes-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.py5
-rw-r--r--pyflakes/test/test_other.py19
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