summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Palmer <dan@danpalmer.me>2016-03-22 14:19:27 +0000
committerDan Palmer <dan@danpalmer.me>2016-03-22 14:19:27 +0000
commitf915e81bb44e1ede6b0ed61aaaf180c7564ebc4a (patch)
tree202ad79303b93f3731b3c840a089fc74348cb2ac
parent22ee0e7e755b2ab2a8e40f4a9983b467b88c941d (diff)
downloadisort-f915e81bb44e1ede6b0ed61aaaf180c7564ebc4a.tar.gz
Add support for globbing in forced_separate
-rw-r--r--isort/isort.py8
-rw-r--r--test_isort.py22
2 files changed, 29 insertions, 1 deletions
diff --git a/isort/isort.py b/isort/isort.py
index cc956eb1..f770fb52 100644
--- a/isort/isort.py
+++ b/isort/isort.py
@@ -36,6 +36,7 @@ import sys
from collections import namedtuple
from datetime import datetime
from difflib import unified_diff
+from fnmatch import fnmatch
from glob import glob
from sys import path as PYTHONPATH
from sys import stdout
@@ -212,7 +213,12 @@ class SortImports(object):
"""
for forced_separate in self.config['forced_separate']:
- if moduleName.startswith(forced_separate) or moduleName.startswith("." + forced_separate):
+ # Ensure all forced_separate patterns will match to end of string
+ pathGlob = forced_separate
+ if not forced_separate.endswith('*'):
+ pathGlob = '%s*' % forced_separate
+
+ if fnmatch(moduleName, pathGlob) or fnmatch(moduleName, '.' + pathGlob):
return forced_separate
if moduleName.startswith("."):
diff --git a/test_isort.py b/test_isort.py
index 06c06ca3..bf794a2e 100644
--- a/test_isort.py
+++ b/test_isort.py
@@ -1648,3 +1648,25 @@ def test_lines_between_sections():
'from bar import baz\n')
assert SortImports(file_contents=test_input, lines_between_sections=2).output == ('import os\n\n\n'
'from bar import baz\n')
+
+def test_forced_sepatate_globs():
+ """Test to ensure that forced_separate glob matches lines"""
+ test_input = ('import os\n'
+ '\n'
+ 'from myproject.foo.models import Foo\n'
+ '\n'
+ 'from myproject.utils import util_method\n'
+ '\n'
+ 'from myproject.bar.models import Bar\n'
+ '\n'
+ 'import sys\n')
+ test_output = SortImports(file_contents=test_input, forced_separate=['*.models'],
+ line_length=120).output
+
+ assert test_output == ('import os\n'
+ 'import sys\n'
+ '\n'
+ 'from myproject.utils import util_method\n'
+ '\n'
+ 'from myproject.bar.models import Bar\n'
+ 'from myproject.foo.models import Foo\n')