diff --git a/isort/core.py b/isort/core.py index 42fbec80b..7408c1f1c 100644 --- a/isort/core.py +++ b/isort/core.py @@ -275,7 +275,7 @@ def write(self, *a, **kw): ): cimport_statement = True - if cimport_statement != cimports or (new_indent != indent and import_section): + if cimport_statement != cimports and import_section: if import_section: next_cimports = cimport_statement next_import_section = import_statement @@ -284,8 +284,12 @@ def write(self, *a, **kw): line = "" else: cimports = cimport_statement - - indent = new_indent + else: + if new_indent != indent: + if import_section: + import_statement = import_statement.lstrip() + else: + indent = new_indent import_section += import_statement else: not_imports = True diff --git a/tests/unit/test_ticketed_features.py b/tests/unit/test_ticketed_features.py index 76f08894c..bf760f8d9 100644 --- a/tests/unit/test_ticketed_features.py +++ b/tests/unit/test_ticketed_features.py @@ -876,3 +876,18 @@ def test_api_to_allow_custom_diff_and_output_stream_1583(capsys, tmpdir): isort_output.seek(0) assert isort_output.read().splitlines() == ["import a", "import b"] + + +def test_autofix_mixed_indent_imports_1575(): + """isort should automatically fix import statements that are sent in + with incorrect mixed indentation. + See: https://github.com/PyCQA/isort/issues/1575 + """ + assert isort.code(""" +import os + import os + """) == """ +import os +""" + +