You've already forked python-uncompyle6
mirror of
https://github.com/rocky/python-uncompyle6.git
synced 2025-08-04 09:22:40 +08:00
Realign make_function3 with master
This commit is contained in:
@@ -627,69 +627,35 @@ def make_function3(self, node, is_lambda, nested=1, code_node=None):
|
|||||||
|
|
||||||
params.reverse() # back to correct order
|
params.reverse() # back to correct order
|
||||||
|
|
||||||
if code_has_star_arg(code):
|
if code_has_star_arg(code):
|
||||||
if self.version > 3.0:
|
if self.version > 3.0:
|
||||||
params.append('*%s' % code.co_varnames[argc + kw_pairs])
|
params.append('*%s' % code.co_varnames[argc + kw_pairs])
|
||||||
else:
|
|
||||||
params.append('*%s' % code.co_varnames[argc])
|
|
||||||
argc += 1
|
|
||||||
|
|
||||||
# dump parameter list (with default values)
|
|
||||||
if is_lambda:
|
|
||||||
self.write("lambda ", ", ".join(params))
|
|
||||||
else:
|
else:
|
||||||
self.write("(", ", ".join(params))
|
params.append('*%s' % code.co_varnames[argc])
|
||||||
# self.println(indent, '#flags:\t', int(code.co_flags))
|
argc += 1
|
||||||
|
|
||||||
|
# dump parameter list (with default values)
|
||||||
|
if is_lambda:
|
||||||
|
self.write("lambda ", ", ".join(params))
|
||||||
|
# If the last statement is None (which is the
|
||||||
|
# same thing as "return None" in a lambda) and the
|
||||||
|
# next to last statement is a "yield". Then we want to
|
||||||
|
# drop the (return) None since that was just put there
|
||||||
|
# to have something to after the yield finishes.
|
||||||
|
# FIXME: this is a bit hoaky and not general
|
||||||
|
if (len(ast) > 1 and
|
||||||
|
self.traverse(ast[-1]) == 'None' and
|
||||||
|
self.traverse(ast[-2]).strip().startswith('yield')):
|
||||||
|
del ast[-1]
|
||||||
|
# Now pick out the expr part of the last statement
|
||||||
|
ast_expr = ast[-1]
|
||||||
|
while ast_expr.kind != 'expr':
|
||||||
|
ast_expr = ast_expr[0]
|
||||||
|
ast[-1] = ast_expr
|
||||||
|
pass
|
||||||
else:
|
else:
|
||||||
if is_lambda:
|
self.write("(", ", ".join(params))
|
||||||
self.write("lambda ")
|
# self.println(indent, '#flags:\t', int(code.co_flags))
|
||||||
# If the last statement is None (which is the
|
|
||||||
# same thing as "return None" in a lambda) and the
|
|
||||||
# next to last statement is a "yield". Then we want to
|
|
||||||
# drop the (return) None since that was just put there
|
|
||||||
# to have something to after the yield finishes.
|
|
||||||
# FIXME: this is a bit hoaky and not general
|
|
||||||
if (len(ast) > 1 and
|
|
||||||
self.traverse(ast[-1]) == 'None' and
|
|
||||||
self.traverse(ast[-2]).strip().startswith('yield')):
|
|
||||||
del ast[-1]
|
|
||||||
# Now pick out the expr part of the last statement
|
|
||||||
ast_expr = ast[-1]
|
|
||||||
while ast_expr.kind != 'expr':
|
|
||||||
ast_expr = ast_expr[0]
|
|
||||||
ast[-1] = ast_expr
|
|
||||||
pass
|
|
||||||
else:
|
|
||||||
self.write("(")
|
|
||||||
pass
|
|
||||||
|
|
||||||
last_line = self.f.getvalue().split("\n")[-1]
|
|
||||||
l = len(last_line)
|
|
||||||
indent = ' ' * l
|
|
||||||
line_number = self.line_number
|
|
||||||
|
|
||||||
if code_has_star_arg(code):
|
|
||||||
self.write('*%s' % code.co_varnames[argc + kw_pairs])
|
|
||||||
argc += 1
|
|
||||||
|
|
||||||
i = len(paramnames) - len(defparams)
|
|
||||||
self.write(", ".join(paramnames[:i]))
|
|
||||||
if i > 0:
|
|
||||||
suffix = ', '
|
|
||||||
else:
|
|
||||||
suffix = ''
|
|
||||||
for n in node:
|
|
||||||
if n == 'pos_arg':
|
|
||||||
self.write(suffix)
|
|
||||||
self.write(paramnames[i] + '=')
|
|
||||||
i += 1
|
|
||||||
self.preorder(n)
|
|
||||||
if (line_number != self.line_number):
|
|
||||||
suffix = ",\n" + indent
|
|
||||||
line_number = self.line_number
|
|
||||||
else:
|
|
||||||
suffix = ', '
|
|
||||||
|
|
||||||
ends_in_comma = False
|
ends_in_comma = False
|
||||||
if kw_args > 0:
|
if kw_args > 0:
|
||||||
|
Reference in New Issue
Block a user