@@ -145,6 +145,18 @@ def prefix_for_filename(deparsed_text: str) -> str:
145145 return proc_obj ._saferepr (line .strip ())[1 :- 1 ][:10 ]
146146 return "..."
147147
148+ def prefix_for_source_text (source_text : str , maxwidth : int ) -> str :
149+ """
150+ Return source_text possibly truncated to `maxwidth`
151+ We do this so that the user gets some idea of
152+ what the string (source code text) is contained in the file.
153+
154+ """
155+ source_text = source_text .strip ()
156+ if len (source_text ) < maxwidth :
157+ return source_text
158+ return proc_obj ._saferepr (source_text )[:maxwidth ] + "'..."
159+
148160 i_stack = proc_obj .curindex
149161 if i_stack is None or proc_obj .stack is None :
150162 return False
@@ -179,21 +191,21 @@ def prefix_for_filename(deparsed_text: str) -> str:
179191 # break
180192
181193 filename = frame2file (core_obj , frame , canonic = False )
182- if "<string>" == filename and dbgr_obj .eval_string :
183- eval_kind = "string"
184- remapped_file = filename
185- filename = pyficache .unmap_file (filename )
186- if "<string>" == filename :
187- remapped_file = cmdfns .source_tempfile_remap (
188- "eval_string" ,
189- dbgr_obj .eval_string ,
190- tempdir = proc_obj .settings ("tempdir" ),
191- )
192- pyficache .remap_file (filename , remapped_file )
193- filename , line_number = pyficache .unmap_file_line (filename , line_number )
194+ if "<string>" == filename :
195+ if dbgr_obj .eval_string :
196+ remapped_file = filename
197+ filename = pyficache .unmap_file (filename )
198+ if "<string>" == filename :
199+ remapped_file = cmdfns .source_tempfile_remap (
200+ "eval_string" ,
201+ dbgr_obj .eval_string ,
202+ tempdir = proc_obj .settings ("tempdir" ),
203+ )
204+ pyficache .remap_file (filename , remapped_file )
205+ filename , line_number = pyficache .unmap_file_line (filename , line_number )
206+ pass
194207 pass
195- pass
196- elif "<string>" == filename :
208+
197209 # FIXME: should change filename to disambiguated <string> everywhere.
198210 eval_kind = is_eval_or_exec_stmt (frame ) or "code-"
199211 deparsed = deparse_fn (frame .f_code )
@@ -212,7 +224,6 @@ def prefix_for_filename(deparsed_text: str) -> str:
212224 pyficache .remap_file (remapped_file , filename )
213225 filename = remapped_file
214226 else :
215- eval_kind = is_eval_or_exec_stmt (frame )
216227 deparsed = deparse_fn (frame .f_code )
217228 if deparsed is not None :
218229 source_text = deparsed .text
@@ -289,14 +300,14 @@ def prefix_for_filename(deparsed_text: str) -> str:
289300 # FIXME:
290301 if source_text :
291302 lines = source_text .split ("\n " )
292- temp_name = "string-" + prefix_for_filename (source_text ) + "-"
303+ temp_name = "string-" + prefix_for_filename (source_text )
293304 else :
294305 # try with good ol linecache and consider fixing pyficache
295306 lines = linecache .getlines (filename )
296307 temp_name = filename
297308 if lines and not filename .endswith (".pyasm" ):
298309 # FIXME: DRY code with version in cmdproc.py print_location
299- prefix = osp .basename (temp_name ).split ("." )[0 ]
310+ prefix = osp .basename (temp_name ).split ("." )[0 ] + "-"
300311 fd = NamedTemporaryFile (
301312 suffix = ".py" ,
302313 prefix = prefix ,
@@ -308,7 +319,11 @@ def prefix_for_filename(deparsed_text: str) -> str:
308319 remapped_file = fd .name
309320 pyficache .remap_file (remapped_file , filename )
310321 fd .close ()
311- intf_obj .msg (f"remapped file { filename } to { remapped_file } " )
322+ if source_text :
323+ intf_obj .msg (f"remapped string { prefix_for_source_text (source_text , 10 )} to file { remapped_file } " )
324+ else :
325+ intf_obj .msg (f"remapped file { filename } to { remapped_file } " )
326+ proc_obj .list_filename = remapped_file
312327
313328 pass
314329
@@ -334,7 +349,7 @@ def prefix_for_filename(deparsed_text: str) -> str:
334349 filename , line = cmdfns .deparse_getline (
335350 code , remapped_file , line_number , opts
336351 )
337- pass
352+ proc_obj . list_filename = remapped_file
338353 pass
339354
340355 if eval_kind is None :
@@ -402,6 +417,7 @@ def five():
402417 cmdproc .frame = currentframe ()
403418 cmdproc .event = "line"
404419 cmdproc .setup ()
420+
405421 print_location (cmdproc )
406422
407423 cmdproc .curindex = 1
0 commit comments