diff --git a/dev_scripts/cflow.py b/dev_scripts/cflow.py index 47bd023..72a641c 100644 --- a/dev_scripts/cflow.py +++ b/dev_scripts/cflow.py @@ -97,16 +97,16 @@ def print_results(a: Path, b: Path, result: Result, results: list[tuple[bool, st a_text = a.read_text() b_text = b.read_text() console = rich.console.Console(highlight=False) - console.print("=== original file ===", style='green bold') + console.print("=== original file ===", style="green bold") console.print(a_text) - console.print("\n=== reconstructed file ===", style='green bold') + console.print("\n=== reconstructed file ===", style="green bold") console.print(b_text) - console.print("\n=== equivalence report ===", style='green bold') + console.print("\n=== equivalence report ===", style="green bold") if results: for success, name in results: - console.print(name, style='' if success else 'red bold underline') + console.print(name, style="" if success else "red bold underline") else: - console.print(result, style='red bold underline') + console.print(result, style="red bold underline") def get_unused(a: Path, _=True): diff --git a/pylingual/control_flow_reconstruction/templates/Exception.py b/pylingual/control_flow_reconstruction/templates/Exception.py index b8ce4f5..3eaba03 100644 --- a/pylingual/control_flow_reconstruction/templates/Exception.py +++ b/pylingual/control_flow_reconstruction/templates/Exception.py @@ -35,6 +35,7 @@ class Except3_11(ControlFlowTemplate): if x := BareExcept3_11.try_match(cfg, node): return x + class Except3_10(ControlFlowTemplate): @classmethod @override @@ -48,6 +49,7 @@ class Except3_10(ControlFlowTemplate): if isinstance(node, Except3_10): return node + @register_template(0, 0, *versions_from(3, 12)) class Try3_12(ControlFlowTemplate): template = T( @@ -115,6 +117,7 @@ class TryElse3_12(ControlFlowTemplate): {try_else} """ + @register_template(0, 1, (3, 10)) class Try3_10(ControlFlowTemplate): template = T( @@ -146,6 +149,7 @@ class Try3_10(ControlFlowTemplate): {except_body} """ + @register_template(0, 0, (3, 10)) class TryElse3_10(ControlFlowTemplate): template = T( @@ -190,6 +194,7 @@ class ExcBody3_10(ControlFlowTemplate): return x return node + class NamedExc3_10(ExcBody3_10): template = T( header=N("body", None).with_cond(with_instructions("POP_TOP", "STORE_FAST")), @@ -226,6 +231,7 @@ class BareExcept3_10(Except3_10): {except_body} """ + class ExceptExc3_10(Except3_10): template = T( except_header=N("body", "falsejump"), @@ -253,6 +259,7 @@ class ExceptExc3_10(Except3_10): {falsejump} """ + @register_template(2, 50, *versions_from(3, 10)) class TryFinally3_10(ControlFlowTemplate): template = T( @@ -280,8 +287,6 @@ class TryFinally3_10(ControlFlowTemplate): f = BlockTemplate([f]) if not isinstance(g, BlockTemplate): g = BlockTemplate([g]) - #if isinstance(g.members[0], InstTemplate) and g.members[0].inst.opname == "PUSH_EXC_INFO": - # g.members.pop(0) if isinstance(g.members[-1], InstTemplate) and g.members[-1].inst.opname == "RERAISE": g.members.pop() x = None @@ -329,6 +334,7 @@ class TryFinally3_10(ControlFlowTemplate): return list(chain(header, self.line("try:"), body, self.line("finally:"), in_finally, after)) + class BareExcept3_11(Except3_11): template = T( except_body=N("except_footer", None, "reraise"),