Skip to content

Installation

Choose the interface you want to use. You only need the installation steps for that interface:

  • Python: read with PyArrow or run SQL.
  • Command line: inspect a table or save rows to a file.
  • Rust: read batches in an application, with optional SQL support.

Python

Use CPython 3.10 or newer on one of these platforms:

System Requirements
Linux x86_64, glibc 2.28 or newer
Windows x86_64
macOS Apple silicon, macOS 12.0 or newer

The package includes PyArrow support, SQL, and the delta-arrow-reader command. You do not need Rust or the separate Python datafusion package to install a wheel.

Install from PyPI

In your project's activated virtual environment, run:

python -m pip install --only-binary=:all: delta-arrow-reader
python -I -c "import delta_arrow_reader; print(delta_arrow_reader.__version__)"

The second command prints the installed version. Installation also downloads a compatible PyArrow wheel; neither package is compiled from source. For a project managed by uv, use uv add delta-arrow-reader instead.

Continue with the Python quickstart to read your first rows.

Supported Python versions and platform details

The wheel platform tags are manylinux_2_28_x86_64, win_amd64, and macosx_12_0_arm64, respectively.

These targets apply to both the Python extension and bundled CLI. Linux arm64, Intel Macs, Windows arm64, and musl systems have no official wheels or wheel CI coverage. Source builds on Intel Macs are untested and unsupported. The wheel's Linux baseline is glibc 2.28; the standalone dar archives require glibc 2.36.

Each platform has one cp310-abi3 wheel. A successful build tests that same wheel on CPython 3.10 with PyArrow 18.0.0 and CPython 3.14 with the current compatible PyArrow release. Intermediate Python versions are not separately tested. Free-threaded CPython, PyPy, and other platform targets are not covered.

All three platforms check the installed package, Python Arrow streams, SQL queries and CLI behavior, including scan output, errors, closed stdout, and process termination. Linux also runs the full Python suite and repeats the installed checks in a fresh glibc 2.28 container. Windows checks run on Windows Server 2022 and use the CPython/MSVC runtime libraries. The macOS deployment target is 12.0, but runtime checks use newer macOS runners. Your Python and PyArrow distributions must also support your OS.

Build the Python package from source instead

Use Python 3.10 or newer and Rust 1.94.x to install from source. Source builds also need curl, cargo-about, and Rust's license documentation. From the repository root, run these commands on Linux x86_64 or macOS arm64:

python3 -m venv target/python-venv
. target/python-venv/bin/activate
rustup component add rust-docs
cargo install --locked --features cli --version 0.9.2 cargo-about
python -m pip install ./crates/delta-arrow-reader-python

CLI binaries and container images

If you installed the Python package above, you already have the CLI:

delta-arrow-reader --version

Use delta-arrow-reader in place of dar in the CLI quickstart. Both names accept the same arguments. The wheel does not install a dar alias.

Standalone dar binaries and container images are available from GitHub Releases. Choose a version whose CLI section reports successful download verification.

Install just the command with uv

Install the command from PyPI in a separate tool environment:

uv tool install --no-build delta-arrow-reader
delta-arrow-reader --version

If uv reports that its executable directory is missing from PATH, run uv tool update-shell and restart your shell. To run without a persistent tool installation:

uvx --no-build delta-arrow-reader --help

These tool environments do not add the Python API to your project. They still install the extension, CLI, and PyArrow. Keep the tool environment and its Python installation available when using the command.

Download and verify a standalone Linux release

Choose a release whose CLI section reports successful download verification. Replace X.Y.Z below with that version, without the v prefix. Run this script in a writable directory. It downloads both architectures so the complete checksum file can be checked before extraction:

set -eu
version=X.Y.Z
mkdir "dar-$version"
cd "dar-$version"
release_url="https://github.com/mag1cfrog/delta-arrow-reader/releases/download/v$version"
for file in "dar-v$version-linux-amd64-gnu.tar.gz" \
            "dar-v$version-linux-arm64-gnu.tar.gz" cli-artifacts.json SHA256SUMS; do
  curl --fail --location --output "$file" "$release_url/$file"
done
sha256sum --check SHA256SUMS
case "$(uname -m)" in
  x86_64) architecture=amd64 ;;
  aarch64|arm64) architecture=arm64 ;;
  *) echo 'No release binary for this architecture' >&2; exit 1 ;;
esac
mkdir cli
tar -xzf "dar-v$version-linux-$architecture-gnu.tar.gz" -C cli
./cli/dar --version
export PATH="$PWD/cli:$PATH"

The final command adds dar to PATH for this shell. For later use, add the extracted cli directory to your application's executable search path or use its absolute path. Keep LICENSE and NOTICE beside it when redistributing it.

The binaries require Linux amd64 or arm64, glibc 2.36 or newer, libgcc, and CA certificates for HTTPS. They do not need Rust or Python. They do not run on Alpine's musl runtime, scratch, macOS, or Windows; Python wheels have their own platform requirements. See Linux runtime details for supported distributions and packages.

cli-artifacts.json records the tested source commit, toolchain, runtime libraries, and hashes. The Release's CLI section lists the final release commit and checksum file's hash. The tested and final commits can differ while containing the same source tree.

Use a published container

Choose a release with a verified CLI container, then pin its version:

docker run --rm --read-only ghcr.io/mag1cfrog/delta-arrow-reader:vX.Y.Z --version

The public image includes the runtime libraries and certificates for linux/amd64 and linux/arm64. It runs a command and exits. Public pulls need no GitHub login. There are no latest, major-version, or minor-version aliases.

For a digest pin, copy the index digest from the Release's CLI section and use ghcr.io/mag1cfrog/delta-arrow-reader@sha256:<index-hash>. See container usage for mounting a table or integrating the CLI with a Go service.

Rust

Use Rust 1.94 or newer. Run the commands below from your Cargo project. The examples use your application's Tokio runtime.

Streaming reader

cargo add delta-arrow-reader
cargo add tokio --features macros,rt-multi-thread

Continue with the Rust quickstart to read your first batch. It uses next_batch(), so no separate stream utility dependency is needed.

DataFusion adapter

To query the table with SQL in Rust:

cargo add delta-arrow-reader --features datafusion
cargo add datafusion@54 --no-default-features --features sql
cargo add tokio --features macros,rt-multi-thread

The adapter uses DataFusion 54. Your direct DataFusion dependency must use the same major version. Continue with the DataFusion quickstart.

Optional Cargo feature

The streaming API and both Parquet backends are always available. The optional datafusion feature adds SQL integration. The direct Parquet backend is the default; choosing the Delta Kernel backend does not require another feature. See execution options when you need to change read settings.

HTTPS and build prerequisites

When building from source, install a Rust toolchain and native build tools. OpenSSL development libraries are not required. When using HTTPS storage, ensure your system or container has a CA certificate bundle, such as Linux's ca-certificates package.

Private endpoints and certificate validation

The reader selects rustls for both object-store access and Kernel's HTTPS reads. Its default and datafusion dependency graphs do not require OpenSSL development libraries. Native build tools are still needed: Kernel's rustls feature uses AWS-LC, which builds native cryptographic code.

HTTPS connections verify the server's certificate and hostname. Install your organization's CA in the platform trust store when accessing private endpoints. On Linux, both HTTP clients load system CA certificates and also honor SSL_CERT_FILE and SSL_CERT_DIR. Minimal container images need a CA bundle such as the distribution's ca-certificates package.

Kernel's HTTPS client uses rustls-platform-verifier: certificate validation uses WebPKI on Linux and the platform verifier on macOS and Windows. The object-store client uses rustls with native root certificates. This replaces Kernel's previous native-tls/OpenSSL validation on Linux, so certificates must also satisfy WebPKI's validation rules. Kernel HTTPS connections use TLS 1.2 or 1.3. Storage options and proxy configuration continue to use the underlying clients' existing interfaces.