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().

Download files

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

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

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

linaldb-0.1.12-cp39-abi3-win_amd64.whl (10.3 MB view details)

Uploaded CPython 3.9+Windows x86-64

linaldb-0.1.12-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (9.7 MB view details)

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

linaldb-0.1.12-cp39-abi3-macosx_11_0_arm64.whl (8.1 MB view details)

Uploaded CPython 3.9+macOS 11.0+ ARM64

File details

Details for the file linaldb-0.1.12-cp39-abi3-win_amd64.whl.

File metadata

  • Download URL: linaldb-0.1.12-cp39-abi3-win_amd64.whl
  • Upload date:
  • Size: 10.3 MB
  • Tags: CPython 3.9+, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for linaldb-0.1.12-cp39-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 d7d08bcc7250f4770a2e482e18e39227c536b459ef942c6422655e9c26187716
MD5 8fbaae7afd6556c1a31ef8fa95be8b6a
BLAKE2b-256 1a65051b12dfb60e92574220fb5cc07b1daca31989d8c72883912eedcc827ea5

See more details on using hashes here.

Provenance

The following attestation bundles were made for linaldb-0.1.12-cp39-abi3-win_amd64.whl:

Publisher: pypi-publish-embedded.yml on gorigami/linaldb

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file linaldb-0.1.12-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for linaldb-0.1.12-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 2601fca9eafde23ff2cb28fab0a750cc91574d99fba09e91305115cd9778d55f
MD5 e42da59c7886eff4713c577f8db3b3e2
BLAKE2b-256 dcec81776f36652ca192fc926c4c19d7d1e8c8b6adc0c48a5b7039b8a4bc1b9e

See more details on using hashes here.

Provenance

The following attestation bundles were made for linaldb-0.1.12-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: pypi-publish-embedded.yml on gorigami/linaldb

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file linaldb-0.1.12-cp39-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for linaldb-0.1.12-cp39-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 85951b2c6e482a6591b89d1e97ce6275ca470d53274b3d7d44daf64570d6b338
MD5 3749b11668aa6c225e2e0077fac09e93
BLAKE2b-256 733d69bc40bdbdb6b5de5667b5b39fe695bb1b6466139fbfcb440d974729994b

See more details on using hashes here.

Provenance

The following attestation bundles were made for linaldb-0.1.12-cp39-abi3-macosx_11_0_arm64.whl:

Publisher: pypi-publish-embedded.yml on gorigami/linaldb

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

0.1.12 This release

3 files

0.1.11

3 files

0.1.10

3 files

0.1.9

3 files

0.1.8

3 files

0.1.7

3 files

0.1.6

3 files

0.1.5

3 files

0.1.4

3 files

0.1.3

3 files

0.1.2

3 files

0.1.1

3 files

0.1.0

3 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