@@ -28,18 +28,16 @@ def show_pyc_file(fname):
28
28
flags = struct .unpack ('<L' , f .read (4 ))[0 ]
29
29
hash_based = flags & 0x01
30
30
check_source = flags & 0x02
31
- print ("flags 0x% 08x" % ( flags ,) )
31
+ print (f "flags 0x{ flags : 08x} " )
32
32
if hash_based :
33
33
source_hash = f .read (8 )
34
34
read_date_and_size = False
35
35
if read_date_and_size :
36
36
moddate = f .read (4 )
37
37
modtime = time .asctime (time .localtime (struct .unpack ('<L' , moddate )[0 ]))
38
- print ("moddate %s (%s)" % (binascii .hexlify (moddate ), modtime ))
39
- if sys .version_info >= (3 , 3 ):
40
- # 3.3 added another long to the header (size).
41
- size = f .read (4 )
42
- print ("pysize %s (%d)" % (binascii .hexlify (size ), struct .unpack ('<L' , size )[0 ]))
38
+ print (f"moddate { binascii .hexlify (moddate )} ({ modtime } )" )
39
+ size = f .read (4 )
40
+ print ("pysize %s (%d)" % (binascii .hexlify (size ), struct .unpack ('<L' , size )[0 ]))
43
41
code = marshal .load (f )
44
42
show_code (code )
45
43
@@ -92,13 +90,13 @@ def show_code(code, indent='', number=None):
92
90
label = ""
93
91
if number is not None :
94
92
label = "%d: " % number
95
- print ("%s%scode" % ( indent , label ) )
93
+ print (f" { indent } { label } code" )
96
94
indent += " "
97
- print ("%sname %r" % ( indent , code .co_name ) )
95
+ print (f" { indent } name { code .co_name !r } " )
98
96
print ("%sargcount %d" % (indent , code .co_argcount ))
99
97
print ("%snlocals %d" % (indent , code .co_nlocals ))
100
98
print ("%sstacksize %d" % (indent , code .co_stacksize ))
101
- print ("%sflags %04x: %s" % ( indent , code .co_flags , flag_words (code .co_flags , CO_FLAGS )) )
99
+ print (f" { indent } flags { code .co_flags :04x } : { flag_words (code .co_flags , CO_FLAGS )} " )
102
100
show_hex ("code" , code .co_code , indent = indent )
103
101
dis .disassemble (code )
104
102
print ("%sconsts" % indent )
@@ -107,43 +105,36 @@ def show_code(code, indent='', number=None):
107
105
show_code (const , indent + " " , number = i )
108
106
else :
109
107
print (" %s%d: %r" % (indent , i , const ))
110
- print ("%snames %r" % ( indent , code .co_names ) )
111
- print ("%svarnames %r" % ( indent , code .co_varnames ) )
112
- print ("%sfreevars %r" % ( indent , code .co_freevars ) )
113
- print ("%scellvars %r" % ( indent , code .co_cellvars ) )
114
- print ("%sfilename %r" % ( indent , code .co_filename ) )
108
+ print (f" { indent } names { code .co_names !r } " )
109
+ print (f" { indent } varnames { code .co_varnames !r } " )
110
+ print (f" { indent } freevars { code .co_freevars !r } " )
111
+ print (f" { indent } cellvars { code .co_cellvars !r } " )
112
+ print (f" { indent } filename { code .co_filename !r } " )
115
113
print ("%sfirstlineno %d" % (indent , code .co_firstlineno ))
116
114
show_hex ("lnotab" , code .co_lnotab , indent = indent )
117
- print (" %s%s" % (indent , ", " .join ("%r:%r" % ( line , byte ) for byte , line in lnotab_interpreted (code ))))
115
+ print (" {}{}" . format (indent , ", " .join (f" { line !r } : { byte !r } " for byte , line in lnotab_interpreted (code ))))
118
116
if hasattr (code , "co_linetable" ):
119
117
show_hex ("linetable" , code .co_linetable , indent = indent )
120
118
if hasattr (code , "co_lines" ):
121
- print (" %sco_lines %s" % (
119
+ print (" {}co_lines {}" . format (
122
120
indent ,
123
- ", " .join ("%r:%r-%r" % ( line , start , end ) for start , end , line in code .co_lines ())
121
+ ", " .join (f" { line !r } : { start !r } - { end !r } " for start , end , line in code .co_lines ())
124
122
))
125
123
126
124
def show_hex (label , h , indent ):
127
125
h = binascii .hexlify (h )
128
126
if len (h ) < 60 :
129
- print ("%s%s %s" % (indent , label , h .decode ('ascii' )))
127
+ print ("{}{} {}" . format (indent , label , h .decode ('ascii' )))
130
128
else :
131
- print ("%s%s" % ( indent , label ) )
129
+ print (f" { indent } { label } " )
132
130
for i in range (0 , len (h ), 60 ):
133
- print ("%s %s" % (indent , h [i :i + 60 ].decode ('ascii' )))
131
+ print ("{} {}" . format (indent , h [i :i + 60 ].decode ('ascii' )))
134
132
135
- if sys .version_info >= (3 ,):
136
- def bytes_to_ints (bytes_value ):
137
- return bytes_value
138
- else :
139
- def bytes_to_ints (bytes_value ):
140
- for byte in bytes_value :
141
- yield ord (byte )
142
133
143
134
def lnotab_interpreted (code ):
144
135
# Adapted from dis.py in the standard library.
145
- byte_increments = bytes_to_ints ( code .co_lnotab [0 ::2 ])
146
- line_increments = bytes_to_ints ( code .co_lnotab [1 ::2 ])
136
+ byte_increments = code .co_lnotab [0 ::2 ]
137
+ line_increments = code .co_lnotab [1 ::2 ]
147
138
148
139
last_line_num = None
149
140
line_num = code .co_firstlineno
0 commit comments