Как я могу получить номер строки, где в IPython вызывается волшебство ячейки? - PullRequest
0 голосов
/ 25 июня 2019

У меня есть пользовательское волшебство ячейки, которое берет код языка Nim, сохраняет его в файл и компилирует. Если в коде произошла ошибка компиляции, компилятор Nim сообщает об ошибках с номерами строк. Когда я использую эту собственную магию, номера строк в сообщениях об ошибках Nim не совпадают с номерами строк в ячейке, поскольку первая строка кода Nim находится под пользовательской магией. Если я добавлю несколько комментариев выше к этой магии ячейки, разница между номером строки от сообщения об ошибке и фактической строкой ошибки станет больше. Если бы я мог получить номер строки, где вызывается магия моей ячейки, я мог бы добавить некоторый текст в код Nim, чтобы номера строк из сообщений об ошибках соответствовали номерам строк в ячейке.

Я попытался получить номер строки, используя модуль проверки, но получил номер строки в другом месте. Я протестировал следующий код в Google colab Laboratory.

from IPython.core.magic import register_cell_magic
import inspect

@register_cell_magic
def cmagic(line, cell):
    print("line num: " + str(inspect.stack()[1].lineno))
    return line, cell

В другой ячейке:

#comment

%%cmagic
  foobar

Я ожидал "номер строки: 3", но получил "номер строки: 2117".

...