如何获得在IPython中调用自定义单元魔术的行号?

时间:2019-06-25 19:55:23

标签: ipython ipython-magic

我有一个采用Nim语言代码的自定义单元魔术,将其保存到文件中并进行编译。 如果代码上存在编译错误,则Nim编译器将以行号报告错误。 当我使用该自定义魔术时,Nim错误消息中的行号与单元格中的行号不匹配,因为Nim代码的第一行在该自定义魔术下。 如果我在该单元魔术上面添加了一些注释,则错误消息中的行号与实际错误行之间的差异会变大。 如果可以获取调用细胞魔术的位置的行号,则可以在Nim代码中添加一些文本,以使错误消息中的行号与该单元格中的行号匹配。

我尝试使用inspect模块获取行号,但是我获得了不同位置的行号。 我在Google相关工具中测试了以下代码。

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”。

0 个答案:

没有答案