跳转到主要内容

基本笔记本检查。它们运行了吗?它们包含lint吗?

项目描述

nbsmoke

构建状态 Linux/MacOS/Windows Build Status
覆盖率 codecov
最新开发版本 Github tag
最新版本 Github release PyPI version nbsmoke version conda-forge version defaults version
Python Python support

基本笔记本烟雾测试:它们运行正常吗?它们包含lint吗?


Pytest插件是用Cookiecutter@hackebrotCookiecutter-pytest-plugin模板生成的。

安装

您可以通过pipPyPI安装nbsmoke

$ pip install nbsmoke

或获取最新预发布版

$ pip install --pre nbsmoke

nbsmoke也可以通过condaanaconda.org获取

$ conda install -c conda-forge nbsmoke

用法

检查所有笔记本是否运行无误

$ pytest --nbsmoke-run

检查所有笔记本运行无误,并将HTML存储起来供之后查看

$ pytest --nbsmoke-run --store-html=/scratch

对笔记本进行lint检查

$ pytest --nbsmoke-lint

将lint失败仅作为警告

$ pytest --nbsmoke-lint --nbsmoke-lint-onlywarn

您可以为目录中的所有文件指定一个列表,例如。

$ pytest --nbsmoke-run notebooks/Untitled*.ipynb

如果您想限制pytest只运行您的笔记本测试,请使用 -k,例如:

$ pytest --nbsmoke-run -k ".ipynb"

通过在 setup.cfg、pytest.ini 或 tox.ini 中使用标准的 pytest 'ini' 配置,可以获得额外的选项。

[pytest]
# when running, seconds allowed per cell (see nbconvert timeout)
nbsmoke_cell_timeout = 600

# notebooks to skip running; one case insensitive re to match per line
nbsmoke_skip_run = ^.*skipme\.ipynb$
                   ^.*skipmetoo.*$

# case insensitive re to match for file to be considered notebook;
# defaults to ``^.*\.ipynb``
it_is_nb_file = ^.*\.something$

# flakes you don't want to hear about (regex)
nbsmoke_flakes_to_ignore = .*hvplot.* imported but unused.*

# line magics to treat as being flakes (i.e. magics you don't want in your notebooks)
nbsmoke_flakes_line_magics_blacklist = pylab

# cell magics to treat as being flakes (i.e. magics you don't want in your notebooks)
nbsmoke_flakes_cell_magics_blacklist = bash
                                       ruby

# add your own magic handlers (python file containing line_magic_handlers and cell_magic_handlers as dictionaries magic_name: callable)
nbsmoke_magic_handlers = path/to/file.py

nbsmoke支持# noqa注释来标记在代码风格检查期间应该忽略的内容。

项目配置中的nbsmoke_skip_run列表可以通过传递--ignore-nbsmoke-skip-run来忽略(如果您有时想运行项目中通常跳过的所有笔记本)。

这有什么意义吗?

尽管可以对笔记本进行更复杂的测试(例如,参见nbval),但检查笔记本是否可以在新的内核中从开始到结束运行而不会出错(或在中立的CI服务上)在开发期间可能很有用。在多个项目中使用笔记本的实际经验证实了这一点,但这只是我所拥有的全部证据。

检查笔记本的代码风格可能看似微不足道/无意义,但它经常揭示未使用的名称(通常是未使用的导入)。也常见到Python 2与Python 3的问题,以及有时未定义的名称 - 这比在多个Python版本上运行笔记本要快。

未使用的导入/名称本身可能看似微不足道,但它们可能会阻碍读者对笔记本的理解,或者添加不必要的依赖项。

希望您在笔记本中没有神秘的(未使用的)导入,但如果有的话,您可以通过添加# noqa: explanation来停止flake错误。例如,如果您是为了副作用而导入某些内容,那么通知读者这一点将非常有帮助。

使用Pyflakes作为底层代码检查器,因为“Pyflakes做出了一个简单的承诺:它永远不会对风格进行投诉,并且它会非常努力地尽量不发出误报。”

贡献

首先,使用pip install -e .安装。然后使用toxpytest -v tests/运行测试。

发布到PyPI的新版本:git tag -a vX.Y.Z -m "关于发布的某事" && git push --tags。然后,conda-forge将自动打开PR,应该会合并。

通过添加--nbsmoke-lint-debug来获取一些帮助以调试明显不正确的flakes,例如pytest -v --nbsmoke-lint --nbsmoke-lint-debug examples

许可证

在BSD-3许可证下分发,“nbsmoke”是免费和开源软件。

问题

如果您遇到任何问题,请提交问题(理想情况下包括任何有问题的笔记本的副本)。

项目详细信息


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解有关安装软件包的更多信息。

源分布

nbsmoke-0.6.0.tar.gz (25.2 kB 查看哈希值)

上传时间:

构建分布

nbsmoke-0.6.0-py2.py3-none-any.whl (28.2 kB 查看哈希值)

上传时间: Python 2 Python 3

由以下支持