Skip to content

refactor: безопасная идентификация вызовов (убрать func_name) #3

@Alexandr153

Description

@Alexandr153

📌 Проблема

В текущей реализации 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)

Metadata

Metadata

Assignees

No one assigned

    Type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions