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 """ )