Open
Description
Simple typehints seem to be supported, but others cause bowler to crash. For example,
foo.py:
import typing
def foo(bar: typing.List[str]):
pass
Running
bowler.Query('foo.py').select_function('foo').add_argument('baz', 1).diff()
Produces
Skipping foo.py: failed to transform because 'Node' object has no attribute 'value'
Traceback (most recent call last):
File "~/.pyenv/versions/pnl368/lib/python3.6/site-packages/bowler/tool.py", line 209, in refactor_queue
hunks = self.refactor_file(filename)
File "~/.pyenv/versions/pnl368/lib/python3.6/site-packages/bowler/tool.py", line 171, in refactor_file
tree = self.refactor_string(input, filename)
File "~/.pyenv/versions/pnl368/lib/python3.6/site-packages/fissix/refactor.py", line 377, in refactor_string
self.refactor_tree(tree, name)
File "~/.pyenv/versions/pnl368/lib/python3.6/site-packages/fissix/refactor.py", line 417, in refactor_tree
self.traverse_by(self.bmi_post_order_heads, tree.post_order())
File "~/.pyenv/versions/pnl368/lib/python3.6/site-packages/fissix/refactor.py", line 493, in traverse_by
new = fixer.transform(node, results)
File "~/.pyenv/versions/pnl368/lib/python3.6/site-packages/bowler/query.py", line 962, in transform
returned_node = callback(node, capture, filename)
File "~/.pyenv/versions/pnl368/lib/python3.6/site-packages/bowler/query.py", line 746, in add_argument_transform
spec = FunctionSpec.build(node, capture)
File "~/.pyenv/versions/pnl368/lib/python3.6/site-packages/bowler/imr.py", line 214, in build
arguments = FunctionArgument.build_list(args, is_def)
File "~/.pyenv/versions/pnl368/lib/python3.6/site-packages/bowler/imr.py", line 89, in build_list
arg = cls.build(leaf, is_def)
File "~/.pyenv/versions/pnl368/lib/python3.6/site-packages/bowler/imr.py", line 50, in build
kwargs["annotation"] = leaf.children[-1].value
AttributeError: 'Node' object has no attribute 'value'
AttributeError: 'Node' object has no attribute 'value'
<bowler.query.Query object at 0x7fe8de0d8860>
While replacing typing.List[str]
with just str
produces the expected result