Skip to main content

Python bindings wrapping the bpe-openai Rust tokenizer crate with a tiktoken-compatible API.

Project description

bpe-openai

CI Release Wheels

bpe-openai is a tiktoken-compatible tokenizer API backed by the Rust bpe-openai crate. Pathlit maintains the Python wrapper, while the core tokenizer implementation is developed by GitHub and published in the rust-gems project. Published wheels bundle the tokenizer data, so the package works out of the box on Python 3.9 and newer.

Installation

pip install bpe-openai

Installing from a source distribution requires a Rust toolchain:

pip install --no-binary bpe-openai bpe-openai==<version>

Quick start

import bpe_openai as bpe

enc = bpe.get_encoding("cl100k_base")
tokens = enc.encode("Smoke tests keep releases honest.")
print(tokens)
print(enc.decode(tokens))

# Model-aware helper
chat_enc = bpe.encoding_for_model("gpt-4o")

Compatibility snapshot

API / Feature Status Notes
get_encoding, encoding_for_model Supports cl100k_base, o200k_base, voyage3_base, and related models
Encoding.encode, Encoding.decode Rust backend ensures parity with tiktoken
Encoding.encode_batch Matches tiktoken's batching behaviour
Custom special tokens ⚠️ Not yet configurable at runtime
Legacy GPT-2 / r50k / p50k encodings ⚠️ Planned; current focus is on modern OpenAI models
Metrics hook (set_metrics_hook) Emits model, token count, latency, backend version

Legend: ✅ fully supported · ⚠️ partial / planned

Why we built it

Long, repetitive prompts can hit pathological slow paths in tiktoken. To stress-test both libraries we encoded inputs of the form "A" * n and measured latency. bpe-openai stays effectively flat while tiktoken grows sharply with input length, unlocking workloads like prompt templating and log chunking that stalled with the reference implementation.

Encoding time vs. input length

Smoke test

After installing from PyPI, run a quick confidence check:

python - <<'PY'
import bpe_openai as bpe
enc = bpe.get_encoding("cl100k_base")
text = "Smoke tests keep releases honest."
tokens = enc.encode(text)
assert enc.decode(tokens) == text
print("✅ bpe-openai smoke test passed.")
PY

Repository layout

  • python/ – Python package wrapping the Rust tokenizer as a CPython extension.
  • rust/ – Rust crate that loads tokenizer specs and exposes the fast BPE APIs.
  • scripts/ – Helper utilities for benchmarking, parity checks, and data sync.
  • vendor/ – Vendored tokenizer definitions sourced from GitHub's upstream release.

Development

python -m venv .venv
source .venv/bin/activate
python scripts/sync_tokenizer_data.py  # ensures tokenizer assets are copied
pip install maturin
cd python
maturin develop --release
pytest

The repository includes scripts/sync_tokenizer_data.py to copy the vendored .tiktoken.gz files into python/bpe_openai/data/ before building wheels or an sdist.

Release process (maintainers)

  1. Update the version string in python/pyproject.toml. The runtime fallback reads the same file, so one change keeps packaging metadata and bpe_openai.__version__ in sync.
  2. Run python scripts/sync_tokenizer_data.py to refresh bundled assets.
  3. Commit the changes and tag the release (git tag vX.Y.Z).
  4. Push the tag. The Release Wheels GitHub Actions workflow builds wheels, publishes a GitHub release, and uploads to PyPI via Trusted Publishing.

Contributing

Contributions are warmly welcomed—whether you are filing a bug, improving parity with new OpenAI models, or squeezing out more performance. Open an issue or pull request and the Pathlit team will review quickly.

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

bpe_openai-0.1.4.tar.gz (7.5 MB view details)

Uploaded Source

Built Distributions

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

bpe_openai-0.1.4-cp39-abi3-win_amd64.whl (41.4 MB view details)

Uploaded CPython 3.9+Windows x86-64

bpe_openai-0.1.4-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (41.6 MB view details)

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

bpe_openai-0.1.4-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (41.5 MB view details)

Uploaded CPython 3.9+manylinux: glibc 2.17+ ARM64

bpe_openai-0.1.4-cp39-abi3-macosx_11_0_arm64.whl (42.0 MB view details)

Uploaded CPython 3.9+macOS 11.0+ ARM64

File details

Details for the file bpe_openai-0.1.4.tar.gz.

File metadata

  • Download URL: bpe_openai-0.1.4.tar.gz
  • Upload date:
  • Size: 7.5 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for bpe_openai-0.1.4.tar.gz
Algorithm Hash digest
SHA256 834b55afffb33033c51d09283cf65c988daa1ff83be40c58ce8c7fa7ec6f5dd9
MD5 80b7fd733f606f40d1fbe48fdf65a788
BLAKE2b-256 39d0b40f8f84cf13d97e8c748ea526360fe5da6392825dd9b037599557ca31ba

See more details on using hashes here.

Provenance

The following attestation bundles were made for bpe_openai-0.1.4.tar.gz:

Publisher: release-wheels.yml on Pathlit-Inc/bpe-openai

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

File details

Details for the file bpe_openai-0.1.4-cp39-abi3-win_amd64.whl.

File metadata

  • Download URL: bpe_openai-0.1.4-cp39-abi3-win_amd64.whl
  • Upload date:
  • Size: 41.4 MB
  • Tags: CPython 3.9+, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for bpe_openai-0.1.4-cp39-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 b382c54f267922144ff0e851a0dc4f19fb6734bcb15d2963229c09c7386977cb
MD5 b331a718526e85b107140ae7f9ef7165
BLAKE2b-256 b8f927f9b0b61664aa7fff929dcaa1f95949e66fab48aad14352f9459f7a05d9

See more details on using hashes here.

Provenance

The following attestation bundles were made for bpe_openai-0.1.4-cp39-abi3-win_amd64.whl:

Publisher: release-wheels.yml on Pathlit-Inc/bpe-openai

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

File details

Details for the file bpe_openai-0.1.4-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for bpe_openai-0.1.4-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 91dde48b7c27a155ec94563ef488d95267bd17e2e8db360aba299ca9819335ba
MD5 9141ef5e13c8efa111df61d7d1df693d
BLAKE2b-256 0078ff91a635cb338a141ed36f22a206d20a6fb8fd623bb52a17921303c3dce0

See more details on using hashes here.

Provenance

The following attestation bundles were made for bpe_openai-0.1.4-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release-wheels.yml on Pathlit-Inc/bpe-openai

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

File details

Details for the file bpe_openai-0.1.4-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for bpe_openai-0.1.4-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 08fee77717d56bd6ffa86b46283f8ce5553151cc0e4967001af26f37b81c3276
MD5 06e1c1cd788330fcdb1e824b4d68ad1b
BLAKE2b-256 f15962c084d1ca0e9825e19dcd65c127224b097b692d1e582322e805faa85584

See more details on using hashes here.

Provenance

The following attestation bundles were made for bpe_openai-0.1.4-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: release-wheels.yml on Pathlit-Inc/bpe-openai

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

File details

Details for the file bpe_openai-0.1.4-cp39-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for bpe_openai-0.1.4-cp39-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a754c738d85dca11bfd1d7ce474419bf39a3e2bdb79b7a0c40329c97f350cfa5
MD5 d06938f679f853b4bfeb2b4a76cd93fd
BLAKE2b-256 74f676b27244fae799b7716941fce2f5d5062ad2b392ed7371aeb18dddc99603

See more details on using hashes here.

Provenance

The following attestation bundles were made for bpe_openai-0.1.4-cp39-abi3-macosx_11_0_arm64.whl:

Publisher: release-wheels.yml on Pathlit-Inc/bpe-openai

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