changeset: 96709:ff47efeeed48 branch: 3.4 user: Dingyuan Wang date: Mon Jun 22 10:01:12 2015 +0800 files: Lib/tokenize.py description: Issue #20387: Restore retention of indentation during untokenize. diff -r 49323e5f6391 -r ff47efeeed48 Lib/tokenize.py --- a/Lib/tokenize.py Thu Jun 25 22:42:24 2015 -0400 +++ b/Lib/tokenize.py Mon Jun 22 10:01:12 2015 +0800 @@ -244,6 +244,8 @@ def untokenize(self, iterable): it = iter(iterable) + indents = [] + startline = False for t in it: if len(t) == 2: self.compat(t, it) @@ -254,6 +256,21 @@ continue if tok_type == ENDMARKER: break + if tok_type == INDENT: + indents.append(token) + continue + elif tok_type == DEDENT: + indents.pop() + self.prev_row, self.prev_col = end + continue + elif tok_type in (NEWLINE, NL): + startline = True + elif startline and indents: + indent = indents[-1] + if start[1] >= len(indent): + self.tokens.append(indent) + self.prev_col = len(indent) + startline = False self.add_whitespace(start) self.tokens.append(token) self.prev_row, self.prev_col = end