summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTimothy Crosley <timothy.crosley@gmail.com>2019-12-04 23:34:50 -0800
committerTimothy Crosley <timothy.crosley@gmail.com>2019-12-04 23:34:50 -0800
commitc805531052e7aa6ecceb595e134f76c68bae2902 (patch)
tree3290a1470199156fb181ba54c1a1a03d51e182a9
parentf02a2a09601d667084778beeaad628fe8544f680 (diff)
downloadisort-c805531052e7aa6ecceb595e134f76c68bae2902.tar.gz
First semi-accurate import sectionining
-rw-r--r--isort/parse.py17
1 files changed, 11 insertions, 6 deletions
diff --git a/isort/parse.py b/isort/parse.py
index c4614efe..9c553643 100644
--- a/isort/parse.py
+++ b/isort/parse.py
@@ -474,7 +474,7 @@ def identify_contiguous_imports(
):
"""Parses stream identifying sections of contiguous imports"""
output_stream = StringIO() if output_stream is None else output_stream
- import_section = []
+ import_section: str = ""
in_quote: str = ""
first_comment_index_start: int = -1
first_comment_index_end: int = -1
@@ -506,16 +506,21 @@ def identify_contiguous_imports(
if not in_quote:
stripped_line = line.strip()
if not stripped_line or stripped_line.startswith("#"):
- import_section.append(line)
+ import_section += line
elif stripped_line.startswith(IMPORT_START_IDENTIFIERS):
- import_section.append(line)
+ import_section += line
else:
not_imports = True
if not_imports:
- for import_line in import_section:
- output_stream.write("AN IMPORT")
- output_stream.write(config.line_ending or '\n')
+ if import_section:
+ if not import_section.strip() or not ("from" in import_section or "import" in import_section):
+ output_stream.write(import_section)
+ else:
+ for line in import_section.split(config.line_ending or '\n'):
+ output_stream.write("AN IMPORT")
+ output_stream.write(config.line_ending or '\n')
+ import_section = ""
output_stream.write(line)
not_imports = False