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
14 releases on PyPI so far, 0.1.0 through 0.1.14 — 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.16
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distributions (wheels)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| linaldb-0.1.16-cp39-abi3-win_amd64.whl | CPython 3.9 | abi3 | Windows x86-64 | Details |
| linaldb-0.1.16-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.16-cp39-abi3-macosx_11_0_arm64.whl | CPython 3.9 | abi3 | macOS 11.0+ ARM64 | Details |
Total release size: 30.3 MB
Release files / linaldb-0.1.16-cp39-abi3-win_amd64.whl
| Download URL | linaldb-0.1.16-cp39-abi3-win_amd64.whl |
|---|---|
| Size | 11.0 MB |
| Tags | CPython 3.9 Windows x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
8b08cbb47a8fca615fb772290d0b2ae9568d885b25a00da92bc2bfc8c419a805
|
|
BLAKE2b-256 checksum How to use checksums |
52c0d4d2e6796100077677dbdead9b77cb07be749e5a090b1e11681351246310
|
| 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 25, 2026.
Transparency logRelease files / linaldb-0.1.16-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | linaldb-0.1.16-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 10.7 MB |
| Tags | CPython 3.9 Linux glibc 2.17+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
25431fba11653fd24c5c852f2c085b5611059be4ea199a826bada19c1b7d8c8e
|
|
BLAKE2b-256 checksum How to use checksums |
8bc48d65a215be6280f20c12cede419c682aaad22e803ca405525ca7ffe5cfd2
|
| 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 25, 2026.
Transparency logRelease files / linaldb-0.1.16-cp39-abi3-macosx_11_0_arm64.whl
| Download URL | linaldb-0.1.16-cp39-abi3-macosx_11_0_arm64.whl |
|---|---|
| Size | 8.6 MB |
| Tags | CPython 3.9 abi3 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
e7109449b4d87704cb4cd349b68bf98364de49e70eaf6fd49292d19069226947
|
|
BLAKE2b-256 checksum How to use checksums |
72bedf272e3703b29a6328e5ad692b2de6165bbf5aabbbbc6b7cd558b030ff98
|
| 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 25, 2026.
Transparency log