diff --git a/uncompyle6/parsers/parse36.py b/uncompyle6/parsers/parse36.py index 92e41e2b..2d429016 100644 --- a/uncompyle6/parsers/parse36.py +++ b/uncompyle6/parsers/parse36.py @@ -19,6 +19,7 @@ class Python36Parser(Python35Parser): return_closure ::= LOAD_CLOSURE DUP_TOP STORE_NAME RETURN_VALUE RETURN_LAST expr ::= LOAD_NAME EXTENDED_ARG + expr ::= LOAD_CONST EXTENDED_ARG fstring_multi ::= fstring_expr_or_strs BUILD_STRING fstring_expr_or_strs ::= fstring_expr_or_str+ diff --git a/uncompyle6/semantics/pysource.py b/uncompyle6/semantics/pysource.py index acb83dd6..01e101a3 100644 --- a/uncompyle6/semantics/pysource.py +++ b/uncompyle6/semantics/pysource.py @@ -1520,10 +1520,21 @@ class SourceWalker(GenericASTTraversal, object): values = node[:-2] # FIXME: Line numbers? for key, value in zip(keys, values): + self.write(sep) self.write(repr(key)) + line_number = self.line_number self.write(':') self.write(self.traverse(value[0])) - self.write(',') + sep = "," + if line_number != self.line_number: + sep += "\n" + self.indent + INDENT_PER_LEVEL[:-1] + line_number = self.line_number + else: + sep += " " + pass + pass + if sep.startswith(",\n"): + self.write(sep[1:]) pass pass else: @@ -1577,6 +1588,9 @@ class SourceWalker(GenericASTTraversal, object): if line_number != self.line_number: sep += "\n" + self.indent + " " line_number = self.line_number + pass + pass + pass if sep.startswith(",\n"): self.write(sep[1:]) self.write('}')