@@ -77,38 +77,44 @@ def normalize_lines(source):
77
77
"""
78
78
lines = source .splitlines (False )
79
79
# Find out if we have any trailing blank lines
80
- has_blank_lines = len (lines [- 1 ].strip ()) == 0 or source .endswith (os .linesep )
80
+ if len (lines [- 1 ].strip ()) == 0 or source .endswith ('\n ' ):
81
+ trailing_newline = '\n '
82
+ else :
83
+ trailing_newline = ''
81
84
82
85
# Step 1: Remove empty lines.
83
86
tokens = _tokenize (source )
84
87
newlines_indexes_to_remove = (spos [0 ] for (toknum , tokval , spos , epos , line ) in tokens
85
- if len (line .strip ()) == 0 and token .tok_name [toknum ] == 'NL' and spos [0 ] == epos [0 ])
88
+ if len (line .strip ()) == 0
89
+ and token .tok_name [toknum ] == 'NL'
90
+ and spos [0 ] == epos [0 ])
86
91
87
92
for line_number in reversed (list (newlines_indexes_to_remove )):
88
93
del lines [line_number - 1 ]
89
94
90
95
# Step 2: Add blank lines between each global statement block.
91
96
# A consequtive single lines blocks of code will be treated as a single statement,
92
97
# just to ensure we do not unnecessarily add too many blank lines.
93
- source = os . linesep .join (lines )
98
+ source = ' \n ' .join (lines )
94
99
tokens = _tokenize (source )
95
100
dedent_indexes = (spos [0 ] for (toknum , tokval , spos , epos , line ) in tokens
96
101
if toknum == token .DEDENT and _indent_size (line ) == 0 )
97
102
98
103
global_statement_ranges = _get_global_statement_blocks (source , lines )
99
-
100
- for line_number in filter (lambda x : x > 1 , map ( operator . itemgetter ( 0 ), reversed ( global_statement_ranges )) ):
104
+ start_positions = map ( operator . itemgetter ( 0 ), reversed ( global_statement_ranges ))
105
+ for line_number in filter (lambda x : x > 1 , start_positions ):
101
106
lines .insert (line_number - 1 , '' )
102
107
103
- sys .stdout .write (os . linesep . join (lines ) + ( os . linesep if has_blank_lines else '' ) )
108
+ sys .stdout .write (' \n ' . join (lines ) + trailing_newline )
104
109
sys .stdout .flush ()
105
110
106
111
107
112
if __name__ == '__main__' :
108
113
contents = sys .argv [1 ]
109
114
try :
110
115
default_encoding = sys .getdefaultencoding ()
111
- contents = contents .encode (default_encoding , 'surrogateescape' ).decode (default_encoding , 'replace' )
116
+ encoded_contents = contents .encode (default_encoding , 'surrogateescape' )
117
+ contents = encoded_contents .decode (default_encoding , 'replace' )
112
118
except (UnicodeError , LookupError ):
113
119
pass
114
120
if isinstance (contents , bytes ):
0 commit comments