From 55b7ec8f8550a3bcff136da7384487310999f8fd Mon Sep 17 00:00:00 2001 From: Charlie Marsh Date: Mon, 5 Dec 2022 18:02:41 -0500 Subject: [PATCH] Ignore newline enforcement when imports break indentation boundaries (#1085) --- resources/test/fixtures/isort/insert_empty_lines.py | 13 +++++++++++++ src/isort/plugins.rs | 6 +++++- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/resources/test/fixtures/isort/insert_empty_lines.py b/resources/test/fixtures/isort/insert_empty_lines.py index 2c5e7b32ce..fe3de2e1e0 100644 --- a/resources/test/fixtures/isort/insert_empty_lines.py +++ b/resources/test/fixtures/isort/insert_empty_lines.py @@ -14,3 +14,16 @@ y = 1 import os import sys """Docstring""" + +if True: + import os + + +def f(): + pass + + +if True: + import os +def f(): + pass diff --git a/src/isort/plugins.rs b/src/isort/plugins.rs index b7bbc36aae..72b91c94aa 100644 --- a/src/isort/plugins.rs +++ b/src/isort/plugins.rs @@ -51,7 +51,11 @@ pub fn check_imports( // Special-cases: there's leading or trailing content in the import block. let has_leading_content = match_leading_content(block.imports.first().unwrap(), locator); let has_trailing_content = match_trailing_content(block.imports.last().unwrap(), locator); - let num_trailing_lines = count_trailing_lines(block.imports.last().unwrap(), locator); + let num_trailing_lines = if block.trailer.is_none() { + 0 + } else { + count_trailing_lines(block.imports.last().unwrap(), locator) + }; // Generate the sorted import block. let expected = format_imports(