Skip to content

Commit 194782f

Browse files
committed
Permit lines to be hidden from consideration for wrong-import-order and wrong-import-position.
1 parent e0fdd25 commit 194782f

File tree

4 files changed

+31
-8
lines changed

4 files changed

+31
-8
lines changed

pylint/checkers/imports.py

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -436,6 +436,8 @@ def leave_module(self, node):
436436
self._first_non_import_node = None
437437

438438
def compute_first_non_import_node(self, node):
439+
if not self.linter.is_message_enabled('wrong-import-position', node.fromlineno):
440+
return
439441
# if the node does not contain an import instruction, and if it is the
440442
# first node of the module, keep a track of it (all the import positions
441443
# of the module will be compared to the position of this first
@@ -466,6 +468,8 @@ def compute_first_non_import_node(self, node):
466468
compute_first_non_import_node
467469

468470
def visit_functiondef(self, node):
471+
if not self.linter.is_message_enabled('wrong-import-position', node.fromlineno):
472+
return
469473
# If it is the first non import instruction of the module, record it.
470474
if self._first_non_import_node:
471475
return
@@ -552,8 +556,8 @@ def _check_imports_order(self, _module_node):
552556
extern_imports = []
553557
local_imports = []
554558
std_imports = []
555-
extern_not_nested = []
556-
local_not_nested = []
559+
extern_not_ignored = []
560+
local_not_ignored = []
557561
isort_obj = isort.SortImports(
558562
file_contents='', known_third_party=self.config.known_third_party,
559563
known_standard_library=self.config.known_standard_library,
@@ -567,7 +571,7 @@ def _check_imports_order(self, _module_node):
567571
import_category = isort_obj.place_module(package)
568572
if import_category in ('FUTURE', 'STDLIB'):
569573
std_imports.append((node, package))
570-
wrong_import = extern_not_nested or local_not_nested
574+
wrong_import = extern_not_ignored or local_not_ignored
571575
if self._is_fallback_import(node, wrong_import):
572576
continue
573577
if wrong_import and not nested:
@@ -576,17 +580,17 @@ def _check_imports_order(self, _module_node):
576580
'"%s"' % wrong_import[0][0].as_string()))
577581
elif import_category in ('FIRSTPARTY', 'THIRDPARTY'):
578582
extern_imports.append((node, package))
579-
if not nested:
580-
extern_not_nested.append((node, package))
581-
wrong_import = local_not_nested
583+
if not nested and self.linter.is_message_enabled('wrong-import-order', node.fromlineno):
584+
extern_not_ignored.append((node, package))
585+
wrong_import = local_not_ignored
582586
if wrong_import and not nested:
583587
self.add_message('wrong-import-order', node=node,
584588
args=('external import "%s"' % node.as_string(),
585589
'"%s"' % wrong_import[0][0].as_string()))
586590
elif import_category == 'LOCALFOLDER':
587591
local_imports.append((node, package))
588-
if not nested:
589-
local_not_nested.append((node, package))
592+
if not nested and self.linter.is_message_enabled('wrong-import-order', node.fromlineno):
593+
local_not_ignored.append((node, package))
590594
return std_imports, extern_imports, local_imports
591595

592596
def _get_imported_module(self, importnode, modname):
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
"""Checks that disabling 'wrong-import-order' on an import prevents subsequent
2+
imports from being considered out-of-order in respect to it but does not prevent
3+
it from being considered for 'ungrouped-imports'."""
4+
# pylint: disable=unused-import,import-error,no-name-in-module
5+
6+
from first_party.foo import bar # pylint: disable=wrong-import-order
7+
import logging
8+
import os.path
9+
import sys
10+
from astroid import are_exclusive
11+
import first_party # [ungrouped-imports]
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
ungrouped-imports:11::Imports from package first_party are not grouped
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
"""Checks that disabling 'wrong-import-position' on a statement prevents it from
2+
invalidating subsequent imports."""
3+
# pylint: disable=unused-import
4+
5+
CONSTANT = True # pylint: disable=wrong-import-position
6+
7+
import sys

0 commit comments

Comments
 (0)