使用 mypy 对 Jupyter Notebooks 进行类型检查

Mar*_*ery 7 python jupyter-notebook mypy

我有一个包含一堆 Python 模块(.py文件)和一堆.ipynb从 Python 模块导入内容的 Jupyter Notebooks(文件)的项目。

我可以(假设我__init__.py在所有子文件夹中都有文件).py通过简单地mypy .从项目的根目录运行来对所有文件进行类型检查。但我也希望能够对我的 Jupyter Notebooks 进行类型检查。

一个理想的解决方案是:

  • 在我的 Jupyter Notebooks 中键入检查所有 Python 代码,
  • 能够.py在类型检查时跟踪Jupyter Notebooks中模块的导入,就像.py文件中的导入一样,
  • 让我从命令行对整个项目进行类型检查,以便我可以将类型检查作为测试套件或预提交挂钩的一部分运行,并且
  • 以某种方式有意义地报告我的笔记本中类型错误的位置,类似于 mypy 如何为.py文件中的错误打印行号。

我怎样才能做到这一点?

Sha*_*man 6

检查nb-mypy

Nb Mypy是一种在 Jupyter 笔记本单元执行时自动运行 mypy 的工具,同时保留有关执行历史记录的信息。

更多详情请点击此处


E.S*_*rra 5

您可以:将所有笔记本转换为 python,然后在其上运行 mypy(如何通过命令行将IPython 笔记本转换为 Python 文件?)。

jupyter nbconvert --to script [YOUR_NOTEBOOK].ipynb
Run Code Online (Sandbox Code Playgroud)

只需编写一个小脚本来执行此操作,您就可以了:)


mar*_*lli 5

你可以使用nbQA并做

pip install -U nbqa
nbqa mypy your_notebook.ipynb
Run Code Online (Sandbox Code Playgroud)

免责声明:我是 nbQA 的作者

  • 这个答案很棒,因为它为在笔记本上运行 linter/formatters/ 等问题提供了通用解决方案。感谢您写下它@ignoring_gravity! (2认同)
  • 谢谢@erb,非常感谢!0.7.0版本刚刚发布,它对mypy进行了一些修复 (2认同)