summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTimothy Edmund Crosley <timothy.crosley@gmail.com>2016-03-26 21:29:07 -0700
committerTimothy Edmund Crosley <timothy.crosley@gmail.com>2016-03-26 21:29:07 -0700
commit0592fe9265e5b78106cf918784aee907bb4e3395 (patch)
tree53049a7caf708f2e127afd946818b5b8d9729d18
parent4620fd9dc9f19e30c8a08234ca434b4f273cc907 (diff)
parentf915e81bb44e1ede6b0ed61aaaf180c7564ebc4a (diff)
downloadisort-0592fe9265e5b78106cf918784aee907bb4e3395.tar.gz
Merge pull request #400 from danpalmer/globbed-forced-separate
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')