You've already forked python-uncompyle6
mirror of
https://github.com/rocky/python-uncompyle6.git
synced 2025-08-03 08:49:51 +08:00
Fix 3.3 named bug and ...
Parse 3.4 parameters correctly. Allow test_pyenvlib to do 3.3.6
This commit is contained in:
@@ -621,9 +621,12 @@ class Python3Parser(PythonParser):
|
||||
if self.version <= 3.2:
|
||||
rule = ('mkfunc ::= %sload_closure LOAD_CONST kwargs %s'
|
||||
% ('expr ' * args_pos, opname))
|
||||
elif self.version >= 3.3:
|
||||
elif self.version == 3.3:
|
||||
rule = ('mkfunc ::= kwargs %sload_closure LOAD_CONST LOAD_CONST %s'
|
||||
% ('expr ' * args_pos, opname))
|
||||
elif self.version >= 3.4:
|
||||
rule = ('mkfunc ::= %skwargs load_closure LOAD_CONST LOAD_CONST %s'
|
||||
% ('expr ' * args_pos, opname))
|
||||
|
||||
self.add_unique_rule(rule, opname, token.attr, customize)
|
||||
rule = ('mkfunc ::= %sload_closure load_genexpr %s'
|
||||
|
@@ -2053,11 +2053,10 @@ class SourceWalker(GenericASTTraversal, object):
|
||||
|
||||
params.reverse() # back to correct order
|
||||
|
||||
kw_pairs = 0
|
||||
kw_pairs = args_node.attr[1] if self.version >= 3.0 else 0
|
||||
|
||||
if 4 & code.co_flags: # flag 2 -> variable number of args
|
||||
if self.version > 3.0:
|
||||
kw_pairs = args_node.attr[1]
|
||||
params.append('*%s' % code.co_varnames[argc + kw_pairs])
|
||||
else:
|
||||
params.append('*%s' % code.co_varnames[argc])
|
||||
@@ -2084,7 +2083,10 @@ class SourceWalker(GenericASTTraversal, object):
|
||||
for n in node:
|
||||
if n == 'pos_arg':
|
||||
continue
|
||||
self.preorder(n)
|
||||
elif self.version >= 3.4 and n.type != 'kwargs':
|
||||
continue
|
||||
else:
|
||||
self.preorder(n)
|
||||
break
|
||||
pass
|
||||
|
||||
|
Reference in New Issue
Block a user