@@ -45,12 +45,17 @@ def __init__(self, co, scanner, classname=None):
4545
4646class Scanner (object ):
4747
48- def __init__ (self , version ):
48+ def __init__ (self , version , show_asm = False ):
4949 self .version = version
50+ self .show_asm = show_asm
51+
5052 # FIXME: DRY
5153 if version == 2.7 :
5254 from xdis .opcodes import opcode_27
5355 self .opc = opcode_27
56+ elif version == 2.3 :
57+ from xdis .opcodes import opcode_23
58+ self .opc = opcode_23
5459 elif version == 2.6 :
5560 from xdis .opcodes import opcode_26
5661 self .opc = opcode_26
@@ -281,43 +286,42 @@ def restrict_to_parent(self, target, parent):
281286 target = parent ['end' ]
282287 return target
283288
284- def get_scanner (version ):
289+ def get_scanner (version , show_asm = False ):
285290 # Pick up appropriate scanner
286291 # from trepan.api import debug;
287292 # debug(start_opts={'startup-profile': True})
288293
289294 # FIXME: see if we can do better
290295 if version == 2.7 :
291296 import uncompyle6 .scanners .scanner27 as scan
292- scanner = scan .Scanner27 ()
297+ scanner = scan .Scanner27 (show_asm = show_asm )
298+ elif version == 2.3 :
299+ import uncompyle6 .scanners .scanner23 as scan
300+ scanner = scan .Scanner23 (show_asm )
293301 elif version == 2.6 :
294302 import uncompyle6 .scanners .scanner26 as scan
295- scanner = scan .Scanner26 ()
303+ scanner = scan .Scanner26 (show_asm )
296304 elif version == 2.5 :
297305 import uncompyle6 .scanners .scanner25 as scan
298- scanner = scan .Scanner25 ()
306+ scanner = scan .Scanner25 (show_asm )
299307 elif version == 3.2 :
300308 import uncompyle6 .scanners .scanner32 as scan
301- scanner = scan .Scanner32 ()
309+ scanner = scan .Scanner32 (show_asm )
302310 elif version == 3.3 :
303311 import uncompyle6 .scanners .scanner33 as scan
304- scanner = scan .Scanner33 ()
312+ scanner = scan .Scanner33 (show_asm )
305313 elif version == 3.4 :
306314 import uncompyle6 .scanners .scanner34 as scan
307- scanner = scan .Scanner34 ()
315+ scanner = scan .Scanner34 (show_asm )
308316 elif version == 3.5 :
309317 import uncompyle6 .scanners .scanner35 as scan
310- scanner = scan .Scanner35 ()
318+ scanner = scan .Scanner35 (show_asm )
311319 else :
312320 raise RuntimeError ("Unsupported Python version %s" % version )
313321 return scanner
314322
315323if __name__ == "__main__" :
316324 import inspect , uncompyle6
317325 co = inspect .currentframe ().f_code
318- scanner = get_scanner (uncompyle6 .PYTHON_VERSION )
326+ scanner = get_scanner (uncompyle6 .PYTHON_VERSION , True )
319327 tokens , customize = scanner .disassemble (co , {})
320- print ('-' * 30 )
321- for t in tokens :
322- print (t )
323- pass
0 commit comments