Как получить тело функции используя библиотеку redbaron - PullRequest
0 голосов
/ 27 февраля 2020

Я бы хотел извлечь root функции из скрипта python для разделения их на отдельные файлы. Я должен сохранить оригинальное форматирование, комментарии, ets, поэтому стандартные ast / astunparse модули не работают для меня.

Я обнаружил, что python библиотека redbaron , который очень мощный и гибкий. К сожалению, я не знаю, как извлечь только тело функции. Вот что я пробовал до сих пор:

tree = redbaron.RedBaron(code_source)
functions = tree.find_all('DefNode')
for fn in functions:
  if fn.indentation != '':
    # only interested in root functions
    continue

  with open('/tmp/%s.py' % fn.name, 'w+') as f:
    f.write(fn.dumps())

Для простого ввода, подобного этому:

def foo():
  if True:
    do_something()

он выдает точно такой же результат (ожидаемое поведение). Я хочу извлечь только тело функции, без имени и параметров и с правильным отступом:

if True:
  do_something()

Любая помощь очень ценится.

...