(self, suspended_frames_manager, py_db)
| 319 | """ |
| 320 | |
| 321 | def __init__(self, suspended_frames_manager, py_db): |
| 322 | self._suspended_frames_manager = suspended_frames_manager |
| 323 | self.py_db = py_db |
| 324 | self._frame_id_to_frame = {} |
| 325 | |
| 326 | # Note that a given frame may appear in multiple threads when we have custom |
| 327 | # frames added, but as those are coroutines, this map will point to the actual |
| 328 | # main thread (which is the one that needs to be suspended for us to get the |
| 329 | # variables). |
| 330 | self._frame_id_to_main_thread_id = {} |
| 331 | |
| 332 | # A map of the suspended thread id -> list(frames ids) -- note that |
| 333 | # frame ids are kept in order (the first one is the suspended frame). |
| 334 | self._thread_id_to_frame_ids = {} |
| 335 | |
| 336 | self._thread_id_to_frames_list = {} |
| 337 | |
| 338 | # The main suspended thread (if this is a coroutine this isn't the id of the |
| 339 | # coroutine thread, it's the id of the actual suspended thread). |
| 340 | self._main_thread_id = None |
| 341 | |
| 342 | # Helper to know if it was already untracked. |
| 343 | self._untracked = False |
| 344 | |
| 345 | # We need to be thread-safe! |
| 346 | self._lock = ForkSafeLock(rlock=True) |
| 347 | |
| 348 | self._variable_reference_to_variable = {} |
| 349 | |
| 350 | def _register_variable(self, variable): |
| 351 | variable_reference = variable.get_variable_reference() |
nothing calls this directly
no test coverage detected