Type-check Jupyter Notebooks with mypy



我有一个项目,包含一堆Python模块(.py文件(和一堆Jupyter Notebook(.ipynb文件(,它们从Python模块导入内容。

我可以(假设我在所有子文件夹中都有__init__.py文件(通过简单地从项目根运行mypy .来键入检查所有.py文件。但我也希望能够打字检查我的Jupyter笔记本。

一个理想的解决方案是:

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

我该怎么做?

您可以使用nbQA并执行

pip install -U nbqa
nbqa mypy your_notebook.ipynb

结账nb mypy

Nb Mypy是一种在Jupyter笔记本单元格执行时自动在其上运行mypy的功能,同时保留有关执行历史的信息。

更多详情点击此处

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

jupyter nbconvert --to script [YOUR_NOTEBOOK].ipynb

只要写一个小脚本就可以了:(

我使用Jupytext和我的IDE来实现这一点。

我以py:%%格式导出一份副本,并将其链接到笔记本。我在jupyter实验室环境中进行开发,但.py文件是git存储库中的文件。在提交之前,我通过常见的linter运行它,blackpydocstylemypy(使用严格的配置(。然后,我在Jupyter实验室重新加载笔记本,重新启动内核并"全部运行"以确保结果仍然正常,然后将文件提交到存储库

最新更新