Skip to content

Commit 7fb7b18

Browse files
fix: support block-level wrong-import-position pragma suppression
Signed-off-by: Emmanuel Ferdman <[email protected]>
1 parent 4c56438 commit 7fb7b18

File tree

1 file changed

+2
-10
lines changed

1 file changed

+2
-10
lines changed

pylint/checkers/imports.py

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -446,8 +446,7 @@ def __init__(self, linter: PyLinter) -> None:
446446
BaseChecker.__init__(self, linter)
447447
self.import_graph: defaultdict[str, set[str]] = defaultdict(set)
448448
self._imports_stack: list[tuple[ImportNode, str]] = []
449-
self._first_non_import_node = None
450-
self._non_import_nodes: list = []
449+
self._non_import_nodes: list[nodes.NodeNG] = []
451450
self._module_pkg: dict[Any, Any] = (
452451
{}
453452
) # mapping of modules to the pkg they belong in
@@ -608,7 +607,6 @@ def leave_module(self, node: nodes.Module) -> None:
608607
met.add(package)
609608

610609
self._imports_stack = []
611-
self._first_non_import_node = None
612610
self._non_import_nodes = []
613611

614612
def compute_first_non_import_node(
@@ -642,9 +640,6 @@ def compute_first_non_import_node(
642640
if all(valid_targets):
643641
return
644642

645-
if not self._first_non_import_node:
646-
self._first_non_import_node = node
647-
648643
self._non_import_nodes.append(node)
649644

650645
visit_try = visit_assignattr = visit_assign = visit_ifexp = visit_comprehension = (
@@ -666,9 +661,6 @@ def visit_functiondef(
666661
if any(root.nodes_of_class((nodes.Import, nodes.ImportFrom))):
667662
return
668663

669-
if not self._first_non_import_node:
670-
self._first_non_import_node = node
671-
672664
self._non_import_nodes.append(node)
673665

674666
visit_classdef = visit_for = visit_while = visit_functiondef
@@ -699,7 +691,7 @@ def _check_position(self, node: ImportNode) -> None:
699691
Send a message if `node` comes before another instruction
700692
"""
701693
# Check if import comes after a non-import statement
702-
if self._first_non_import_node:
694+
if self._non_import_nodes:
703695
# Check for inline pragma on the import line
704696
if not self.linter.is_message_enabled(
705697
"wrong-import-position", node.fromlineno

0 commit comments

Comments
 (0)