Skip to content

Commit d2841e1

Browse files
millerdevPCManticore
authored andcommitted
Do not warn no-absolute-import multiple times per file (#1725)
1 parent ff45b2d commit d2841e1

File tree

4 files changed

+17
-2
lines changed

4 files changed

+17
-2
lines changed

CONTRIBUTORS.txt

+2
Original file line numberDiff line numberDiff line change
@@ -142,4 +142,6 @@ Order doesn't matter (not that much, at least ;)
142142

143143
* Guillaume Peillex: contributor.
144144

145+
* Daniel Miller: contributor.
146+
145147
* Bryce Guinta: contributor

ChangeLog

+2
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ Pylint's ChangeLog
44
What's New in Pylint 1.8?
55
=========================
66

7+
* Do not display no-absolute-import warning multiple times per file.
8+
79
* `trailing-comma-tuple` refactor check now extends to assignment with
810
more than one element (such as lists)
911

pylint/checkers/python3.py

+4-1
Original file line numberDiff line numberDiff line change
@@ -650,6 +650,7 @@ def visit_importfrom(self, node):
650650
if not self._future_absolute_import:
651651
if self.linter.is_message_enabled('no-absolute-import'):
652652
self.add_message('no-absolute-import', node=node)
653+
self._future_absolute_import = True
653654
if not _is_conditional_import(node) and not node.level:
654655
self._warn_if_deprecated(node, node.modname, {x[0] for x in node.names})
655656

@@ -660,7 +661,9 @@ def visit_importfrom(self, node):
660661

661662
def visit_import(self, node):
662663
if not self._future_absolute_import:
663-
self.add_message('no-absolute-import', node=node)
664+
if self.linter.is_message_enabled('no-absolute-import'):
665+
self.add_message('no-absolute-import', node=node)
666+
self._future_absolute_import = True
664667
if not _is_conditional_import(node):
665668
for name, _ in node.names:
666669
self._warn_if_deprecated(node, name, None)

pylint/test/unittest_checker_python3.py

+9-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
# encoding: utf-8
12
# Copyright (c) 2014-2015 Brett Cannon <[email protected]>
23
# Copyright (c) 2014-2016 Claudiu Popa <[email protected]>
34

@@ -313,12 +314,18 @@ def test_relative_import(self):
313314
message = testutils.Message('no-absolute-import', node=node)
314315
with self.assertAddsMessages(message):
315316
self.checker.visit_import(node)
317+
with self.assertNoMessages():
318+
# message should only be added once
319+
self.checker.visit_import(node)
316320

317321
def test_relative_from_import(self):
318322
node = astroid.extract_node('from os import path #@')
319323
message = testutils.Message('no-absolute-import', node=node)
320324
with self.assertAddsMessages(message):
321-
self.checker.visit_import(node)
325+
self.checker.visit_importfrom(node)
326+
with self.assertNoMessages():
327+
# message should only be added once
328+
self.checker.visit_importfrom(node)
322329

323330
def test_absolute_import(self):
324331
module_import = astroid.parse(
@@ -600,6 +607,7 @@ def test_bad_import_not_on_relative(self):
600607
absolute_import_message = testutils.Message('no-absolute-import', node=node)
601608
with self.assertAddsMessages(absolute_import_message):
602609
self.checker.visit_importfrom(node)
610+
self.checker._future_absolute_import = False
603611

604612
@python2_only
605613
def test_bad_import_conditional(self):

0 commit comments

Comments
 (0)