Приходится использовать старенький Python 2.6.6
Привожу шаблон части моего скрипта (шаблон имеет такую же структуру, но не имеет смысла)
def _func(): '''Normal ....''' import contribs print 'top' def _func_sub_1(): '''Normal ...''' print 'Sub 1' def _func_sub_2(): '''Warning-1 ...''' a = 5 print 'Sub_2' _func_sub_1() _func_sub_2() contribs._func_import() _func() exit(0)
Функция _func() далее (не показано) исполнятся подроцессами (через multiprocessing).
Мне нужно получить информацию о вложенны функциях у _func(), а именно степень опасности их применения.
В начале проводится проверка, где нужно подтверждать дальнейшее исполнение при обнаружении опасной вложенной функции.
Вижу два варианта: 1 - через чтение кода скрипта с поиском предупреждающих переменных во вложенных функциях, 2 - через стд атрибуты/методы объектов.
Интересует варианта 2.
Думал сделать это через стд. атрибут __doc__, где указывается степень опасности “Normal”, “Warning”. Но не знаю, как добраться до вложенных функций.
Пока что получил следующее:
>>> _func.func_code.co_consts ('Normal ....', -1, None, 'top', <code object _func_sub_1 at 0x7f7dc83a9b70, file "./test.py", line 31>, <code object _func_sub_2 at 0x7f7dc83a9468, file "./test.py", line 34>) >>>_func.func_code.co_consts[4].co_consts ('Normal ...', 'Sub 1', None) >>>_func.func_code.co_consts[5].co_consts ('Warning-1 ...', 'Warning', 5, 'Sub_2', None)
Проблемы:
1) Я могу отслеживать по первой переменной в .co_consts, но не могу проследить использования вложенной функции в теле функции _func.
2) Не знаю, как добраться до констант импортируемой функции - _func_import()
Как правильно реализовать вариант 2, если можно?