From cd387678824161bcc50d1437d091737a3a80d02a Mon Sep 17 00:00:00 2001 From: Timothy Crosley Date: Wed, 4 Nov 2020 00:57:17 -0800 Subject: [PATCH] Fix handling of mix indented imports --- isort/core.py | 9 +++++++-- tests/unit/test_ticketed_features.py | 29 ++++++++++++++++++++++++++++ 2 files changed, 36 insertions(+), 2 deletions(-) diff --git a/isort/core.py b/isort/core.py index 28f1010ef..27e615414 100644 --- a/isort/core.py +++ b/isort/core.py @@ -276,7 +276,12 @@ def write(self, *a, **kw): ): cimport_statement = True - if cimport_statement != cimports and import_section: + if cimport_statement != cimports or ( + new_indent != indent + and import_section + and (not did_contain_imports or len(new_indent) < len(indent)) + ): + indent = new_indent if import_section: next_cimports = cimport_statement next_import_section = import_statement @@ -288,7 +293,7 @@ def write(self, *a, **kw): else: if new_indent != indent: if import_section and did_contain_imports: - import_statement = import_statement.lstrip() + import_statement = indent + import_statement.lstrip() else: indent = new_indent import_section += import_statement diff --git a/tests/unit/test_ticketed_features.py b/tests/unit/test_ticketed_features.py index 06b59f5ff..7871e38c5 100644 --- a/tests/unit/test_ticketed_features.py +++ b/tests/unit/test_ticketed_features.py @@ -892,5 +892,34 @@ def test_autofix_mixed_indent_imports_1575(): ) == """ import os +""" + ) + assert ( + isort.code( + """ +def one(): + import os +import os + """ + ) + == """ +def one(): + import os + +import os +""" + ) + assert ( + isort.code( + """ +import os + import os + import os + import os +import os +""" + ) + == """ +import os """ )