Skip to main content

linaldb (Python native bindings)

Embedded native Python bindings for LINALDB — a PyO3 extension linking the same synchronous engine the CLI/REPL runs (TensorDb/execute_line, src/engine/db.rs + src/dsl/mod.rs) directly into your Python process. No server, no network — this is the "use it like SQLite" story, as opposed to clients/python (a thin HTTP client for a running linal serve). See ../EMBEDDED_CONTRACT.md for the exact result shapes this module implements.

Published on PyPI as linaldb:

pip install linaldb

Status

Nine releases on PyPI so far, 0.1.0 through 0.1.8 — most bumped purely to pick up a real engine fix (this crate has no code of its own beyond the PyO3 bindings), each found via genuine end-to-end testing against real data in the linal-hub sibling project rather than isolated unit tests. Two of the more severe: 0.1.4 (2026-09-13) fixed EXPLAIN LINEAGE misattributing ancestry across a zero-copy TRANSPOSE (a transposed matrix and its untransposed source could hash identically); 0.1.5 (2026-09-13) fixed a JOIN's SELECT/WHERE/aggregate expressions silently returning the wrong table's value for a qualified column when both sides shared a bare column name — no error, just wrong data. See CHANGELOG.md for the complete version-by-version history.

Usage

import linaldb

db = linaldb.Db()  # persists to ./data by default, exactly like the CLI
db.execute("CREATE DATASET t COLUMNS (id: Int, score: Float)")
db.execute("INSERT INTO t VALUES (1, 0.9), (2, 0.4)")

result = db.execute("SELECT * FROM t WHERE score > 0.5")
print(result.columns, result.rows)   # ExecuteResult
df = result.to_pandas()              # requires the `pandas` extra

db.execute("SAVE DATASET t")
dataset = db.dataset("t")
df = dataset.to_pandas()             # reads data.parquet directly off disk

See examples/digit_classification_embedded.py and the Jupyter notebook examples/digit_classification_embedded.ipynb for a complete real-data walkthrough — the same real UCI handwritten-digits classification workflow clients/python/examples/digit_classification.py runs over HTTP, ported to embedded mode: no linal serve subprocess at all, just an in-process Db(), an in-process classification query, and an independent numpy recomputation from the dataset export, cross-checked against the SQL result.

Build

This crate vendors HDF5 and pulls in arrow/tokio/axum/zarrs as dependencies of the root linal crate (Cargo.toml here has a path dependency on ../..) — the first build compiles all of that, same as building the CLI itself; a .cargo/config.toml here points the build at the repo-root target/ dir to avoid a second full vendor build if you've already built the root crate.

Requires a Rust toolchain (cmake + a C toolchain for HDF5, per the root CLAUDE.md) and maturin:

python3 -m venv .venv && source .venv/bin/activate
pip install maturin
maturin develop           # builds the extension, installs it into .venv

If your Python interpreter is newer than PyO3's currently-supported maximum CPython version, set PYO3_USE_ABI3_FORWARD_COMPATIBILITY=1 for the build (PYO3_USE_ABI3_FORWARD_COMPATIBILITY=1 maturin develop) — this repo was built and verified against CPython 3.14 that way.

About

LINALDB is built by Gorigami, a software company based in Colombia, and maintained by Nicolás Balaguera. See the project README and LICENSE for the full picture and licensing terms.

Development

source .venv/bin/activate
pip install -e ".[dev]"
maturin develop
pytest tests/

No live server needed for anything here (that's the whole point of embedded mode) — tests and examples all run against an in-process Db().

Release files for linaldb 0.1.13

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 linaldb 0.1.13
File Interpreter ABI Platform
linaldb-0.1.13-cp39-abi3-win_amd64.whl CPython 3.9 abi3 Windows x86-64 Details
linaldb-0.1.13-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.9 abi3 Linux glibc 2.17+ x86-64 Details
linaldb-0.1.13-cp39-abi3-macosx_11_0_arm64.whl CPython 3.9 abi3 macOS 11.0+ ARM64 Details

Total release size: 28.5 MB

Release files / linaldb-0.1.13-cp39-abi3-win_amd64.whl

Download URL linaldb-0.1.13-cp39-abi3-win_amd64.whl
Size 10.4 MB
Tags CPython 3.9 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
8e7b1ea50ee9732c499de4839ddd7cc6d40e5bf5aa4d31b2042ad7f51e5fc920
BLAKE2b-256 checksum
How to use checksums
82ae0c152613cc859d3859d0fc431e214ccf0f3cf8a6beb3f321248cc963b248
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 21, 2026.

Transparency log

Release files / linaldb-0.1.13-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL linaldb-0.1.13-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 9.9 MB
Tags CPython 3.9 Linux glibc 2.17+ x86-64 abi3
SHA-256 checksum
How to use checksums
097d2b27b90873560c63197340c206e9878204e582b75a61fce942ba3e35a669
BLAKE2b-256 checksum
How to use checksums
777ea677e4df4db37e5ec3c1ff8ba1fe23d778aaa0038c6f3a226cfff83fd7b3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 21, 2026.

Transparency log

Release files / linaldb-0.1.13-cp39-abi3-macosx_11_0_arm64.whl

Download URL linaldb-0.1.13-cp39-abi3-macosx_11_0_arm64.whl
Size 8.2 MB
Tags CPython 3.9 abi3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
7752e7e8976e092d4b97c76b3e3ce94f578d04e36391d0e04ed03044ccbf556d
BLAKE2b-256 checksum
How to use checksums
8e005228ccb8e3c074e7a3286228519f6cb1f01fe9bdaefaffdb29c42bdfa6d3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 21, 2026.

Transparency log

Release history Release notifications | RSS feed

0.1.16

3 release files

0.1.15

3 release files

0.1.14

3 release files

This release

0.1.13 This release

3 release files

0.1.12

3 release files

0.1.11

3 release files

0.1.10

3 release files

0.1.9

3 release files

0.1.8

3 release files

0.1.7

3 release files

0.1.6

3 release files

0.1.5

3 release files

0.1.4

3 release files

0.1.3

3 release files

0.1.2

3 release files

0.1.1

3 release files

0.1.0

3 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