Skip to main content

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.

Download files

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

Source Distribution

pureini-0.10.0.tar.gz (40.4 kB view details)

Uploaded Source

Built Distributions

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

pureini-0.10.0-cp310-abi3-win_amd64.whl (562.9 kB view details)

Uploaded CPython 3.10+Windows x86-64

pureini-0.10.0-cp310-abi3-musllinux_1_2_x86_64.whl (1.0 MB view details)

Uploaded CPython 3.10+musllinux: musl 1.2+ x86-64

pureini-0.10.0-cp310-abi3-musllinux_1_2_aarch64.whl (950.7 kB view details)

Uploaded CPython 3.10+musllinux: musl 1.2+ ARM64

pureini-0.10.0-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (821.6 kB view details)

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

pureini-0.10.0-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (737.5 kB view details)

Uploaded CPython 3.10+manylinux: glibc 2.17+ ARM64

pureini-0.10.0-cp310-abi3-macosx_11_0_arm64.whl (636.3 kB view details)

Uploaded CPython 3.10+macOS 11.0+ ARM64

pureini-0.10.0-cp310-abi3-macosx_10_12_x86_64.whl (725.1 kB view details)

Uploaded CPython 3.10+macOS 10.12+ x86-64

File details

Details for the file pureini-0.10.0.tar.gz.

File metadata

  • Download URL: pureini-0.10.0.tar.gz
  • Upload date:
  • Size: 40.4 kB
  • Tags: Source
  • Uploaded using 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}

File hashes

Hashes for pureini-0.10.0.tar.gz
Algorithm Hash digest
SHA256 d1f9d9a780868a0332373603dcf388319f534247a01363a67e681886946f3865
MD5 531c79b6ce35247e93133012c34b93e7
BLAKE2b-256 7d5afe5b345d83da9c6c6e89778f457890c203e06ae1cc72b9479e767dbef81f

See more details on using hashes here.

File details

Details for the file pureini-0.10.0-cp310-abi3-win_amd64.whl.

File metadata

  • Download URL: pureini-0.10.0-cp310-abi3-win_amd64.whl
  • Upload date:
  • Size: 562.9 kB
  • Tags: CPython 3.10+, Windows x86-64
  • Uploaded using 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}

File hashes

Hashes for pureini-0.10.0-cp310-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 3b6365ad40315d88f07f7f1afa01640f31e844169423de7a335459bc6a3ef548
MD5 b394fd807836de70c764ca80c6af3255
BLAKE2b-256 13204c4cf2ab83ae3099ad3d9234bf777b80db1b1e5e083ad8680b4621d340a4

See more details on using hashes here.

File details

Details for the file pureini-0.10.0-cp310-abi3-musllinux_1_2_x86_64.whl.

File metadata

  • Download URL: pureini-0.10.0-cp310-abi3-musllinux_1_2_x86_64.whl
  • Upload date:
  • Size: 1.0 MB
  • Tags: CPython 3.10+, musllinux: musl 1.2+ x86-64
  • Uploaded using 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}

File hashes

Hashes for pureini-0.10.0-cp310-abi3-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 c96127faa699692f5e08f2d9df3315431cb4582eeb9ea58da15d2cb71f5826e5
MD5 b6e8e1246a083ff9cae470b43e9f6069
BLAKE2b-256 125509030131542a239ac3993d337f4b87311a3e320948245a23201cdaee5cc5

See more details on using hashes here.

File details

Details for the file pureini-0.10.0-cp310-abi3-musllinux_1_2_aarch64.whl.

File metadata

  • Download URL: pureini-0.10.0-cp310-abi3-musllinux_1_2_aarch64.whl
  • Upload date:
  • Size: 950.7 kB
  • Tags: CPython 3.10+, musllinux: musl 1.2+ ARM64
  • Uploaded using 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}

File hashes

Hashes for pureini-0.10.0-cp310-abi3-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 5f78a322fd034eb5566d8d7899b7ab4bc0d43f4c72f68dcdba17fc0931bf569b
MD5 d8cbf1016b76eaeeee4e08da1a0efdde
BLAKE2b-256 a6e0b3a0d3ae8f97b85a8759136044649f7c65507d46c602827775d3eb3dfb00

See more details on using hashes here.

File details

Details for the file pureini-0.10.0-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

  • Download URL: pureini-0.10.0-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
  • Upload date:
  • Size: 821.6 kB
  • Tags: CPython 3.10+, manylinux: glibc 2.17+ x86-64
  • Uploaded using 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}

File hashes

Hashes for pureini-0.10.0-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 8bcca3e1298949d686253b132468d423977e9bbf061f2cbe01fd5e3b937b0eaa
MD5 8fea48bfd42dd658c3f02b2314ac94e6
BLAKE2b-256 b41ec7d4dab9a854d19b5919a8136da65b9f8a9314e57a1a53a6f4eb98568d5e

See more details on using hashes here.

File details

Details for the file pureini-0.10.0-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

  • Download URL: pureini-0.10.0-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
  • Upload date:
  • Size: 737.5 kB
  • Tags: CPython 3.10+, manylinux: glibc 2.17+ ARM64
  • Uploaded using 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}

File hashes

Hashes for pureini-0.10.0-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 ff320a883f2bf7e6e37a9064cc3ce88dbd2e603c5ada39065da95918e0597986
MD5 92b4c67d9f3fc4b53b629d578fae83d9
BLAKE2b-256 67364efd19beee38d1538e64242a551a53049b383de3a6261e3202f27a1cef8b

See more details on using hashes here.

File details

Details for the file pureini-0.10.0-cp310-abi3-macosx_11_0_arm64.whl.

File metadata

  • Download URL: pureini-0.10.0-cp310-abi3-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 636.3 kB
  • Tags: CPython 3.10+, macOS 11.0+ ARM64
  • Uploaded using 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}

File hashes

Hashes for pureini-0.10.0-cp310-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 69b21dffd1388d26fdf7260ba3da6c0bf0f94a98bd70806a156ab2783e663bf9
MD5 e2cebb6f30b83282b36ae6ab911cb8cd
BLAKE2b-256 470f120d7dd81948f9c120e5fa1ce178530281160be459a7d9105c4ee887415a

See more details on using hashes here.

File details

Details for the file pureini-0.10.0-cp310-abi3-macosx_10_12_x86_64.whl.

File metadata

  • Download URL: pureini-0.10.0-cp310-abi3-macosx_10_12_x86_64.whl
  • Upload date:
  • Size: 725.1 kB
  • Tags: CPython 3.10+, macOS 10.12+ x86-64
  • Uploaded using 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}

File hashes

Hashes for pureini-0.10.0-cp310-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 46cdf6cb9c1f038f262f6a8f0c8b9f80268e0305b3d50383462142161753e1b5
MD5 78067658d0b3ebb7fbc0af43b8a92ecb
BLAKE2b-256 4ecb299ca6d9491867c48eae6167f8215d971ade5512bd3e21ff2745dc97bfe4

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.10.0 This release

8 files

0.9.0

8 files

0.8.0

2 files

0.7.0

2 files

0.6.0

2 files

0.5.0

2 files

0.4.0

2 files

0.3.0

2 files

0.2.0

2 files

0.1.1

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page