MCPcopy
hub / github.com/rocky/python-uncompyle6 / __init__

Method __init__

uncompyle6/scanners/scanner3.py:59–207  ·  view source on GitHub ↗
(self, version, show_asm=None, is_pypy=False)

Source from the content-addressed store, hash-verified

57
58class Scanner3(Scanner):
59 def __init__(self, version, show_asm=None, is_pypy=False):
60 super(Scanner3, self).__init__(version, show_asm, is_pypy)
61
62 # Create opcode classification sets
63 # Note: super initialization above initializes self.opc
64
65 # For ops that start SETUP_ ... we will add COME_FROM with these names
66 # at the their targets.
67 # Some blocks and END_ statements. And they can start
68 # a new statement
69 if self.version < (3, 8):
70 setup_ops = [
71 self.opc.SETUP_LOOP,
72 self.opc.SETUP_EXCEPT,
73 self.opc.SETUP_FINALLY,
74 ]
75 self.setup_ops_no_loop = frozenset(setup_ops) - frozenset(
76 [self.opc.SETUP_LOOP]
77 )
78 else:
79 setup_ops = [self.opc.SETUP_FINALLY]
80 self.setup_ops_no_loop = frozenset(setup_ops)
81
82 if self.version >= (3, 2):
83 setup_ops.append(self.opc.SETUP_WITH)
84 self.setup_ops = frozenset(setup_ops)
85
86 if self.version[:2] == (3, 0):
87 self.pop_jump_tf = frozenset(
88 [self.opc.JUMP_IF_FALSE, self.opc.JUMP_IF_TRUE]
89 )
90 self.not_continue_follow = ("END_FINALLY", "POP_BLOCK", "POP_TOP")
91 else:
92 self.pop_jump_tf = frozenset([self.opc.PJIF, self.opc.PJIT])
93 self.not_continue_follow = ("END_FINALLY", "POP_BLOCK")
94
95 # Opcodes that can start a statement.
96 statement_opcodes = [
97 self.opc.POP_BLOCK,
98 self.opc.STORE_FAST,
99 self.opc.DELETE_FAST,
100 self.opc.STORE_DEREF,
101 self.opc.STORE_GLOBAL,
102 self.opc.DELETE_GLOBAL,
103 self.opc.STORE_NAME,
104 self.opc.DELETE_NAME,
105 self.opc.STORE_ATTR,
106 self.opc.DELETE_ATTR,
107 self.opc.STORE_SUBSCR,
108 self.opc.POP_TOP,
109 self.opc.DELETE_SUBSCR,
110 self.opc.END_FINALLY,
111 self.opc.RETURN_VALUE,
112 self.opc.RAISE_VARARGS,
113 self.opc.PRINT_EXPR,
114 self.opc.JUMP_ABSOLUTE,
115 ]
116

Callers

nothing calls this directly

Calls 2

addMethod · 0.80
appendMethod · 0.45

Tested by

no test coverage detected