diff options
author | Dan Palmer <dan@danpalmer.me> | 2016-03-22 14:19:27 +0000 |
---|---|---|
committer | Dan Palmer <dan@danpalmer.me> | 2016-03-22 14:19:27 +0000 |
commit | f915e81bb44e1ede6b0ed61aaaf180c7564ebc4a (patch) | |
tree | 202ad79303b93f3731b3c840a089fc74348cb2ac | |
parent | 22ee0e7e755b2ab2a8e40f4a9983b467b88c941d (diff) | |
download | isort-f915e81bb44e1ede6b0ed61aaaf180c7564ebc4a.tar.gz |
Add support for globbing in forced_separate
-rw-r--r-- | isort/isort.py | 8 | ||||
-rw-r--r-- | test_isort.py | 22 |
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') |