diff options
author | Daniel Miller <millerdev@gmail.com> | 2017-11-11 07:14:23 -0500 |
---|---|---|
committer | Claudiu Popa <pcmanticore@gmail.com> | 2017-11-11 13:14:23 +0100 |
commit | d2841e1d2fc9aae2cfcc74199f86dc4aa79beea3 (patch) | |
tree | d93d53a2115fa84e3baf67c7bc10b555a84a00d6 | |
parent | ff45b2d06262be02274a959f9d6feda63bc9dd3a (diff) | |
download | pylint-git-d2841e1d2fc9aae2cfcc74199f86dc4aa79beea3.tar.gz |
Do not warn no-absolute-import multiple times per file (#1725)
-rw-r--r-- | CONTRIBUTORS.txt | 2 | ||||
-rw-r--r-- | ChangeLog | 2 | ||||
-rw-r--r-- | pylint/checkers/python3.py | 5 | ||||
-rw-r--r-- | pylint/test/unittest_checker_python3.py | 10 |
4 files changed, 17 insertions, 2 deletions
diff --git a/CONTRIBUTORS.txt b/CONTRIBUTORS.txt index 8836bb82d..c0d2aa2a0 100644 --- a/CONTRIBUTORS.txt +++ b/CONTRIBUTORS.txt @@ -142,4 +142,6 @@ Order doesn't matter (not that much, at least ;) * Guillaume Peillex: contributor. +* Daniel Miller: contributor. + * Bryce Guinta: contributor @@ -4,6 +4,8 @@ Pylint's ChangeLog What's New in Pylint 1.8? ========================= + * Do not display no-absolute-import warning multiple times per file. + * `trailing-comma-tuple` refactor check now extends to assignment with more than one element (such as lists) diff --git a/pylint/checkers/python3.py b/pylint/checkers/python3.py index fabcb7e48..8409e9ac0 100644 --- a/pylint/checkers/python3.py +++ b/pylint/checkers/python3.py @@ -650,6 +650,7 @@ class Python3Checker(checkers.BaseChecker): if not self._future_absolute_import: if self.linter.is_message_enabled('no-absolute-import'): self.add_message('no-absolute-import', node=node) + self._future_absolute_import = True if not _is_conditional_import(node) and not node.level: self._warn_if_deprecated(node, node.modname, {x[0] for x in node.names}) @@ -660,7 +661,9 @@ class Python3Checker(checkers.BaseChecker): def visit_import(self, node): if not self._future_absolute_import: - self.add_message('no-absolute-import', node=node) + if self.linter.is_message_enabled('no-absolute-import'): + self.add_message('no-absolute-import', node=node) + self._future_absolute_import = True if not _is_conditional_import(node): for name, _ in node.names: self._warn_if_deprecated(node, name, None) diff --git a/pylint/test/unittest_checker_python3.py b/pylint/test/unittest_checker_python3.py index e5d6a9172..d24150de2 100644 --- a/pylint/test/unittest_checker_python3.py +++ b/pylint/test/unittest_checker_python3.py @@ -1,3 +1,4 @@ +# encoding: utf-8 # Copyright (c) 2014-2015 Brett Cannon <brett@python.org> # Copyright (c) 2014-2016 Claudiu Popa <pcmanticore@gmail.com> @@ -313,12 +314,18 @@ class TestPython3Checker(testutils.CheckerTestCase): message = testutils.Message('no-absolute-import', node=node) with self.assertAddsMessages(message): self.checker.visit_import(node) + with self.assertNoMessages(): + # message should only be added once + self.checker.visit_import(node) def test_relative_from_import(self): node = astroid.extract_node('from os import path #@') message = testutils.Message('no-absolute-import', node=node) with self.assertAddsMessages(message): - self.checker.visit_import(node) + self.checker.visit_importfrom(node) + with self.assertNoMessages(): + # message should only be added once + self.checker.visit_importfrom(node) def test_absolute_import(self): module_import = astroid.parse( @@ -600,6 +607,7 @@ class TestPython3Checker(testutils.CheckerTestCase): absolute_import_message = testutils.Message('no-absolute-import', node=node) with self.assertAddsMessages(absolute_import_message): self.checker.visit_importfrom(node) + self.checker._future_absolute_import = False @python2_only def test_bad_import_conditional(self): |