Repository: timothycrosley/isort (python)

Issue:
Might create blank line at start of file with comments
Running `isort --diff` with the following will add a blank line at the start:
```python
# comment
import os
# comment2
import sys
```

```diff
@@ -1,4 +1,5 @@
+
+import os
 # comment
-import os
 # comment2
 import sys
```

The result then looks like this:
```python

import os
# comment
# comment2
import sys
```

Pull request description:
Fix issue #889: Isort should not add blank lines to beginning of file
Closes #889 

Patch:
diff --git a/CHANGELOG.md b/CHANGELOG.md
index c5826060..93d09a4a 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -3,7 +3,8 @@ Changelog
 ### 4.3.13 - March 6, 2019 - hot fix release
 - Fixed the inability to accurately determine import section when a mix of conda and virtual environments are used.
 - Fixed some output being printed even when --quiet mode is enabled.
-- Fixed issue #890 interoperability with PyCharm by allowing case sensitive non type grouped sorting
+- Fixed issue #890 interoperability with PyCharm by allowing case sensitive non type grouped sorting.
+- Fixed issue #889 under some circumstances isort will incorrectly add a new line at the beginning of a file.
 
 ### 4.3.12 - March 6, 2019 - hot fix release
 - Fix error caused when virtual environment not detected
diff --git a/isort/isort.py b/isort/isort.py
index 22e5d019..fa55dcca 100644
--- a/isort/isort.py
+++ b/isort/isort.py
@@ -993,7 +993,7 @@ class SortImports(object):
                                    'isort:imports-' not in last):
                                 self.comments['above']['straight'].setdefault(module, []).insert(0,
                                                                                                  self.out_lines.pop(-1))
-                                if len(self.out_lines) > 0:
+                                if len(self.out_lines) > 0 and len(self.out_lines) != self._first_comment_index_end:
                                     last = self.out_lines[-1].rstrip()
                                 else:
                                     last = ""


Test patch:
diff --git a/test_isort.py b/test_isort.py
index c4b3c241..998f32c5 100644
--- a/test_isort.py
+++ b/test_isort.py
@@ -2866,3 +2866,11 @@ def test_ensure_support_for_non_typed_but_cased_alphabetic_sort_issue_890():
                        'from pkg import recorder\n')
     assert SortImports(file_contents=test_input, case_sensitive=True, order_by_type=False,
                        force_single_line=True).output == expected_output
+
+
+def test_to_ensure_empty_line_not_added_to_file_start_issue_889():
+    test_input = ('# comment\n'
+                  'import os\n'
+                  '# comment2\n'
+                  'import sys\n')
+    assert SortImports(file_contents=test_input).output == test_input