diff --git a/test/bytecode_3.3_run/04_def_annotate.pyc b/test/bytecode_3.3_run/04_def_annotate.pyc index a0462659..7014aa44 100644 Binary files a/test/bytecode_3.3_run/04_def_annotate.pyc and b/test/bytecode_3.3_run/04_def_annotate.pyc differ diff --git a/test/bytecode_3.4/04_def_annotate.pyc b/test/bytecode_3.4/04_def_annotate.pyc deleted file mode 100644 index 376e2575..00000000 Binary files a/test/bytecode_3.4/04_def_annotate.pyc and /dev/null differ diff --git a/test/bytecode_3.4_run/04_def_annotate.pyc b/test/bytecode_3.4_run/04_def_annotate.pyc deleted file mode 100644 index 89efdcd0..00000000 Binary files a/test/bytecode_3.4_run/04_def_annotate.pyc and /dev/null differ diff --git a/uncompyle6/parsers/parse3.py b/uncompyle6/parsers/parse3.py index a77f1474..852c4aae 100644 --- a/uncompyle6/parsers/parse3.py +++ b/uncompyle6/parsers/parse3.py @@ -1064,19 +1064,13 @@ class Python3Parser(PythonParser): # Normally we remove EXTENDED_ARG from the opcodes, but in the case of # annotated functions can use the EXTENDED_ARG tuple to signal we have an annotated function. # Yes this is a little hacky - if self.version < 3.5: - # 3.3 and 3.4 put kwargs before pos_arg + if self.version == 3.3: + # 3.3 puts kwargs before pos_arg pos_kw_tuple = (('kwargs ' * args_kw), ('pos_arg ' * (args_pos))) else: - # 3.5 puts pos_arg before kwargs + # 3.4 and 3.5puts pos_arg before kwargs pos_kw_tuple = (('pos_arg ' * (args_pos), ('kwargs ' * args_kw))) - if self.version < 3.5: - # 3.3 and 3.4 put kwargs before pos_arg - pos_kw_tuple = (('kwargs ' * args_kw), ('pos_arg ' * (args_pos))) - else: - # 3.5 puts pos_arg before kwargs - pos_kw_tuple = (('pos_arg ' * (args_pos), ('kwargs ' * args_kw))) - rule = ('mkfunc_annotate ::= %s%s%s%sannotate_tuple LOAD_CONST LOAD_STR EXTENDED_ARG %s' % + rule = ('mkfunc_annotate ::= %s%s%sannotate_tuple LOAD_CONST LOAD_STR EXTENDED_ARG %s' % ( pos_kw_tuple[0], pos_kw_tuple[1], ('call ' * (annotate_args-1)), opname)) self.add_unique_rule(rule, opname, token.attr, customize) diff --git a/uncompyle6/semantics/customize3.py b/uncompyle6/semantics/customize3.py index ba8184bc..1a02056c 100644 --- a/uncompyle6/semantics/customize3.py +++ b/uncompyle6/semantics/customize3.py @@ -88,7 +88,7 @@ def customize_for_version3(self, version): code_node = build_class[1][0] class_name = code_node.attr.co_name else: - class_name = node[1][0].pattr + class_name = node[1][0].attr build_class = node[0] assert 'mkfunc' == build_class[1] diff --git a/uncompyle6/semantics/make_function.py b/uncompyle6/semantics/make_function.py index 0b4afdb1..7727b805 100644 --- a/uncompyle6/semantics/make_function.py +++ b/uncompyle6/semantics/make_function.py @@ -216,7 +216,7 @@ def make_function3_annotate(self, node, is_lambda, nested=1, if (line_number != self.line_number): self.write("\n" + indent) line_number = self.line_number - kn = n[0].pattr + kn = n[0].attr if kn in annotate_tuple[0].attr: p = annotate_tuple[0].attr.index(star_arg) + pos_args + kw_args self.write('%s: ' % kn) diff --git a/uncompyle6/semantics/pysource.py b/uncompyle6/semantics/pysource.py index cfa5453b..8b4b67f5 100644 --- a/uncompyle6/semantics/pysource.py +++ b/uncompyle6/semantics/pysource.py @@ -1436,7 +1436,7 @@ class SourceWalker(GenericASTTraversal, object): n = len(node) - 1 if node.kind != 'expr': if node == 'kwarg': - self.template_engine(('(%[0]{pattr}=%c)', 1), node) + self.template_engine(('(%[0]{attr}=%c)', 1), node) return kwargs = None