Rust-powered, python-pptx-compatible library for PowerPoint (.pptx) files
Project description
python-pptx-rs
Rust-powered, python-pptx-compatible library for creating, reading, and updating PowerPoint (.pptx) files.
- Drop-in compatible public API:
pip install python-pptx-rs, thenimport pptx_rs as pptx - Rust core (quick-xml + zip) via PyO3, single abi3 wheel for Python 3.10-3.14
- O(1) shape-id assignment and relationship lookup (quadratic in python-pptx)
- Untouched parts round-trip byte-exactly
Benchmarks
1000 slides x 10 textboxes, macOS arm64, median of 3 (benches/bench_vs_python_pptx.py):
| workload | python-pptx | python-pptx-rs | speedup |
|---|---|---|---|
| open | 85.0ms | 8.9ms | 9.5x |
| open + traverse all text | 316.2ms | 73.5ms | 4.3x |
| traverse (pre-opened) | 227.8ms | 10.4ms | 21.9x |
| open + 1 edit + save | 199.3ms | 48.8ms | 4.1x |
| add 500 textboxes to one slide | 191.0ms | 10.8ms | 17.7x |
Compatibility
python-pptx's own behave feature suite runs against python-pptx-rs — see tests/compat/README.md for the current matrix (75 scenarios passing; all remaining gaps are unimplemented APIs, not behavioral divergences).
Development
Requires Rust (stable), uv, and for the
compatibility suite a python-pptx checkout at ../python-pptx.
uv sync
uv run maturin develop --uv
uv run pytest # includes Python coverage (fails under 80%)
Rust coverage (merges cargo test with pytest run against an instrumented
build, since the PyO3 binding crate is only exercised through Python):
cargo install cargo-llvm-cov
source <(cargo llvm-cov show-env --export-prefix)
cargo llvm-cov clean --workspace
cargo test --workspace
uv run --no-sync maturin develop --uv
uv run --no-sync pytest --no-cov
cargo llvm-cov report --fail-under-lines 80
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file python_pptx_rs-0.0.1.tar.gz.
File metadata
- Download URL: python_pptx_rs-0.0.1.tar.gz
- Upload date:
- Size: 49.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c9c4e611d684ff7c04e86f0035ab87d5f1b18848903b835468864e466d4b8d68
|
|
| MD5 |
a0e035a6d943b51cd8619da7b9418df3
|
|
| BLAKE2b-256 |
2a443dddc61af364fb96b93657370fb4068a8234139d4a0852940562f05327c5
|
Provenance
The following attestation bundles were made for python_pptx_rs-0.0.1.tar.gz:
Publisher:
release.yml on wakita181009/python-pptx-rs
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
python_pptx_rs-0.0.1.tar.gz -
Subject digest:
c9c4e611d684ff7c04e86f0035ab87d5f1b18848903b835468864e466d4b8d68 - Sigstore transparency entry: 2082529035
- Sigstore integration time:
-
Permalink:
wakita181009/python-pptx-rs@297fb2cda528a2c52db9b281024c054a2e847680 -
Branch / Tag:
refs/tags/v0.0.1 - Owner: https://github.com/wakita181009
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@297fb2cda528a2c52db9b281024c054a2e847680 -
Trigger Event:
push
-
Statement type:
File details
Details for the file python_pptx_rs-0.0.1-cp310-abi3-win_amd64.whl.
File metadata
- Download URL: python_pptx_rs-0.0.1-cp310-abi3-win_amd64.whl
- Upload date:
- Size: 807.8 kB
- Tags: CPython 3.10+, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c37d4d40134bb765b673377ff27974f04b497f121ea1e37ee2ae82e19c5e7a57
|
|
| MD5 |
ef8ecda177eb187e443dfa0cb91a1180
|
|
| BLAKE2b-256 |
069bb3b7256e294b608aa86baff2a7e667dce4a05b098c47176dda856c37f5a9
|
Provenance
The following attestation bundles were made for python_pptx_rs-0.0.1-cp310-abi3-win_amd64.whl:
Publisher:
release.yml on wakita181009/python-pptx-rs
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
python_pptx_rs-0.0.1-cp310-abi3-win_amd64.whl -
Subject digest:
c37d4d40134bb765b673377ff27974f04b497f121ea1e37ee2ae82e19c5e7a57 - Sigstore transparency entry: 2082529046
- Sigstore integration time:
-
Permalink:
wakita181009/python-pptx-rs@297fb2cda528a2c52db9b281024c054a2e847680 -
Branch / Tag:
refs/tags/v0.0.1 - Owner: https://github.com/wakita181009
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@297fb2cda528a2c52db9b281024c054a2e847680 -
Trigger Event:
push
-
Statement type:
File details
Details for the file python_pptx_rs-0.0.1-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: python_pptx_rs-0.0.1-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 1.1 MB
- Tags: CPython 3.10+, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a1066e653f3b023dc4d2e26644be37efe3b2c72565b698900b2eadbf756ee588
|
|
| MD5 |
5427f0dc6ddf99ce8093a287695cb215
|
|
| BLAKE2b-256 |
4ec954c08118cf719fcfdc17f0b7421533a320d0e6f87fac7d228349c9b340e2
|
Provenance
The following attestation bundles were made for python_pptx_rs-0.0.1-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:
Publisher:
release.yml on wakita181009/python-pptx-rs
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
python_pptx_rs-0.0.1-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl -
Subject digest:
a1066e653f3b023dc4d2e26644be37efe3b2c72565b698900b2eadbf756ee588 - Sigstore transparency entry: 2082529038
- Sigstore integration time:
-
Permalink:
wakita181009/python-pptx-rs@297fb2cda528a2c52db9b281024c054a2e847680 -
Branch / Tag:
refs/tags/v0.0.1 - Owner: https://github.com/wakita181009
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@297fb2cda528a2c52db9b281024c054a2e847680 -
Trigger Event:
push
-
Statement type:
File details
Details for the file python_pptx_rs-0.0.1-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.
File metadata
- Download URL: python_pptx_rs-0.0.1-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
- Upload date:
- Size: 1.0 MB
- Tags: CPython 3.10+, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7291bb384ccc7699490cc7d9a3e4aaddece7454e52de23eaa07e88eb6ac5d129
|
|
| MD5 |
a5565306a8856e4ec62ed00b1fd58be4
|
|
| BLAKE2b-256 |
8fe2e4267a84e88afec3cf37406c7999360b7596172ba63b3f59b86bfe9e51e6
|
Provenance
The following attestation bundles were made for python_pptx_rs-0.0.1-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:
Publisher:
release.yml on wakita181009/python-pptx-rs
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
python_pptx_rs-0.0.1-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl -
Subject digest:
7291bb384ccc7699490cc7d9a3e4aaddece7454e52de23eaa07e88eb6ac5d129 - Sigstore transparency entry: 2082529044
- Sigstore integration time:
-
Permalink:
wakita181009/python-pptx-rs@297fb2cda528a2c52db9b281024c054a2e847680 -
Branch / Tag:
refs/tags/v0.0.1 - Owner: https://github.com/wakita181009
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@297fb2cda528a2c52db9b281024c054a2e847680 -
Trigger Event:
push
-
Statement type:
File details
Details for the file python_pptx_rs-0.0.1-cp310-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl.
File metadata
- Download URL: python_pptx_rs-0.0.1-cp310-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
- Upload date:
- Size: 1.8 MB
- Tags: CPython 3.10+, macOS 10.12+ universal2 (ARM64, x86-64), macOS 10.12+ x86-64, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
80e5c7ee1ebad350ccff5d4b67555d7ff323ce97b148c95a59493d797fa3d88c
|
|
| MD5 |
f08094d2c8ab8951fe7b3c70900d3528
|
|
| BLAKE2b-256 |
3b20e70ecb4626bd9dd3640e4796a441af2e267ef46be06d638872dfbdffe9f0
|
Provenance
The following attestation bundles were made for python_pptx_rs-0.0.1-cp310-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl:
Publisher:
release.yml on wakita181009/python-pptx-rs
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
python_pptx_rs-0.0.1-cp310-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl -
Subject digest:
80e5c7ee1ebad350ccff5d4b67555d7ff323ce97b148c95a59493d797fa3d88c - Sigstore transparency entry: 2082529052
- Sigstore integration time:
-
Permalink:
wakita181009/python-pptx-rs@297fb2cda528a2c52db9b281024c054a2e847680 -
Branch / Tag:
refs/tags/v0.0.1 - Owner: https://github.com/wakita181009
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@297fb2cda528a2c52db9b281024c054a2e847680 -
Trigger Event:
push
-
Statement type: