Issue 25661: tokenize.untokenize does not maintain the order of tabbed indentations and leading spaces (original) (raw)
Here's a simple test case that shows the bug:
python
Python 2.7.9 (default, Apr 2 2015, 14:49:18) [GCC 4.9.2] on linux2 Type "help", "copyright", "credits" or "license" for more information.
import StringIO, tokenize code = "if False:\n\tx=3\n \ty=3\n" g = list(tokenize.generate_tokens(StringIO.StringIO(code).readline)) assert tokenize.untokenize(g) == code Traceback (most recent call last): File "", line 1, in AssertionError
This is very similar to: https://bugs.python.org/issue20387
I'm using the patch that was provided to fix that bug, but with the patch this slightly different test case still fails. On the last line of "code" from my example, where the line begins with a single space then a tab, the untokenized string reverses the order, and the tab precedes the space. This generates code that will throw an IndentationError if run.