模块化 nbdev

如何单独使用 nbdev 的各种工具

虽然 nbdev_new 让你能够开始创建令人愉悦的 Python 包所需的一切,但**你也可以单独使用下面列出的 nbdev 的每个组件**。如果你正在将一个大型系统移植到 nbdev、文档化现有的代码库,或者你想为自己的项目定制 nbdev 工作流,这可能会很有用。请注意,除非另有说明,否则下面列出的所有命令都可以在没有 settings.ini 文件的情况下工作。

文档化现有代码:show_doc

nbdev 允许你文档化现有代码,甚至是并非使用 nbdev 编写的代码!nbdev.showdoc.show_doc 允许你在 Notebook 和 Quarto 站点上渲染漂亮的 API 文档。例如,你可以像这样渲染 numpy.all 的 API 文档

from nbdev.showdoc import show_doc
from numpy import all
show_doc(all)

all

 all (a, axis=None, out=None, keepdims=<no value>, where=<no value>)

测试给定轴上的所有数组元素是否都评估为 True。

类型 默认值 详细信息
a array_like 输入数组或可以转换为数组的对象。
axis NoneType None 执行逻辑 AND 归约的轴或多个轴。
默认值 (axis=None) 是对所有
输入数组的维度执行逻辑 AND。axis 可以是负数,在这种情况下
它从最后一个轴算到第一个轴。

.. versionadded:: 1.7.0

如果这是一个整数元组,则对多个
轴执行归约,而不是像之前那样对单个轴或所有轴执行。
out NoneType None 放置结果的备用输出数组。
它必须具有与预期输出相同的形状,并且其
类型会保留(例如,如果 dtype(out) 是 float,则结果
将包含 0.0 和 1.0)。有关更多信息,请参见 :ref:ufuncs-output-type
详细信息。
keepdims _NoValueType 如果设置为 True,则归约的轴将保留在结果中
作为大小为一的维度。使用此选项,
结果将与输入数组正确广播。

如果传递默认值,则 keepdims 不会
传递给 ndarray 子类的 all 方法,
但任何非默认值都会传递。如果
子类的方法未实现 keepdims,则会引发任何
异常。
where _NoValueType 检查所有 True 值时要包含的元素。
详细信息请参见 ~numpy.ufunc.reduce

.. versionadded:: 1.20.0
返回值 ndarray, bool 除非指定了 out,否则返回新的布尔值或数组,
在这种情况下,返回对 out 的引用。
注意

show_doc 自动解析以 numpy 风格编写的 docstrings。有关更多信息,请在此处阅读

测试 Notebook:nbdev_test

测试 Notebook 在 nbdev 之外也非常有用,特别是如果你正在文档化现有代码库并希望将测试纳入你的文档。通过 nbdev_test CLI 工具可以实现这一点

你可以使用终端命令测试单个 notebook

nbdev_test --path notebook.ipynb

…或一个包含 notebook 的文件夹

nbdev_test --path tests/

将代码导出到模块:nb_export

你可以使用 Python 函数将 notebook 导出到模块

nb_export('notebook.ipynb', 'pkg')

…前提是 notebook 在顶部指定了 default_exp 指令,并在每个要导出的单元格上方有 export 指令。为了方便起见,我们建议将其包含在 notebook 底部的代码单元格中。

Jupyter-Git 集成

Jupyter 和 Git 通常配合得不是很好,特别是在合并冲突等方面。我们在这篇博文中概述了所有这些问题以及我们的解决方案。你可以使用以下命令安装我们的合并驱动程序和钩子

nbdev_install_hooks

我们在本页面详细描述了 nbdev_install_hooks 的作用。

你也可以直接使用其任何底层命令,例如,实现你自己的钩子或扩展

要配置你自己的钩子,请查看pre-commit hooks 教程

Python 打包

nbdev.release提供了在 PyPI、conda 和 GitHub 上轻松打包的实用工具。有关更多信息,请查看nbdev.release 文档。请注意,此功能需要 settings.ini 文件。