[New-bugs-announce] [issue38681] 2to3 Conversion Result using BlankLine() can be Syntactically Incorrect
Samuel Tatasurya
report at bugs.python.org
Mon Nov 4 02:12:47 EST 2019
New submission from Samuel Tatasurya <tatasurya.samuel at gmail.com>:
Transformation performed by certain fixers (e.g. future, itertools_imports) that causes a statement to be replaced by a blank line will generate a Python file that contains syntax error.
For example, assuming a Python file (foo.py) containing line below:
try:
from itertools import imap
except ImportError:
pass
If we run "itertools_imports" fixer against it:
2to3 -f itertools_imports foo.py
will result in the following:
try:
except ImportError:
pass
which is syntactically incorrect.
Suggestion:
Instead of always replacing such case with BlankLine(), a check should be performed beforehand if the statement to be replaced has any siblings. If no sibling is found, then replace that statement with a "pass" statement instead.
By doing this, Python source files generated by 2to3 are more readily runnable right after the transformation.
----------
components: 2to3 (2.x to 3.x conversion tool)
messages: 355926
nosy: Samuel Tatasurya
priority: normal
severity: normal
status: open
title: 2to3 Conversion Result using BlankLine() can be Syntactically Incorrect
type: enhancement
versions: Python 3.9
_______________________________________
Python tracker <report at bugs.python.org>
<https://bugs.python.org/issue38681>
_______________________________________
More information about the New-bugs-announce
mailing list