summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTimothy Crosley <timothy.crosley@gmail.com>2019-02-23 15:13:03 -0800
committerTimothy Crosley <timothy.crosley@gmail.com>2019-02-23 15:13:03 -0800
commitb4405d829b8ccc7807485819930b55b5661807e5 (patch)
tree08223e4ff3614d281814afa5a7e2b77c28ef44cb
parent90fdb6b1cb0b93418f2b5c3ffeb4fa224bb72de7 (diff)
downloadisort-feature/fix-issue-576.tar.gz
Implement fix for 577, relative imports incorrectly sortedfeature/fix-issue-576
-rw-r--r--isort/isort.py8
-rw-r--r--test_isort.py6
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