alecthomas / importmagic

A Python library for finding unresolved symbols in Python code, and the corresponding imports
BSD 2-Clause "Simplified" License
120 stars 20 forks source link

Python 3.5: AttributeError: 'Call' object has no attribute 'starargs' #25

Closed jorgenschaefer closed 8 years ago

jorgenschaefer commented 8 years ago

Hello! It seems Python 3.5 changed something so that importmagic does not work anymore on very basic source code:

Python 3.5.0 (default, Oct 15 2015, 19:22:34) 
[GCC 4.9.2] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import importmagic
>>> importmagic.symbols.Scope.from_source('''os.getcwd()''')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/forcer/Projects/impmagic3.5/lib/python3.5/site-packages/importmagic/symbols.py", line 88, in from_source
    visitor.visit(src)
  File "/home/forcer/Projects/impmagic3.5/lib/python3.5/site-packages/importmagic/symbols.py", line 183, in visit
    self.generic_visit(node)
  File "/home/forcer/Programs/pyenv/versions/3.5.0/lib/python3.5/ast.py", line 253, in generic_visit
    self.visit(item)
  File "/home/forcer/Projects/impmagic3.5/lib/python3.5/site-packages/importmagic/symbols.py", line 183, in visit
    self.generic_visit(node)
  File "/home/forcer/Programs/pyenv/versions/3.5.0/lib/python3.5/ast.py", line 255, in generic_visit
    self.visit(value)
  File "/home/forcer/Projects/impmagic3.5/lib/python3.5/site-packages/importmagic/symbols.py", line 178, in visit
    method(node)
  File "/home/forcer/Projects/impmagic3.5/lib/python3.5/site-packages/importmagic/symbols.py", line 374, in visit_Call
    for arg in chain(node.args, node.keywords, filter(None, [node.starargs, node.kwargs])):
AttributeError: 'Call' object has no attribute 'starargs'
alecthomas commented 8 years ago

I'm guessing that is related to PEP 0448. Pretty irritating that it breaks backwards compatibility.

birkenfeld commented 8 years ago

Yeah, the AST was never required to be backwards compatible. In this case I understand it, but there have also been some more gratuitous changes…

birkenfeld commented 8 years ago

I'll have a look at fixing this today, if nobody beats me to it.

alecthomas commented 8 years ago

I just pushed a few minor improvements, but haven't had time to look at the AST changes. If you get a chance it would be really awesome @birkenfeld .