移除Jupyter笔记本的输出
项目描述
nbstripout-fast
nbstripout的Rust版本,速度快得多(当然)。这有助于从笔记本中移除Jupyter Notebook的输出和元数据。它作为git过滤器非常有用,且高度可配置。
安装
pip install nbstripout-fast
然后,将nbstripout-fast替换为任何使用nbstripout的地方。
主要区别
- 虽然我们复制了nbstripout的大部分API,但我们不支持每个nbstripout选项。
- 没有CLI选项可以自动在git中安装此工具
- 我们支持在
.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。为了创建新版本
- 提交一个更新
Cargo.toml
和CHANGELOG.md
中版本的提交,然后创建一个 git 标签。
git tag vX.Y.Z
git push --tags
- 在 github 中起草新版本;选择你刚刚创建的标签。
- 一旦创建了新版本,github 工作流程将构建轮和 sdist,然后使用存储库的 github 密钥中的
PYPI_API_TOKEN
自动上传到 PyPI。
历史
此插件由 D. E. Shaw 团队 贡献给了社区。
许可证
本项目以 BSD-3-Clause 许可证 发布。
我们欢迎贡献!在你能够贡献之前,请签署并提交此 贡献者许可协议 (CLA)。此 CLA 的目的是保护此项目的所有用户。
项目详情
下载文件
下载适合您平台的应用程序。如果您不确定选择哪个,请了解有关 安装包 的更多信息。
源分布
构建分布
nbstripout_fast-1.0.4.tar.gz 的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | cf30a3a40874714fc0124cac9c15a3532cb01ec74c2977bbced4b035dabfa04d |
|
MD5 | b10bbe8634b5d5a522df2a2c72d95174 |
|
BLAKE2b-256 | 61eaacb44d2c0b9f6f43cf1a55cb019712b8664279b9e80ce081c274110b279e |
nbstripout_fast-1.0.4-py3-none-win_amd64.whl 的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 34339c3e43e8686fcab4ea4bdad5cba2217f6ddf5a1a6cf0be154e9c56a76e83 |
|
MD5 | 079ddebc56d96da078f94533a939eed6 |
|
BLAKE2b-256 | 38d383085064ace94f8fc4ec75830cec406d86bffed4959d41fbe68c07c1dcca |
nbstripout_fast-1.0.4-py3-none-win32.whl 的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 9dd8b5f82f83f372aae8f8f2443cba4a1527231e5ebdc1659680f3fc36556478 |
|
MD5 | f7ea08dca9262eedcfab4376c0375870 |
|
BLAKE2b-256 | ef00388e5ce50bddbfd7eda04774d9c6070b0e61b9ebbd9fd22e8106a1b4ec00 |
nbstripout_fast-1.0.4-py3-none-musllinux_1_1_x86_64.whl 的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 56c2ff216d89949c27d5c8a259c1cc55fb31e86a79392c7384aa624f41f39fd7 |
|
MD5 | 0f52db47fc8fd047a21e6b1765bfa4e0 |
|
BLAKE2b-256 | f93a950ccc609595970b7a88fcc50d3bab6ff61259324c6a056d148145b84588 |
nbstripout_fast-1.0.4-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl 的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | c3e26e2ed4ab174de3c8b9a8c9ab3173189630f31407988727088529e964c0e8 |
|
MD5 | 5d0d0a6760a2b6a87b3388af7ba8f8df |
|
BLAKE2b-256 | a408c18c28a6b98dfeabb358bb9a61d6551495d0083108af507556c45e672185 |
nbstripout_fast-1.0.4-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl 的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | f49d46db17e013782c3b09b3ff15959c0a1d20223901e874c8dceeb377441ece |
|
MD5 | 08ccfc87b082694be843761291bf635b |
|
BLAKE2b-256 | f98d35a740272174a457dfd47eb3b2ca8294ab2ec6e3f6fe7ee14df20052e57a |
nbstripout_fast-1.0.4-py3-none-macosx_11_0_arm64.whl 的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 7dc6be725d3d2d90455db5d97241e70377859e4d3ba55101f0cc1c1672d585b7 |
|
MD5 | 4004426423427b0dcb663012f813fdeb |
|
BLAKE2b-256 | fb0ba836da967d4bae1804c04ab2bfa68fa54ee5ce21e966dcac666264153703 |