📌 Проблема
В текущей реализации CallStackInspector поиск активного вызова выполняется по имени функции:
def find_frame_index(self, func_name: str) -> int | None:
...
Это небезопасно, так как:
- разные функции могут иметь одинаковое имя
- вложенные функции / лямбды
- рекурсия
- одинаковые имена в разных модулях
- декораторы могут менять отображаемое имя
В результате возможны:
- некорректное сопоставление call/return
- повреждение стека вызовов
- неправильная привязка exception к call
🎯 Цель
Перейти от поиска по func_name к стабильному идентификатору вызова.
💡 Возможные подходы
Вариант 1 (предпочтительный)
Использовать frame или code object:
frame (id(frame))
frame.f_code
или комбинация (code, frame id)
Вариант 2
Использовать уникальный call_id, создаваемый при on_call
🔗 Связано с
Issue #1 (SRP refactor)
📌 Проблема
В текущей реализации
CallStackInspectorпоиск активного вызова выполняется по имени функции:Это небезопасно, так как:
В результате возможны:
🎯 Цель
Перейти от поиска по func_name к стабильному идентификатору вызова.
💡 Возможные подходы
Вариант 1 (предпочтительный)
Использовать frame или code object:
frame (id(frame))frame.f_codeили комбинация
(code, frame id)Вариант 2
Использовать уникальный
call_id, создаваемый приon_call🔗 Связано с
Issue #1 (SRP refactor)