uncompyle
uncompyle copied to clipboard
IMPORT_FROM only takes one LOAD_ATTR
Copied from: http://code.google.com/p/unpyc/issues/detail?id=9
decompiling a program that uses:
import a.b.c.d as e
will fail, because the code expects no more then one LOAD_ATTR after a IMPORT_FROM statement.
A work around is to add the following, up to the number of LOAD_ATTR lines you are seeing - I don't currently see a way to tell unpyc to accept any number of them. Starting at line 189 in Parser.py, add: import_as ::= IMPORT_NAME LOAD_ATTR LOAD_ATTR designator import_as ::= IMPORT_NAME LOAD_ATTR LOAD_ATTR LOAD_ATTR designator
etc, etc, etc
Yes, I know this doesn't fit the 0,1,n pattern, but it is a quick fix.
Later uncompyle2/uncompyle6 handle this with a list. See https://github.com/rocky/python-uncompyle6/blob/master/uncompyle6/parser.py#L391