Skip to content
Snippets Groups Projects
Commit d2841e1d authored by Daniel Miller's avatar Daniel Miller Committed by Claudiu Popa
Browse files

Do not warn no-absolute-import multiple times per file (#1725)

parent ff45b2d0
No related branches found
No related tags found
No related merge requests found
Loading
Loading
@@ -142,4 +142,6 @@ Order doesn't matter (not that much, at least ;)
 
* Guillaume Peillex: contributor.
 
* Daniel Miller: contributor.
* Bryce Guinta: contributor
Loading
Loading
@@ -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)
 
Loading
Loading
Loading
Loading
@@ -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})
 
Loading
Loading
@@ -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)
Loading
Loading
# encoding: utf-8
# Copyright (c) 2014-2015 Brett Cannon <brett@python.org>
# Copyright (c) 2014-2016 Claudiu Popa <pcmanticore@gmail.com>
 
Loading
Loading
@@ -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(
Loading
Loading
@@ -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):
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment