Rust-backed helpers for Artemis-style base-57 identifiers
Project description
id57
Rust-backed helpers for generating Artemis-compatible base-57 identifiers.
The project packages a Rust extension that mirrors the existing Python
implementation of Artemis' identifier helpers: the ALPHABET constant plus the
base57_encode, decode57, and generate_id57 functions. Identifiers preserve
lexicographic ordering by concatenating an encoded timestamp (11 base-57
characters) with an encoded UUID component (22 base-57 characters).
Installation
Pre-built wheels are published to PyPI. Once available, install with:
pip install id57
If a wheel is not available for your platform the package falls back to a pure-Python implementation that matches the Rust behavior, so the same API is available everywhere.
Usage
>>> from id57 import ALPHABET, base57_encode, decode57, generate_id57
>>> ALPHABET
'23456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'
>>> base57_encode(999_999)
'7Qnr'
>>> decode57('7Qnr')
999999
>>> len(generate_id57())
33
The default generator encodes the current UTC timestamp in microseconds and a UUID4 into a 33 character string. You can also supply the parts explicitly:
>>> generate_id57(timestamp=1_700_000_000_123_456, uuid=0x1234)
'22HGcpYU2og22222222222222222223Sm'
Development
The repository uses uv for Python dependency
management and maturin for building the Rust
extension. Helpful targets are available in the Makefile:
make develop # Build and install the extension into uv's virtual environment
make test # Run the pytest suite
make build # Produce wheels via maturin
make publish # Publish wheels to PyPI (requires credentials)
The test suite exercises both the encode/decode helpers and the generate_id57
composition logic, comparing the Rust implementation against the bundled
pure-Python reference for parity.
Publishing workflow
- Build wheels locally:
make build - Verify the wheel installs and the API works:
pip install dist/id57-*.whl - Publish to TestPyPI or PyPI:
make publish - Tag the release (e.g.
v1.0.0) and record the changes inCHANGELOG.md
The CI workflow publishes signed wheels to PyPI whenever a commit lands on
main, using the PYPI_TOKEN secret and creating a matching GitHub Release.
License
Distributed under the MIT License. See LICENSE for details.
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 id57-1.0.0.tar.gz.
File metadata
- Download URL: id57-1.0.0.tar.gz
- Upload date:
- Size: 32.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.9.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b7e174f305a16b5b25d46a957e44f8b3ec5ef3e359448978e5ae94f851f7062d
|
|
| MD5 |
1cf476f2dc3b8a7cde9687114a94b028
|
|
| BLAKE2b-256 |
995620501da3ca6363321bc491e1f2bab2c1cb0957b470a26f42c7aac0671084
|
File details
Details for the file id57-1.0.0-cp39-abi3-win_amd64.whl.
File metadata
- Download URL: id57-1.0.0-cp39-abi3-win_amd64.whl
- Upload date:
- Size: 138.3 kB
- Tags: CPython 3.9+, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.9.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
24644043f0e7f169a3f4d9ba81b45165b8c68e8e37b773023afa2aafa716353d
|
|
| MD5 |
3934830754251b7a3ccb11c6c16f1d81
|
|
| BLAKE2b-256 |
8a59ed0593841b366d1a30789c6fa2454cbc91ff156bbb7524da3e6fbf748c85
|
File details
Details for the file id57-1.0.0-cp39-abi3-manylinux_2_34_x86_64.whl.
File metadata
- Download URL: id57-1.0.0-cp39-abi3-manylinux_2_34_x86_64.whl
- Upload date:
- Size: 239.3 kB
- Tags: CPython 3.9+, manylinux: glibc 2.34+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.9.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
392f9436e8d2432ac1e6ea5c59609c6a2675d47a2827a5fff18d77974c88700c
|
|
| MD5 |
746079d9960a2aa80e508a17c5b1e273
|
|
| BLAKE2b-256 |
567afe7b07beb20afd2984f06e31823e8789ff23f3c5e8457621f5800a2c880d
|
File details
Details for the file id57-1.0.0-cp39-abi3-macosx_11_0_arm64.whl.
File metadata
- Download URL: id57-1.0.0-cp39-abi3-macosx_11_0_arm64.whl
- Upload date:
- Size: 202.3 kB
- Tags: CPython 3.9+, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.9.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
35ecb58df4f08134211369b8fa5db0579d06c9e95f7f9d94590bec117593cac9
|
|
| MD5 |
657349d9b4e833720dc447306d308ca9
|
|
| BLAKE2b-256 |
87aae37c5c4bf5d68fb95ff019c44b7a8a8d6f1e09f9e63ea7e93895066d5c51
|