跳转到主要内容

移除Jupyter笔记本的输出

项目描述

nbstripout-fast

PyPI version PyPI DM Github Actions Status

nbstripout的Rust版本,速度快得多(当然)。这有助于从笔记本中移除Jupyter Notebook的输出和元数据。它作为git过滤器非常有用,且高度可配置。

安装

pip install nbstripout-fast

然后,将nbstripout-fast替换为任何使用nbstripout的地方。

主要区别

  1. 虽然我们复制了nbstripout的大部分API,但我们不支持每个nbstripout选项。
  2. 没有CLI选项可以自动在git中安装此工具
  3. 我们支持在.git-nbconfig.yaml文件中设置仓库级别的设置。查看我们的examples。在较高层次上,您可以在站内/用户级别添加git过滤器,然后允许每个项目强制执行一致的设置。

为什么选择Rust?

nbstripout是一个优秀的项目,但Python的启动和导入时间使其在大规模使用时有些痛苦。虽然这意味着放弃使用nbconvert并在内部确保笔记本格式正确,但它可以使速度提高至200倍。当您有大量文件且git过滤器有时会针对每个文件调用多次时,这一点很重要。让我们看看数据

单元 nbstripout nbstripout_fast
1 0m0.266s 0m0.003s
10 0m0.258s 0m0.003s
100 0m0.280s 0m0.004s
1000 0m0.372s 0m0.013s
10000 0m1.649s 0m0.133s

上表显示每个笔记本的 overhead 都很大(主要是 Python 启动时间)。当你有 100 个或更多的笔记本时,nbstripout 花费超过 40 秒,而 nbstripout-fast 只需 1 秒!

开发

你可以使用 cargo,它会构建并运行 CLI。

cargo run -- -t examples/example.ipynb

你也可以使用 cargo 进行构建,并使用完整路径运行脚本。

cargo build # dev build - ./target/debug/nbstripout-fast
cargo build --release # release build - ./target/release/nbstripout-fast

运行单元测试:maturin 默认构建此仓库以包含 pyo3 绑定。这使我们能够拥有扩展 Python 扩展模式。截至今天,我们无法同时拥有二进制文件和扩展,因此我们只使用扩展进行测试(问题)。

pip install -e .
maturin develop
# Should output, this way you can use RUST_LOG=debug
in-venv pytest -rP

调试

使用 RUST_LOG=debug 调试脚本,例如。

RUST_LOG=debug cargo run -- '--extra-keys "metadata.bar cell.baz" -t foo.ipynb'

发布

Manylinux、macos 和 windows 轮和 sdist 由 github 工作流程构建。在创建拉取请求、创建新版本或手动工作流程调度时触发构建。只有在发布新版本时,轮和 sdist 才会上传到 PyPI。为了创建新版本

  1. 提交一个更新 Cargo.tomlCHANGELOG.md 中版本的提交,然后创建一个 git 标签。
git tag vX.Y.Z
git push --tags
  1. 在 github 中起草新版本;选择你刚刚创建的标签。
  2. 一旦创建了新版本,github 工作流程将构建轮和 sdist,然后使用存储库的 github 密钥中的 PYPI_API_TOKEN 自动上传到 PyPI。

历史

此插件由 D. E. Shaw 团队 贡献给了社区。

D. E. Shaw Logo

许可证

本项目以 BSD-3-Clause 许可证 发布。

我们欢迎贡献!在你能够贡献之前,请签署并提交此 贡献者许可协议 (CLA)。此 CLA 的目的是保护此项目的所有用户。

项目详情


下载文件

下载适合您平台的应用程序。如果您不确定选择哪个,请了解有关 安装包 的更多信息。

源分布

nbstripout_fast-1.0.4.tar.gz (24.3 kB 查看哈希值)

构建分布

nbstripout_fast-1.0.4-py3-none-win_amd64.whl (933.8 kB 查看哈希值)

Python 3 Windows x86-64

nbstripout_fast-1.0.4-py3-none-win32.whl (866.1 kB 查看哈希值)

Python 3 Windows x86

nbstripout_fast-1.0.4-py3-none-musllinux_1_1_x86_64.whl (1.2 MB 查看哈希值)

Python 3 musllinux: musl 1.1+ x86-64

nbstripout_fast-1.0.4-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.2 MB 查看哈希)

上传时间: Python 3 manylinux: glibc 2.17+ x86-64

nbstripout_fast-1.0.4-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl (1.3 MB 查看哈希)

上传时间: Python 3 manylinux: glibc 2.17+ i686

nbstripout_fast-1.0.4-py3-none-macosx_11_0_arm64.whl (1.1 MB 查看哈希)

上传时间: Python 3 macOS 11.0+ ARM64

由以下机构支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面