diff --git a/CHANGELOG.md b/CHANGELOG.md index 8a67e349b..217e2bef9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,7 +6,8 @@ Find out more about isort's release policy [here](https://pycqa.github.io/isort/ ### 5.9.0 TBD - Fixed (https://github.com/PyCQA/isort/pull/1695) added imports being added to doc string in some cases. - - Fixed (https://github.com/PyCQA/isort/pull/1714) in rare case line continuation combined with tab can output invalid code. + - Fixed (https://github.com/PyCQA/isort/pull/1714) in rare cases line continuation combined with tabs can output invalid code. + - Fixed (https://github.com/PyCQA/isort/pull/1726) isort ignores reverse_sort when force_sort_within_sections is true. - Implemented #1697: Provisional support for PEP 582: skip `__pypackages__` directories by default. - Implemented #1705: More intuitive handling of isort:skip_file comments on streams. diff --git a/isort/output.py b/isort/output.py index 61c2e30ec..fb74ef735 100644 --- a/isort/output.py +++ b/isort/output.py @@ -108,6 +108,7 @@ def sorted_imports( new_section_output = sorting.naturally( new_section_output, key=partial(sorting.section_key, config=config), + reverse=config.reverse_sort, ) # uncollapse comments diff --git a/tests/unit/test_ticketed_features.py b/tests/unit/test_ticketed_features.py index a0e5e1640..17aaf166b 100644 --- a/tests/unit/test_ticketed_features.py +++ b/tests/unit/test_ticketed_features.py @@ -1082,3 +1082,36 @@ def test_isort_can_push_star_imports_above_others_issue_1504(): from ._bar import All, Any, Not """ ) + + +def test_isort_can_combine_reverse_sort_with_force_sort_within_sections_issue_1726(): + """isort should support reversing import order even with force sort within sections turned on. + See: https://github.com/PyCQA/isort/issues/1726 + """ + assert ( + isort.code( + """ +import blaaa +from bl4aaaaaaaaaaaaaaaa import r +import blaaaaaaaaaaaa +import bla +import blaaaaaaa +from bl1aaaaaaaaaaaaaa import this_is_1 +from bl2aaaaaaa import THIIIIIIIIIIIISS_is_2 +from bl3aaaaaa import less +""", + length_sort=True, + reverse_sort=True, + force_sort_within_sections=True, + ) + == """ +from bl2aaaaaaa import THIIIIIIIIIIIISS_is_2 +from bl1aaaaaaaaaaaaaa import this_is_1 +from bl4aaaaaaaaaaaaaaaa import r +from bl3aaaaaa import less +import blaaaaaaaaaaaa +import blaaaaaaa +import blaaa +import bla +""" + )