Магия Ipython, которая заменяет некоторый текст и запускает ячейку впоследствии

Я пытаюсь создать магию ipython, немного похожую на% pylab, но более явную (вероятно, продолжение):

При запуске он в идеале заменит себя на закомментированную версию + добавит строки, которые выполняют импорт, и запустит ячейку:

%mymagic
# some code

превратится в

# %mymagic
import numpy as np
%matplotlib qt
import matplotlib.pyplot as plt
# ..some other imports
# the same code from earlier

Мысль о том, что не только магия будет делать только очень явные вещи - т.е. вы действительно увидите код, который он запускает / он будет явно сохранен в записной книжке, но также, как обычно, удобно - только несколько быстрых символов для импорта (полезно в консолях).

Проблема для меня - запустить ячейку после ее замены (я использовал %load магия в качестве примера, поэтому я использую set_next_input изменить ячейку). Я попытался запустить импорт внутри магии (то есть, как именно %pylab сделал это), а затем изменив ячейку, но у этого есть недостаток, заключающийся в том, что ячейка остается в состоянии "не запущен" и не работает, а затем вызывается магия в консоли ipython (для выхода нужно нажать клавишу ввода явного текста). Кроме того, один и тот же код должен поддерживаться дважды (один для "печати", а второй - для фактического импорта при выполнении магии)

Любой совет, как подойти к этому? Спасибо

0 ответов

Другие вопросы по тегам