@@ -143,11 +143,14 @@ def prefix_for_filename(deparsed_text: str) -> str:
143143
144144 """
145145 lines = deparsed_text .split ("\n " )
146+
147+
146148 # FIXME Rather than blindly take the first line,
147149 # check if it is blank and if so use other lines.
148150 for line in lines :
149151 if line :
150- return proc_obj ._saferepr (line .strip ())[1 :- 1 ][:10 ]
152+ cleaned_line = re .sub (r"[()'\"\s]" , "_" , line .strip ())
153+ return proc_obj ._saferepr (cleaned_line )[1 :- 1 ][:10 ]
151154 return "..."
152155
153156 def prefix_for_source_text (source_text : str , maxwidth : int ) -> str :
@@ -197,7 +200,9 @@ def prefix_for_source_text(source_text: str, maxwidth: int) -> str:
197200
198201 filename = frame2file (core_obj , frame , canonic = False )
199202 if "<string>" == filename :
200- if dbgr_obj .eval_string :
203+ if remapped_file := pyficache .main .code2tempfile .get (frame .f_code ):
204+ filename = remapped_file
205+ elif dbgr_obj .eval_string :
201206 remapped_file = filename
202207 filename = pyficache .unmap_file (filename )
203208 if "<string>" == filename :
@@ -214,38 +219,39 @@ def prefix_for_source_text(source_text: str, maxwidth: int) -> str:
214219 pass
215220 pass
216221
217- # FIXME: should change filename to disambiguated <string> everywhere.
218- eval_kind = is_eval_or_exec_stmt (frame ) or "code-"
219- deparsed = deparse_fn (frame .f_code )
220- if deparsed :
221- # Create a nice prefix for the temporary file to write.
222- # Use the exec type and first line of the deparsed text.
223- leading_code_str = prefix_for_filename (deparsed .text )
224- prefix = f"{ eval_kind } -{ leading_code_str } -"
225-
226- remapped_file = cmdfns .source_tempfile_remap (
227- prefix ,
228- deparsed .text ,
229- tempdir = proc_obj .settings ("tempdir" ),
230- )
231- # FIXME: pyficache remaps seems backwards
232- pyficache .remap_file (remapped_file , filename )
233- filename = remapped_file
234222 else :
223+ # FIXME: should change filename to disambiguated <string> everywhere.
224+ eval_kind = is_eval_or_exec_stmt (frame ) or "code-"
235225 deparsed = deparse_fn (frame .f_code )
236- if deparsed is not None :
237- source_text = deparsed .text
238- # else:
239- # print("Can't deparse", frame.f_code)
240- if source_text is None and eval_kind :
241- if source_text := get_exec_or_eval_string (frame ):
242- filename = "string-" + prefix_for_filename (source_text ) + "-"
243- else :
244- source_text = f"{ eval_kind } (...)"
226+ if deparsed :
227+ # Create a nice prefix for the temporary file to write.
228+ # Use the exec type and first line of the deparsed text.
229+ leading_code_str = prefix_for_filename (deparsed .text )
230+ prefix = f"{ eval_kind } -{ leading_code_str } -"
231+
232+ remapped_file = cmdfns .source_tempfile_remap (
233+ prefix ,
234+ deparsed .text ,
235+ tempdir = proc_obj .settings ("tempdir" ),
236+ )
237+ # FIXME: pyficache remaps seems backwards
238+ filename = remapped_file
239+
240+ else :
241+ deparsed = deparse_fn (frame .f_code )
242+ if deparsed is not None :
243+ source_text = deparsed .text
244+ # else:
245+ # print("Can't deparse", frame.f_code)
246+ if source_text is None and eval_kind :
247+ if source_text := get_exec_or_eval_string (frame ):
248+ filename = "string-" + prefix_for_filename (source_text ) + "-"
249+ else :
250+ source_text = f"{ eval_kind } (...)"
251+ pass
245252 pass
246253 pass
247254 pass
248- pass
249255 else :
250256 m = re .search ("^<frozen (.*)>" , filename )
251257 if m and m .group (1 ) in pyficache .file2file_remap :
@@ -328,7 +334,7 @@ def prefix_for_source_text(source_text: str, maxwidth: int) -> str:
328334 pyficache .remap_file (remapped_file , filename )
329335 fd .close ()
330336 if source_text :
331- pyficache .main .code2_tempfile [frame .f_code ] = remapped_file
337+ pyficache .main .code2tempfile [frame .f_code ] = remapped_file
332338 intf_obj .msg (
333339 f"remapped string { prefix_for_source_text (source_text , 10 )} to file { remapped_file } "
334340 )
0 commit comments