Skip to main content

iris

Ship the decoder with the data.

A container carries a reference to a WebAssembly decoder alongside its bytes, and this reads one without linking a format specific reader. Open it and hand it to anything that speaks Arrow.

import iris
import pyarrow as pa

runtime = iris.Runtime()
dataset = runtime.open_path("sample.iris")
table = pa.table(dataset)

pa.table works because a dataset carries __arrow_c_stream__, which is the Arrow PyCapsule interface, so polars, DuckDB and nanoarrow read one the same way. Nothing in the wheel imports pyarrow and the wheel does not depend on it. That is the reason there is no to_pandas and no to_table here: the protocol already exists, every consumer worth handing bytes to speaks it, and a tenth version of it is not an improvement.

The buffers are not copied on the way across. What the consumer takes ownership of is the memory the decoder wrote, and tests/test_iris.py checks that by watching pyarrow's allocator, which does not grow when a table is imported this way.

The whole API

runtime = iris.Runtime()
runtime.set_compilation_cache("/var/cache/iris/decoders")   # off until this is called

dataset = runtime.open_path("sample.iris")
dataset = runtime.open(open("sample.iris", "rb").read())

dataset.name, dataset.num_columns, dataset.column_names
pa.schema(dataset)
pa.table(dataset)
pa.table(dataset.scan([0, 2]))                              # by position in the schema

One runtime per process is the point of the runtime. Every dataset opened from the same one shares its compiled decoders, so the second container to be opened does not compile anything. Making a runtime per file throws that away, and with a compilation cache named it is the difference between tens of milliseconds and a fraction of one. docs/COLD_START.md in the repository has the numbers.

The name

The distribution is irisdb on PyPI and the module is iris, for the same reason the crate is irisdb on crates.io and the command line tool it installs is called iris: the bare name was taken in both places before this project existed.

What it is not

This is a wrapper over the C ABI in iris-c rather than a second implementation. Python and C get the same open, the same projection rule and the same behaviour on a container that reopens for each scan, because there is one implementation of all three and neither binding contains a copy of it.

A container larger than memory is read a range at a time through the windowed path, and that path is Rust only today. From Python, a container is opened whole.

Part of iris. Licensed under Apache-2.0.

Metadata

Release files for irisdb 0.8.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distributions (wheels)

Table of built distributions (wheels) for irisdb 0.8.1
File
irisdb-0.8.1-cp39-abi3-win_amd64.whl CPython 3.9 abi3 Windows x86-64 Details
irisdb-0.8.1-cp39-abi3-manylinux_2_28_x86_64.whl CPython 3.9 abi3 Linux glibc 2.28+ x86-64 Details
irisdb-0.8.1-cp39-abi3-manylinux_2_28_aarch64.whl CPython 3.9 abi3 Linux glibc 2.28+ ARM64 Details
irisdb-0.8.1-cp39-abi3-macosx_11_0_arm64.whl CPython 3.9 abi3 macOS 11.0+ ARM64 Details
irisdb-0.8.1-cp39-abi3-macosx_10_12_x86_64.whl CPython 3.9 abi3 macOS 10.12+ x86-64 Details

Total release size: 20.8 MB

Release files / irisdb-0.8.1-cp39-abi3-win_amd64.whl

Download URL irisdb-0.8.1-cp39-abi3-win_amd64.whl
Size 4.4 MB
Tags CPython 3.9 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
944875ed275c48e02412239e118681508f8fbc5e38662eefa806cc313d0fb9ea
BLAKE2b-256 checksum
How to use checksums
3b124beaee3311cbbb291aefc4e061af13125e3bf156503027b2bd0617884971
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / irisdb-0.8.1-cp39-abi3-manylinux_2_28_x86_64.whl

Download URL irisdb-0.8.1-cp39-abi3-manylinux_2_28_x86_64.whl
Size 4.6 MB
Tags CPython 3.9 Linux glibc 2.28+ x86-64 abi3
SHA-256 checksum
How to use checksums
f50d12f75e7cb3698b1af20475cc9698ef3af4296400440fce91c1e01e13ec5b
BLAKE2b-256 checksum
How to use checksums
234eca88e0ac1ea93833774de3e567d38066fa8e0d826052f9193decae14fd51
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / irisdb-0.8.1-cp39-abi3-manylinux_2_28_aarch64.whl

Download URL irisdb-0.8.1-cp39-abi3-manylinux_2_28_aarch64.whl
Size 3.7 MB
Tags CPython 3.9 Linux glibc 2.28+ ARM64 abi3
SHA-256 checksum
How to use checksums
6e13fcd6575b0bfeaeb3ded8966385968bb676cea255c7fa015a9a256a5a4bb4
BLAKE2b-256 checksum
How to use checksums
2ab7090b427a5204a70ea3923468f767b5df1c8883935b3ab1ae0fed26c77707
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / irisdb-0.8.1-cp39-abi3-macosx_11_0_arm64.whl

Download URL irisdb-0.8.1-cp39-abi3-macosx_11_0_arm64.whl
Size 3.6 MB
Tags CPython 3.9 abi3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
85c9e9aeb4f84f273ab2f4a90ab0167a6366538693aff6cf8c69bfce3ae5465b
BLAKE2b-256 checksum
How to use checksums
a50cf7b5bdc3788166d9e290545acb4f7d4233072eddddf721827a3bf43016d0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / irisdb-0.8.1-cp39-abi3-macosx_10_12_x86_64.whl

Download URL irisdb-0.8.1-cp39-abi3-macosx_10_12_x86_64.whl
Size 4.4 MB
Tags CPython 3.9 abi3 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
ea1683b7a9c3cd45f80e3d98372a0cc091f2d8026ae918d43e05108071787786
BLAKE2b-256 checksum
How to use checksums
100fb37476c1b3cc7084a9dc4d66eca0888dcecc56119ea57dea682a024281f1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release history Release notifications | RSS feed

0.9.1

5 release files

This release

0.8.1 This release

5 release 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