У меня есть пользовательское волшебство ячейки, которое берет код языка 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".