diff options
author | Timothy Crosley <timothy.crosley@gmail.com> | 2019-02-23 15:13:03 -0800 |
---|---|---|
committer | Timothy Crosley <timothy.crosley@gmail.com> | 2019-02-23 15:13:03 -0800 |
commit | b4405d829b8ccc7807485819930b55b5661807e5 (patch) | |
tree | 08223e4ff3614d281814afa5a7e2b77c28ef44cb | |
parent | 90fdb6b1cb0b93418f2b5c3ffeb4fa224bb72de7 (diff) | |
download | isort-b4405d829b8ccc7807485819930b55b5661807e5.tar.gz |
Implement fix for 577, relative imports incorrectly sortedfeature/fix-issue-576
-rw-r--r-- | isort/isort.py | 8 | ||||
-rw-r--r-- | test_isort.py | 6 |
2 files changed, 11 insertions, 3 deletions
diff --git a/isort/isort.py b/isort/isort.py index df075bc2..c15b3cb0 100644 --- a/isort/isort.py +++ b/isort/isort.py @@ -255,6 +255,14 @@ class SortImports(object): @staticmethod def _module_key(module_name, config, sub_imports=False, ignore_case=False, section_name=None): + dots = 0 + while module_name.startswith('.'): + dots += 1 + module_name = module_name[1:] + + if dots: + module_name = '{} {}'.format(('.' * dots), module_name) + prefix = "" if ignore_case: module_name = str(module_name).lower() diff --git a/test_isort.py b/test_isort.py index e7999756..1a656c3d 100644 --- a/test_isort.py +++ b/test_isort.py @@ -2718,8 +2718,8 @@ def test_comments_not_removed_issue_576(): def test_inconsistent_relative_imports_issue_577(): - test_input = ('from . import lorem\n' - 'from . import ipsum\n' + test_input = ('from . import ipsum\n' + 'from . import lorem\n' 'from .dolor import consecteur\n' 'from .sit import apidiscing\n' 'from .. import donec\n' @@ -2730,5 +2730,5 @@ def test_inconsistent_relative_imports_issue_577(): 'from ... import dui\n' 'from ...eu import dignissim\n' 'from ...ex import metus\n') - assert SortImports(file_contents=test_input).output == test_input + assert SortImports(file_contents=test_input, force_single_line=True).output == test_input |