py-backwards
py-backwards copied to clipboard
`extend` inside `else` statement fails
Snippets like:
@snippet
def import_rewrite(previous, current):
if __import__('six').PY2:
extend(current)
else:
extend(previous)
Are failing with:
In [47]: import_rewrite.get_body(previous=[], current=[])
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-47-0b1498ca8fd1> in <module>()
----> 1 import_rewrite.get_body(previous=[], current=[])
/home/nvbn/exp/py-backwards/py_backwards/utils/snippet.py in get_body(self, **snippet_kwargs)
125 tree = ast.parse(source)
126 variables = self._get_variables(tree, snippet_kwargs)
--> 127 extend_tree(tree, variables)
128 VariablesReplacer.replace(tree, variables)
129 return tree.body[0].body # type: ignore
/home/nvbn/exp/py-backwards/py_backwards/utils/snippet.py in extend_tree(tree, variables)
94 for node in find(tree, ast.Call):
95 if isinstance(node.func, ast.Name) and node.func.id == 'extend':
---> 96 parent, index = get_non_exp_parent_and_index(tree, node)
97 replace_at(index, parent, variables[node.args[0].id]) # type: ignore
98
/home/nvbn/exp/py-backwards/py_backwards/utils/tree.py in get_non_exp_parent_and_index(tree, node)
33 parent = get_parent(tree, parent)
34
---> 35 return parent, parent.body.index(node) # type: ignore
36
37
ValueError: <_ast3.Expr object at 0x7f8715d4d668> is not in list