BPE Tokenizer Editor
A high-performance Python library for editing HuggingFace BPE tokenizer.json files with consistency guarantees. Built with Rust for maximum performance.
Features
- ✅ Validate merges - Check that all merge results exist in vocabulary
- ✅ Add tokens - Add new tokens with automatic merge chain creation
- ✅ Remove tokens - Remove tokens with cascade deletion of dependent merges
- ✅ Shrink vocab - Remove N longest tokens to reduce vocabulary size
- ✅ Sync single-chars - Copy all single-character tokens from source tokenizer
- ✅ Merge tokenizers - Convert source tokens to the target byte format and prioritize their merges
- ✅ Keep vocab size fixed - Add tokens while automatically removing others to maintain size
- ✅ Reindex vocab - Make vocabulary IDs sequential by removing gaps
- 🚀 Rust-powered - Native performance with Python convenience
Installation
pip install bpe-tokenizer-editor
Requirements
- Python 3.8+
- No additional dependencies required (Rust code is compiled into the wheel)
Quick Start
from bpe_tokenizer_editor import BPETokenizerEditor
# Load a tokenizer
editor = BPETokenizerEditor("tokenizer.json")
# Check stats
print(f"Vocabulary size: {editor.vocab_size}")
print(f"Number of merges: {editor.merges_count}")
# Validate merges
validation = editor.validate_merges()
print(f"Valid merges: {validation.valid_count}")
print(f"Invalid merges: {validation.invalid_count}")
# Add a new token
result = editor.add_token("merhaba")
print(f"Added: {result.added}, Method: {result.method}")
# Save the modified tokenizer
editor.save("tokenizer_modified.json")
API Reference
Loading and Saving
# Load from file
editor = BPETokenizerEditor("tokenizer.json")
# Load from JSON string
editor = BPETokenizerEditor.from_json(json_string)
# Save to file
editor.save("output.json")
# Export to JSON string
json_str = editor.to_json()
Properties
editor.vocab_size # Current vocabulary size
editor.merges_count # Current number of merge rules
Token Operations
# Check if token exists
editor.has_token("hello") # Returns bool
# Get token ID
editor.get_token_id("hello") # Returns int or None
# Get token by ID
editor.get_token_by_id(1000) # Returns str or None
# Get all tokens as dict
vocab = editor.get_vocab() # Returns Dict[str, int]
# Get all merges
merges = editor.get_merges() # Returns List[Tuple[str, str]]
# Get single-character tokens
single_chars = editor.get_single_char_tokens() # Returns List[Tuple[str, int]]
Merging Tokenizers
# The editor is the target tokenizer whose configuration is preserved.
editor = BPETokenizerEditor("target-tokenizer.json")
result = editor.merge_from(
"source-tokenizer.json",
max_vocab_size=2**18,
)
editor.save("merged-tokenizer.json")
print(result.representation) # "ByteLevel (Ġ)" or "space marker (▁)"
print(result.tokens_injected)
print(result.final_vocab_size) # Includes added/special tokens
merge_from converts source tokens to the target tokenizer's native internal
representation, adds any required UTF-8 byte bridges, and ranks source merges
before original target merges. Source-specific added/special tokens are not injected.
Statistics
stats = editor.get_stats()
print(f"Vocab size: {stats.vocab_size}")
print(f"Merges: {stats.merges_count}")
print(f"Single chars: {stats.single_char_count}")
print(f"Special tokens: {stats.special_token_count}")
print(f"ID range: {stats.min_token_id} - {stats.max_token_id}")
print(f"Length distribution: {stats.length_distribution}")
Validation
# Validate merges (check if merge results exist in vocab)
result = editor.validate_merges()
print(f"Valid: {result.valid_count}, Invalid: {result.invalid_count}")
for idx, token_a, token_b in result.invalid_merges:
print(f" Invalid merge at {idx}: '{token_a}' + '{token_b}'")
# Fix invalid merges (remove them)
removed_count = editor.remove_invalid_merges()
print(f"Removed {removed_count} invalid merges")
Adding Tokens
# Add a single token with automatic merge chain creation
result = editor.add_token("newtoken")
print(f"Added: {result.added}")
print(f"Method: {result.method}") # 'single_char', 'longest_prefix', or 'char_chain'
print(f"Added merges: {result.added_merges}")
# Add multiple tokens
results = editor.add_tokens(["token1", "token2", "token3"])
# Add special token without merge chain
editor.add_token_atomic("<special>")
# Add tokens while keeping vocabulary size fixed
result = editor.add_tokens_keep_size(
tokens=["new1", "new2", "new3"],
whitelist=["protected_token"] # Optional: tokens that should never be removed
)
print(f"Added: {result['tokens_added']}, Removed: {result['tokens_removed']}")
Removing Tokens
# Remove a token and all its dependencies (cascade removal)
result = editor.remove_token("unwanted")
print(f"Root token: {result.root_token}")
print(f"Removed tokens: {result.removed_tokens}")
print(f"Removed merges: {result.removed_merges}")
# Remove multiple tokens
results = editor.remove_tokens(["token1", "token2"])
Shrinking Vocabulary
# Preview what would be removed
tokens_to_remove = editor.find_tokens_to_shrink(count=1000, min_id=50000)
for token, id, length in tokens_to_remove[:10]:
print(f" {token} (ID: {id}, length: {length})")
# Actually shrink the vocabulary
result = editor.shrink(count=1000, min_id=50000)
print(f"Initial size: {result.initial_vocab_size}")
print(f"Final size: {result.final_vocab_size}")
print(f"Tokens removed: {result.total_tokens_removed}")
print(f"Merges removed: {result.total_merges_removed}")
Syncing with Another Tokenizer
# Sync single-character tokens from source tokenizer
# (useful for preserving Unicode coverage)
result = editor.sync_single_chars(
source_path="original_tokenizer.json",
min_id=50000 # Only remove tokens with ID >= 50000
)
print(f"Chars added: {result['chars_added_count']}")
print(f"Tokens removed: {result['total_tokens_removed']}")
Reindexing Vocabulary
After sync operations or modifications, vocabulary IDs may have gaps (e.g., IDs jump from 73000 to 74000). This creates a sparse vocabulary. Use reindex to make all IDs sequential:
# Check for gaps in vocabulary IDs
has_gaps, total_gaps, min_id, max_id = editor.check_vocab_gaps()
if has_gaps:
print(f"Found {total_gaps} gaps in ID space (range: {min_id}-{max_id})")
# Reindex to make IDs sequential
result = editor.reindex_vocab()
print(f"Remapped {result.ids_remapped} IDs")
print(f"Removed {result.gaps_removed} gaps")
print(f"New ID range: {result.new_min_id} - {result.new_max_id}")
Note: The sync_single_chars method automatically calls reindex_vocab after completing, so you typically don't need to call it manually after syncing.
## Examples
### Training a Domain-Specific Tokenizer
```python
from bpe_tokenizer_editor import BPETokenizerEditor
# After training your custom tokenizer, validate and fix it
editor = BPETokenizerEditor("my_custom_tokenizer.json")
# Check for problems
validation = editor.validate_merges()
if validation.invalid_count > 0:
print(f"Found {validation.invalid_count} invalid merges, fixing...")
editor.remove_invalid_merges()
# Sync Unicode characters from original tokenizer
result = editor.sync_single_chars(
source_path="original_tokenizer.json",
min_id=50000
)
print(f"Added {result['chars_added_count']} missing characters")
# Add domain-specific tokens
domain_tokens = ["merhaba", "dünya", "Türkiye"]
for token in domain_tokens:
result = editor.add_token(token)
if result.added:
print(f"Added '{token}' using {result.method} method")
# Save the result
editor.save("my_final_tokenizer.json")
Reducing Vocabulary Size
from bpe_tokenizer_editor import BPETokenizerEditor
editor = BPETokenizerEditor("large_tokenizer.json")
print(f"Original size: {editor.vocab_size}")
# Preview what will be removed
preview = editor.find_tokens_to_shrink(count=10000, min_id=50000)
print(f"Will remove {len(preview)} tokens")
print("First 5 tokens to be removed:")
for token, id, length in preview[:5]:
print(f" '{token}' (length={length}, id={id})")
# Perform the shrink
result = editor.shrink(count=10000, min_id=50000)
print(f"New size: {editor.vocab_size}")
print(f"Total tokens removed (including cascade): {result.total_tokens_removed}")
editor.save("smaller_tokenizer.json")
Adding Tokens with Fixed Vocabulary Size
from bpe_tokenizer_editor import BPETokenizerEditor
editor = BPETokenizerEditor("tokenizer.json")
original_size = editor.vocab_size
# Add new tokens while keeping the same vocabulary size
result = editor.add_tokens_keep_size(
tokens=["custom1", "custom2", "custom3"],
whitelist=["<pad>", "<eos>", "<bos>"] # Never remove these
)
print(f"Tokens added: {result['tokens_added']}")
print(f"Tokens removed to maintain size: {result['tokens_removed']}")
print(f"Final vocab size: {editor.vocab_size}") # Should equal original_size
editor.save("tokenizer_with_custom_tokens.json")
Performance
The library is written in Rust and compiled to native code, providing excellent performance:
| Operation | Time (256K vocab) |
|---|---|
| Load tokenizer | ~50ms |
| Validate merges | ~100ms |
| Get stats | ~50ms |
| Shrink 1000 tokens | 2-5s |
| Sync 18K chars | 30-60s |
Building from Source
If you want to build the package from source:
# Install maturin
pip install maturin
# Build and install in development mode
maturin develop --features python
# Build wheel for distribution
maturin build --release --features python
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
License
MIT License - see LICENSE file for details.
Metadata
Release files for bpe-tokenizer-editor 0.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| bpe_tokenizer_editor-0.2.0.tar.gz | 49.0 kB | Without provenance | Details |
Built distributions (wheels)
Total release size: 8.8 MB
Release files / bpe_tokenizer_editor-0.2.0.tar.gz
| Download URL | bpe_tokenizer_editor-0.2.0.tar.gz |
|---|---|
| Size | 49.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
acc37d2ef7c271a6f0ad6cbb203267d8e5d77dcbeabbb61f54977fe656ebfa97
|
|
BLAKE2b-256 checksum How to use checksums |
ed27892c535c636af362b1ca31a656ae5d44e30fb4cccdc597d520a554c3b2e4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / bpe_tokenizer_editor-0.2.0-cp38-abi3-win_arm64.whl
| Download URL | bpe_tokenizer_editor-0.2.0-cp38-abi3-win_arm64.whl |
|---|---|
| Size | 429.7 kB |
| Tags | CPython 3.8 Windows ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
618ec2d85ad311cc4dfc031c6a45006204486ab6c856651024bb1d6523425a4c
|
|
BLAKE2b-256 checksum How to use checksums |
23a8032e5d55afac9b4439a81dbe5a3a994dd66a8928b0f830c766177fe672d8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / bpe_tokenizer_editor-0.2.0-cp38-abi3-win_amd64.whl
| Download URL | bpe_tokenizer_editor-0.2.0-cp38-abi3-win_amd64.whl |
|---|---|
| Size | 457.9 kB |
| Tags | CPython 3.8 Windows x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
883e6a67b43b0a0d7ec0c71c3c90ec3cf1e7bfa7ea6d1ffdcf7489526fc35c57
|
|
BLAKE2b-256 checksum How to use checksums |
31d90d3df754bbfe5376b9ca34caff4e75969042b5ef1d73596ce13301a3decb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / bpe_tokenizer_editor-0.2.0-cp38-abi3-win32.whl
| Download URL | bpe_tokenizer_editor-0.2.0-cp38-abi3-win32.whl |
|---|---|
| Size | 426.8 kB |
| Tags | CPython 3.8 Windows x86-32 abi3 |
|
SHA-256 checksum How to use checksums |
010fb1fc0da6a041048290473bf12c4db003daf3c38b04caa27bdcef7a27a074
|
|
BLAKE2b-256 checksum How to use checksums |
bbe084c850bcc6c8b21520fc2da627035eea0cb5aebc357cdbc98be788ea0981
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / bpe_tokenizer_editor-0.2.0-cp38-abi3-musllinux_1_2_x86_64.whl
| Download URL | bpe_tokenizer_editor-0.2.0-cp38-abi3-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 758.0 kB |
| Tags | CPython 3.8 Linux musl 1.2+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
18c9373b1f1da2b34c676a73820ac5f953ab9f51dc41e509b20589435df6bab4
|
|
BLAKE2b-256 checksum How to use checksums |
d59096e9f9a1b38f1e05381b4580348057a0142021b6a7ad464c4751ce328623
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / bpe_tokenizer_editor-0.2.0-cp38-abi3-musllinux_1_2_i686.whl
| Download URL | bpe_tokenizer_editor-0.2.0-cp38-abi3-musllinux_1_2_i686.whl |
|---|---|
| Size | 787.3 kB |
| Tags | CPython 3.8 Linux musl 1.2+ x86-32 abi3 |
|
SHA-256 checksum How to use checksums |
c67a74b58cdc9cff8963aa6cf6de4964f11a86cd1d6ab24587c2ab4fb10ead21
|
|
BLAKE2b-256 checksum How to use checksums |
0e7d53e2ec035920c107f4542a4ab91cf2b484527729c2cd177da36f7b64d616
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / bpe_tokenizer_editor-0.2.0-cp38-abi3-musllinux_1_2_armv7l.whl
| Download URL | bpe_tokenizer_editor-0.2.0-cp38-abi3-musllinux_1_2_armv7l.whl |
|---|---|
| Size | 793.0 kB |
| Tags | CPython 3.8 Linux musl 1.2+ ARMv7l abi3 |
|
SHA-256 checksum How to use checksums |
67435bc83450b64d811186223086af5e57eeba71fae0934dfd1055797c57b4b3
|
|
BLAKE2b-256 checksum How to use checksums |
d83fd53d5fbcb0514f41fe73f414cb25af0b90256edec231adb05a6c6f7e9efc
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / bpe_tokenizer_editor-0.2.0-cp38-abi3-musllinux_1_2_aarch64.whl
| Download URL | bpe_tokenizer_editor-0.2.0-cp38-abi3-musllinux_1_2_aarch64.whl |
|---|---|
| Size | 689.2 kB |
| Tags | CPython 3.8 Linux musl 1.2+ ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
aecc55a34a8a29b2f8dd9794f0ad6a5c29e4ea58611e2fa48cab32e6d9504738
|
|
BLAKE2b-256 checksum How to use checksums |
2fbe1da66c63bee47268e7f8396f36ed9492babf7148e97cfe6b1c69d748039d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / bpe_tokenizer_editor-0.2.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | bpe_tokenizer_editor-0.2.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 559.4 kB |
| Tags | CPython 3.8 Linux glibc 2.17+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
f38b4ab52b352a077ac3a70af8c09c5727fd0428f06e8871bdb1be6e131b9fd9
|
|
BLAKE2b-256 checksum How to use checksums |
6cbddbba2ae97083c1f69b73e5fc2e08d8fb1bceb8ec0df7ba1e00c0ba9a07c9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / bpe_tokenizer_editor-0.2.0-cp38-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl
| Download URL | bpe_tokenizer_editor-0.2.0-cp38-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl |
|---|---|
| Size | 584.8 kB |
| Tags | CPython 3.8 Linux glibc 2.17+ IBM System/390x abi3 |
|
SHA-256 checksum How to use checksums |
fd181fd01b703e5acc8cb7a2551c017866f5d242d8b883a701525ea643923517
|
|
BLAKE2b-256 checksum How to use checksums |
cd2049539f1546c94610775eb7032044fb7f006635c809be0c261f888f8a4880
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / bpe_tokenizer_editor-0.2.0-cp38-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
| Download URL | bpe_tokenizer_editor-0.2.0-cp38-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl |
|---|---|
| Size | 677.9 kB |
| Tags | CPython 3.8 Linux glibc 2.17+ PowerPC 64-le abi3 |
|
SHA-256 checksum How to use checksums |
02ed9cc449acb9b10ae0af98ee96fee34a5cd3c5a04a33595716bd43f888b0f9
|
|
BLAKE2b-256 checksum How to use checksums |
947fe80d2425d97664890166e2547da5861e621e26e3ab201074e172dc07dee7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / bpe_tokenizer_editor-0.2.0-cp38-abi3-manylinux_2_17_i686.manylinux2014_i686.whl
| Download URL | bpe_tokenizer_editor-0.2.0-cp38-abi3-manylinux_2_17_i686.manylinux2014_i686.whl |
|---|---|
| Size | 585.3 kB |
| Tags | CPython 3.8 Linux glibc 2.17+ x86-32 abi3 |
|
SHA-256 checksum How to use checksums |
df0421f4db99098d33182d000ef8c692bda45f2f1b98ae129abfbf676cd0a0c9
|
|
BLAKE2b-256 checksum How to use checksums |
f08a0e7214872199ec8156647fa4e40cd69e8e2c39c4a7106e46a5cad52f0a6a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / bpe_tokenizer_editor-0.2.0-cp38-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
| Download URL | bpe_tokenizer_editor-0.2.0-cp38-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl |
|---|---|
| Size | 515.7 kB |
| Tags | CPython 3.8 Linux glibc 2.17+ ARMv7l abi3 |
|
SHA-256 checksum How to use checksums |
ea6b8021bcb76ee92016ff476451d8c527a0c4b2c136abd0ce2523466bbaae18
|
|
BLAKE2b-256 checksum How to use checksums |
d8ea329cfbc9d4b7002c60ce790af744bdcb63c4baef8f21fc03274f612bce2f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / bpe_tokenizer_editor-0.2.0-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
| Download URL | bpe_tokenizer_editor-0.2.0-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl |
|---|---|
| Size | 512.4 kB |
| Tags | CPython 3.8 Linux glibc 2.17+ ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
d31ffd16e49f96e87de7535ca49cdc9ba1fa7f130c367f8ec694f7e7ab8e7c70
|
|
BLAKE2b-256 checksum How to use checksums |
80d75b0c3d8e07926abb4dfd8032dca226358ab31da37ab16111b40b2f976be8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / bpe_tokenizer_editor-0.2.0-cp38-abi3-macosx_11_0_arm64.whl
| Download URL | bpe_tokenizer_editor-0.2.0-cp38-abi3-macosx_11_0_arm64.whl |
|---|---|
| Size | 490.7 kB |
| Tags | CPython 3.8 abi3 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
a3b9ff3e075f1bd331ec7965f625f797089010fdb772da66926e7a9dd4f09b01
|
|
BLAKE2b-256 checksum How to use checksums |
14e08268d40c7b7f466f99478656b04b12e22a57b9dc7469948e1858c319eb2c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / bpe_tokenizer_editor-0.2.0-cp38-abi3-macosx_10_12_x86_64.whl
| Download URL | bpe_tokenizer_editor-0.2.0-cp38-abi3-macosx_10_12_x86_64.whl |
|---|---|
| Size | 516.6 kB |
| Tags | CPython 3.8 abi3 macOS 10.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
9759367b615aae44428f4d1fd9f6718d80c31ea610ccb80e2023ad5daff4dea3
|
|
BLAKE2b-256 checksum How to use checksums |
5b49f8ed171739e73538c93ecda7445426cc40e9900ec29d4efac7417979e537
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Security for bpe-tokenizer-editor 0.2.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.