summaryrefslogtreecommitdiff
path: root/isort
diff options
context:
space:
mode:
authorDaniel Hahler <git@thequod.de>2019-03-01 12:16:43 +0100
committerDaniel Hahler <git@thequod.de>2019-03-01 12:17:49 +0100
commit93a04585381defde79323611c9a8f1cc418db71c (patch)
tree685df51c07bf7b2583760259c9f48d90f7834f14 /isort
parentf0badf18389935b0275660f8f3ef9899dc4c4f49 (diff)
downloadisort-93a04585381defde79323611c9a8f1cc418db71c.tar.gz
Fix no_lines_before with empty section
This fixes "no_lines_before" to also be respected from previous empty sections.
Diffstat (limited to 'isort')
-rw-r--r--isort/isort.py22
1 files changed, 15 insertions, 7 deletions
diff --git a/isort/isort.py b/isort/isort.py
index ca28d56d..270f984d 100644
--- a/isort/isort.py
+++ b/isort/isort.py
@@ -558,7 +558,7 @@ class SortImports(object):
sections = ('no_sections', )
output = [] # type: List[str]
- prev_section_has_imports = False
+ pending_lines_before = False
for section in sections:
straight_modules = self.imports[section]['straight']
straight_modules = nsorted(straight_modules, key=lambda key: self._module_key(key, self.config, section_name=section))
@@ -591,8 +591,11 @@ class SortImports(object):
line = line.lower()
return '{0}{1}'.format(section, line)
section_output = nsorted(section_output, key=by_module)
+
+ section_name = section
+ no_lines_before = section_name in self.config['no_lines_before']
+
if section_output:
- section_name = section
if section_name in self.place_imports:
self.place_imports[section_name] = section_output
continue
@@ -602,11 +605,16 @@ class SortImports(object):
section_comment = "# {0}".format(section_title)
if section_comment not in self.out_lines[0:1] and section_comment not in self.in_lines[0:1]:
section_output.insert(0, section_comment)
- if prev_section_has_imports and section_name in self.config['no_lines_before']:
- while output and output[-1].strip() == '':
- output.pop()
- output += section_output + ([''] * self.config['lines_between_sections'])
- prev_section_has_imports = bool(section_output)
+
+ if pending_lines_before or not no_lines_before:
+ output += ([''] * self.config['lines_between_sections'])
+
+ output += section_output
+
+ pending_lines_before = False
+ else:
+ pending_lines_before = pending_lines_before or not no_lines_before
+
while output and output[-1].strip() == '':
output.pop()
while output and output[0].strip() == '':