Skip to main content

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, then import 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

python_pptx_rs-0.0.1.tar.gz (49.8 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

python_pptx_rs-0.0.1-cp310-abi3-win_amd64.whl (807.8 kB view details)

Uploaded CPython 3.10+Windows x86-64

python_pptx_rs-0.0.1-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.17+ x86-64

python_pptx_rs-0.0.1-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.0 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.17+ ARM64

python_pptx_rs-0.0.1-cp310-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl (1.8 MB view details)

Uploaded CPython 3.10+macOS 10.12+ universal2 (ARM64, x86-64)macOS 10.12+ x86-64macOS 11.0+ ARM64

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

Hashes for python_pptx_rs-0.0.1.tar.gz
Algorithm Hash digest
SHA256 c9c4e611d684ff7c04e86f0035ab87d5f1b18848903b835468864e466d4b8d68
MD5 a0e035a6d943b51cd8619da7b9418df3
BLAKE2b-256 2a443dddc61af364fb96b93657370fb4068a8234139d4a0852940562f05327c5

See more details on using hashes here.

Provenance

The following attestation bundles were made for python_pptx_rs-0.0.1.tar.gz:

Publisher: release.yml on wakita181009/python-pptx-rs

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file python_pptx_rs-0.0.1-cp310-abi3-win_amd64.whl.

File metadata

File hashes

Hashes for python_pptx_rs-0.0.1-cp310-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 c37d4d40134bb765b673377ff27974f04b497f121ea1e37ee2ae82e19c5e7a57
MD5 ef8ecda177eb187e443dfa0cb91a1180
BLAKE2b-256 069bb3b7256e294b608aa86baff2a7e667dce4a05b098c47176dda856c37f5a9

See more details on using hashes here.

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

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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

File hashes

Hashes for python_pptx_rs-0.0.1-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a1066e653f3b023dc4d2e26644be37efe3b2c72565b698900b2eadbf756ee588
MD5 5427f0dc6ddf99ce8093a287695cb215
BLAKE2b-256 4ec954c08118cf719fcfdc17f0b7421533a320d0e6f87fac7d228349c9b340e2

See more details on using hashes here.

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

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file python_pptx_rs-0.0.1-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for python_pptx_rs-0.0.1-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 7291bb384ccc7699490cc7d9a3e4aaddece7454e52de23eaa07e88eb6ac5d129
MD5 a5565306a8856e4ec62ed00b1fd58be4
BLAKE2b-256 8fe2e4267a84e88afec3cf37406c7999360b7596172ba63b3f59b86bfe9e51e6

See more details on using hashes here.

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

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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

File hashes

Hashes for python_pptx_rs-0.0.1-cp310-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Algorithm Hash digest
SHA256 80e5c7ee1ebad350ccff5d4b67555d7ff323ce97b148c95a59493d797fa3d88c
MD5 f08094d2c8ab8951fe7b3c70900d3528
BLAKE2b-256 3b20e70ecb4626bd9dd3640e4796a441af2e267ef46be06d638872dfbdffe9f0

See more details on using hashes here.

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

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page