@@ -203,33 +203,32 @@ def should_stop(self, frame, event: str, arg):
203203 self .hit_breakpoint = False
204204
205205 # Cache frame attributes to reduce lookup overhead
206- frame_code = frame .f_code
207- filename = frame_code .co_filename
208- lineno = frame .f_lineno
206+ _frame_code = frame .f_code
207+ _filename = _frame_code .co_filename
208+ _lineno = frame .f_lineno
209209
210- # Check for exact filename match first
211- if filename in self .breakpoints and lineno in self .breakpoints [filename ]:
210+ # Optimize dictionary lookups - use .get() to avoid double lookup
211+ file_breakpoints = self .breakpoints .get (_filename )
212+ if file_breakpoints and _lineno in file_breakpoints :
212213 self .hit_breakpoint = True
213214 return True
214215 else :
215216 # file not (yet) matched - this is slow so we do not want to do this often.
216217 # TODO: use builins - sys.path method to find the file
217218 # if we have a path match , but no breakpoints - add it to the file_mappings dict simplify this check
218- if not filename in self .breakpoints :
219- self .breakpoints [filename ] = {} # Ensure the filename is in the breakpoints dict
220- if not filename in self .file_mappings :
221- self .file_mappings [filename ] = self ._filename_as_debugger (filename )
222- # self._debug_print(
223- # f"[PDB] add mapping for :'{filename}' -> '{self.file_mappings[filename]}'"
224- # )
219+ if file_breakpoints is None :
220+ self .breakpoints [_filename ] = {} # Ensure the filename is in the breakpoints dict
221+ if _filename not in self .file_mappings :
222+ self .file_mappings [_filename ] = self ._filename_as_debugger (_filename )
225223
226224 # Check stepping
227- if self .step_mode == STEP_INTO :
225+ _step_mode = self .step_mode
226+ if _step_mode == STEP_INTO :
228227 if event in (TRACE_CALL , TRACE_LINE ):
229228 self .step_mode = None
230229 return True
231230
232- elif self . step_mode == STEP_OVER :
231+ elif _step_mode == STEP_OVER :
233232 if event == TRACE_LINE and frame == self .step_frame :
234233 self .step_mode = None
235234 return True
@@ -240,7 +239,7 @@ def should_stop(self, frame, event: str, arg):
240239 else :
241240 self .step_mode = None
242241
243- elif self . step_mode == STEP_OUT :
242+ elif _step_mode == STEP_OUT :
244243 if event == TRACE_RETURN and frame == self .step_frame :
245244 self .step_mode = None
246245 return True
0 commit comments