Skip to content

Commit 6911091

Browse files
committed
Always split on parsed.line_separator
1 parent 3808b70 commit 6911091

2 files changed

Lines changed: 12 additions & 7 deletions

File tree

‎isort/core.py‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -101,9 +101,9 @@ def _float_to_top(
101101
parsed = parse.file_contents(current, config=config)
102102
verbose_output += parsed.verbose_output
103103
extra_space = ""
104-
while before.endswith(("\n", "\r")):
104+
while before.endswith(parsed.line_separator):
105105
extra_space += parsed.line_separator
106-
before = before[:-2] if before.endswith("\r\n") else before[:-1]
106+
before = before[: -len(parsed.line_separator)]
107107
extra_space = extra_space.replace(parsed.line_separator, "", 1)
108108
sorted_output = output.sorted_imports(
109109
parsed, config, extension, import_type="import"

‎tests/unit/test_regressions.py‎

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import ast
44
from io import BytesIO, StringIO, TextIOWrapper
5+
from pathlib import Path
56

67
import pytest
78

@@ -2036,7 +2037,9 @@ def test_check_code_should_not_false_positive_with_float_to_top_and_add_imports(
20362037
"# isort: off\nimport z\nimport a\n# isort: on\n",
20372038
],
20382039
)
2039-
def test_float_to_top_check_accepts_unchanged_sections_issue_2681(line_ending, boundary):
2040+
def test_float_to_top_check_accepts_unchanged_sections_issue_2681(
2041+
line_ending: str, boundary: str
2042+
) -> None:
20402043
source = ("import os\n\n" + boundary + "\nimport sys\n").replace("\n", line_ending)
20412044

20422045
assert isort.code(source, float_to_top=True) == source
@@ -2045,7 +2048,9 @@ def test_float_to_top_check_accepts_unchanged_sections_issue_2681(line_ending, b
20452048

20462049
@pytest.mark.parametrize("line_ending", ["\n", "\r\n"])
20472050
@pytest.mark.parametrize("blank_lines", [0, 1, 3])
2048-
def test_float_to_top_preserves_boundary_spacing_issue_2681(line_ending, blank_lines):
2051+
def test_float_to_top_preserves_boundary_spacing_issue_2681(
2052+
line_ending: str, blank_lines: int
2053+
) -> None:
20492054
source = ("import os\n" + "\n" * blank_lines + "# isort: split\n").replace("\n", line_ending)
20502055
result = _float_to_top(StringIO(source), [], isort.Config(float_to_top=True), "py")
20512056

@@ -2054,7 +2059,7 @@ def test_float_to_top_preserves_boundary_spacing_issue_2681(line_ending, blank_l
20542059

20552060

20562061
@pytest.mark.parametrize("line_ending", ["\n", "\r\n"])
2057-
def test_float_to_top_check_detects_unsorted_sections_issue_2681(line_ending):
2062+
def test_float_to_top_check_detects_unsorted_sections_issue_2681(line_ending: str) -> None:
20582063
source = "import sys\nimport os\n\n# isort: split\n\nimport a\n".replace("\n", line_ending)
20592064
expected = "import os\nimport sys\n\n# isort: split\n\nimport a\n".replace("\n", line_ending)
20602065

@@ -2064,7 +2069,7 @@ def test_float_to_top_check_detects_unsorted_sections_issue_2681(line_ending):
20642069

20652070

20662071
@pytest.mark.parametrize("configured_ending", ["\n", "\r\n"])
2067-
def test_float_to_top_configured_line_ending_issue_2681(configured_ending):
2072+
def test_float_to_top_configured_line_ending_issue_2681(configured_ending: str) -> None:
20682073
source = "import os\r\n\r\n# isort: split\r\n\r\nimport sys\r\n"
20692074
expected = source.replace("\r\n", configured_ending)
20702075
result = isort.code(source, float_to_top=True, line_ending=configured_ending)
@@ -2073,7 +2078,7 @@ def test_float_to_top_configured_line_ending_issue_2681(configured_ending):
20732078
assert isort.check_code(result, float_to_top=True, line_ending=configured_ending)
20742079

20752080

2076-
def test_float_to_top_cli_check_accepts_crlf_issue_2681(tmp_path):
2081+
def test_float_to_top_cli_check_accepts_crlf_issue_2681(tmp_path: Path) -> None:
20772082
path = tmp_path / "example.py"
20782083
source = b"import os\r\n\r\n# isort: split\r\n\r\nimport sys\r\n"
20792084
path.write_bytes(source)

0 commit comments

Comments
 (0)