pureini
CloudINI-compatible point-cloud compression for Python, implemented as a Rust/PyO3 extension.
- Reads CloudINI V2, V3, V4, and V5 payloads.
- Writes the current V5 format by default, with V2-V4 output available through
EncodingInfo.version. - Supports no second-stage compression, LZ4, and Zstandard.
- Has no Python runtime dependencies and does not require NumPy, Numba, or LLVM.
- Uses Python's stable ABI for CPython 3.10 and newer.
import pureini
info = pureini.EncodingInfo(
width=1,
height=1,
point_step=4,
fields=[
pureini.PointField(
name="x",
offset=0,
type=pureini.FieldType.FLOAT32,
resolution=0.001,
)
],
)
encoded = pureini.PointcloudEncoder(info).encode(b"\0\0\0\0")
decoded, decoded_info = pureini.PointcloudDecoder().decode(encoded)
The public API is deliberately limited to PointField, EncodingInfo,
FieldType, EncodingOptions, CompressionOption, PointcloudEncoder, and
PointcloudDecoder. Wire-format primitives and header helpers are internal.
Point-cloud cleanup can be fused into the native encode call. This removes invalid XYZ returns, stably groups retained points by a discrete field, and returns the updated layout together with the payload:
encoded, output_point_count, did_filter_invalid_xyz = pureini.PointcloudEncoder(info).encode(
cloud_data,
drop_invalid=True,
sort_field="line",
return_metadata=True,
)
return_metadata=True opts into the tuple result. Without it, encode returns
bytes directly even when preprocessing is enabled. output_point_count is
None when preprocessing leaves the input layout unchanged. point_step
never changes, and transformed clouds are one row high.
Source point data is little-endian by default. Pass is_bigendian=True to
normalize big-endian fields in Rust before preprocessing or encoding.
Native preprocessing is opt-in and releases the GIL; larger counting-sort workloads run in parallel.
Add it to a project with uv add pureini.
Distribution
Release artifacts use CPython's stable ABI and cover Python 3.10 and newer:
- manylinux and musllinux wheels for x86-64 and AArch64;
- macOS wheels for Intel and Apple Silicon;
- Windows x86-64 wheels;
- a source distribution containing the complete Rust crate.
CI tests native wheels on CPython 3.10 and 3.14 and independently rebuilds and tests the source distribution.
Benchmarking
Benchmark a release wheel rather than the editable debug build:
uv build --package pureini --out-dir dist
uv run --isolated --no-project --with dist/pureini-0.8.0-*.whl \
python pureini/benchmarks/benchmark_matrix.py
The matrix uses warmed median timings for structured and random integers,
lossy and lossless XYZ, LZ4, Zstandard, and mixed LiDAR fields. Adjust
--points, --iterations, and --warmups for the target machine.
Compare the fused Rust preprocessing path against the previous warmed Numba pipeline and require a material win:
uv run --with numba python pureini/benchmarks/benchmark_preprocessing.py \
--points 500000 --iterations 30 --warmups 8 --minimum-speedup 1.25
The benchmark validates decoded bytes and layout before timing. Its default
fixture contains 20% invalid XYZ placeholders and 128 interleaved line
groups.
Metadata
Release files for pureini 0.10.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 | Actions |
|---|---|---|---|---|
| pureini-0.10.0.tar.gz | 40.4 kB | Without provenance | Details for pureini-0.10.0.tar.gz |
Built distributions (wheels)
Total release size: 5.5 MB
Release files / pureini-0.10.0.tar.gz
| Download URL | pureini-0.10.0.tar.gz |
|---|---|
| Size | 40.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d1f9d9a780868a0332373603dcf388319f534247a01363a67e681886946f3865
|
|
BLAKE2b-256 checksum How to use checksums |
7d5afe5b345d83da9c6c6e89778f457890c203e06ae1cc72b9479e767dbef81f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.1 {"installer":{"name":"uv","version":"0.12.1","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 / pureini-0.10.0-cp310-abi3-win_amd64.whl
| Download URL | pureini-0.10.0-cp310-abi3-win_amd64.whl |
|---|---|
| Size | 562.9 kB |
| Tags | CPython 3.10 Windows x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
3b6365ad40315d88f07f7f1afa01640f31e844169423de7a335459bc6a3ef548
|
|
BLAKE2b-256 checksum How to use checksums |
13204c4cf2ab83ae3099ad3d9234bf777b80db1b1e5e083ad8680b4621d340a4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.1 {"installer":{"name":"uv","version":"0.12.1","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 / pureini-0.10.0-cp310-abi3-musllinux_1_2_x86_64.whl
| Download URL | pureini-0.10.0-cp310-abi3-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 1.0 MB |
| Tags | CPython 3.10 Linux musl 1.2+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
c96127faa699692f5e08f2d9df3315431cb4582eeb9ea58da15d2cb71f5826e5
|
|
BLAKE2b-256 checksum How to use checksums |
125509030131542a239ac3993d337f4b87311a3e320948245a23201cdaee5cc5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.1 {"installer":{"name":"uv","version":"0.12.1","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 / pureini-0.10.0-cp310-abi3-musllinux_1_2_aarch64.whl
| Download URL | pureini-0.10.0-cp310-abi3-musllinux_1_2_aarch64.whl |
|---|---|
| Size | 950.7 kB |
| Tags | CPython 3.10 Linux musl 1.2+ ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
5f78a322fd034eb5566d8d7899b7ab4bc0d43f4c72f68dcdba17fc0931bf569b
|
|
BLAKE2b-256 checksum How to use checksums |
a6e0b3a0d3ae8f97b85a8759136044649f7c65507d46c602827775d3eb3dfb00
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.1 {"installer":{"name":"uv","version":"0.12.1","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 / pureini-0.10.0-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | pureini-0.10.0-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 821.6 kB |
| Tags | CPython 3.10 Linux glibc 2.17+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
8bcca3e1298949d686253b132468d423977e9bbf061f2cbe01fd5e3b937b0eaa
|
|
BLAKE2b-256 checksum How to use checksums |
b41ec7d4dab9a854d19b5919a8136da65b9f8a9314e57a1a53a6f4eb98568d5e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.1 {"installer":{"name":"uv","version":"0.12.1","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 / pureini-0.10.0-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
| Download URL | pureini-0.10.0-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl |
|---|---|
| Size | 737.5 kB |
| Tags | CPython 3.10 Linux glibc 2.17+ ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
ff320a883f2bf7e6e37a9064cc3ce88dbd2e603c5ada39065da95918e0597986
|
|
BLAKE2b-256 checksum How to use checksums |
67364efd19beee38d1538e64242a551a53049b383de3a6261e3202f27a1cef8b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.1 {"installer":{"name":"uv","version":"0.12.1","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 / pureini-0.10.0-cp310-abi3-macosx_11_0_arm64.whl
| Download URL | pureini-0.10.0-cp310-abi3-macosx_11_0_arm64.whl |
|---|---|
| Size | 636.3 kB |
| Tags | CPython 3.10 abi3 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
69b21dffd1388d26fdf7260ba3da6c0bf0f94a98bd70806a156ab2783e663bf9
|
|
BLAKE2b-256 checksum How to use checksums |
470f120d7dd81948f9c120e5fa1ce178530281160be459a7d9105c4ee887415a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.1 {"installer":{"name":"uv","version":"0.12.1","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 / pureini-0.10.0-cp310-abi3-macosx_10_12_x86_64.whl
| Download URL | pureini-0.10.0-cp310-abi3-macosx_10_12_x86_64.whl |
|---|---|
| Size | 725.1 kB |
| Tags | CPython 3.10 abi3 macOS 10.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
46cdf6cb9c1f038f262f6a8f0c8b9f80268e0305b3d50383462142161753e1b5
|
|
BLAKE2b-256 checksum How to use checksums |
4ecb299ca6d9491867c48eae6167f8215d971ade5512bd3e21ff2745dc97bfe4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.1 {"installer":{"name":"uv","version":"0.12.1","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 pureini 0.10.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.