Skip to main content

Native Delta Lake Python binding based on delta-rs with Pandas integration

Project description

Deltalake-python

PyPI userdoc apidoc

Native Delta Lake Python binding based on delta-rs with Pandas integration.

Example

from deltalake import DeltaTable
dt = DeltaTable("../rust/tests/data/delta-0.2.0")
dt.version()
3
dt.file_uris()
['s3://bucket/table/part-00000-cb6b150b-30b8-4662-ad28-ff32ddab96d2-c000.snappy.parquet',
 's3://bucket/table/part-00000-7c2deba3-1994-4fb8-bc07-d46c948aa415-c000.snappy.parquet',
 's3://bucket/table/part-00001-c373a5bd-85f0-4758-815e-7eb62007a15c-c000.snappy.parquet']

See the user guide for more examples.

Installation

# with pip
pip install deltalake
# with uv
uv add deltalake
# with poetry
poetry add deltalake

NOTE: official binary wheels are linked against openssl statically for remote object store communication. Please file a Github issue to request a critical openssl upgrade.

Tracing and Observability

Delta-rs supports OpenTelemetry tracing for performance analysis and debugging.

Basic Example

import os
import deltalake
from deltalake import write_deltalake, DeltaTable

# Enable logging to see trace output in stdout
os.environ["RUST_LOG"] = "deltalake=debug"

# Initialize tracing (uses default HTTP endpoint or OTEL_EXPORTER_OTLP_ENDPOINT env var)
# For authentication, set OTEL_EXPORTER_OTLP_HEADERS="x-honeycomb-team=your-api-key"
# The HTTP exporter automatically reads OTEL_EXPORTER_OTLP_HEADERS for API keys
deltalake.init_tracing()

# All Delta operations are now traced
write_deltalake("my_table", data)
dt = DeltaTable("my_table")
df = dt.to_pandas()

When you run this code, you'll see trace information in stdout showing operation timings and execution flow.

Build custom wheels

Sometimes you may wish to build custom wheels. Maybe you want to try out some unreleased features. Or maybe you want to tweak the optimization of the Rust code.

To compile the package, you will need the Rust compiler and maturin:

curl https://sh.rustup.rs -sSf | sh -s

Then you can build wheels for your own platform like so:

uvx maturin build --release --out wheels

Note:

  • uvx invokes a tool without installing it.
  • if you plan to often use maturin, you can install the "tool" with uv tool install maturin.

For a build that is optimized for the system you are on (but sacrificing portability):

RUSTFLAGS="-C target-cpu=native" uvx maturin build --release --out wheels

Cross compilation

The above command only works for your current platform. To create wheels for other platforms, you'll need to cross compile. Cross compilation requires installing two additional components: to cross compile Rust code, you will need to install the target with rustup; to cross compile the Python bindings, you will need to install ziglang.

The following example is for manylinux2014. Other targets will require different Rust target and Python compatibility tags.

rustup target add x86_64-unknown-linux-gnu

Then you can build wheels for the target platform like so:

uvx --from 'maturin[zig]' maturin build --release --zig \
    --target x86_64-unknown-linux-gnu \
    --compatibility manylinux2014 \
    --out wheels

If you expect to only run on more modern system, you can set a newer target-cpu flag to Rust and use a newer compatibility tag for Linux. For example, here we set compatibility with CPUs newer than Haswell (2013) and Linux OS with glibc version of at least 2.24:

RUSTFLAGS="-C target-cpu=haswell" uvx --from 'maturin[zig]' maturin build --release --zig \
    --target x86_64-unknown-linux-gnu \
    --compatibility manylinux_2_24 \
    --out wheels

See note about RUSTFLAGS from the arrow-rs readme.

Project details


Release history Release notifications | RSS feed

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.

deltalake-1.6.0-cp310-abi3-win_amd64.whl (44.1 MB view details)

Uploaded CPython 3.10+Windows x86-64

deltalake-1.6.0-cp310-abi3-musllinux_1_2_x86_64.whl (41.8 MB view details)

Uploaded CPython 3.10+musllinux: musl 1.2+ x86-64

deltalake-1.6.0-cp310-abi3-musllinux_1_2_aarch64.whl (40.5 MB view details)

Uploaded CPython 3.10+musllinux: musl 1.2+ ARM64

deltalake-1.6.0-cp310-abi3-manylinux_2_28_aarch64.whl (40.5 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.28+ ARM64

deltalake-1.6.0-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (41.8 MB view details)

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

deltalake-1.6.0-cp310-abi3-macosx_11_0_arm64.whl (37.5 MB view details)

Uploaded CPython 3.10+macOS 11.0+ ARM64

deltalake-1.6.0-cp310-abi3-macosx_10_12_x86_64.whl (40.9 MB view details)

Uploaded CPython 3.10+macOS 10.12+ x86-64

File details

Details for the file deltalake-1.6.0-cp310-abi3-win_amd64.whl.

File metadata

File hashes

Hashes for deltalake-1.6.0-cp310-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 cdc15e2ad80376363ad4d13f475b00c23e4192b5e65e8e421b8aa7cf9df533fa
MD5 66844749567bf3bf64410c3c60190b92
BLAKE2b-256 0a5ba1e6d8d35e5b2f8460e45e9171af50c461283c7390c3977f4b7f623193b1

See more details on using hashes here.

File details

Details for the file deltalake-1.6.0-cp310-abi3-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for deltalake-1.6.0-cp310-abi3-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 5fc975a93a043619175b86fbdf0951bf15ec4ac6e499d981dfc8c9024748d831
MD5 f3a2eca7c4f04be396aa048b51d8d22c
BLAKE2b-256 68d09e0c87894641ce9b921e4d3f576ccedce68907cc55ba5004fc4291260289

See more details on using hashes here.

File details

Details for the file deltalake-1.6.0-cp310-abi3-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for deltalake-1.6.0-cp310-abi3-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 a2da86d4964cfd1db988158248cdf46acaea2d5ac7cc0eccee04bff565265153
MD5 930938e1ea7821330aabd236a3781df0
BLAKE2b-256 4f0830720d394ecc394465c74ca2342cc51f9fe6f1867985b3df5cec3b6e8c63

See more details on using hashes here.

File details

Details for the file deltalake-1.6.0-cp310-abi3-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for deltalake-1.6.0-cp310-abi3-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 6780a3702f501c902fa7deecd7501a4f0e52d69321835bf6f87d72b13679bfd4
MD5 fb55e0412186e9bba7ed1e06537c8520
BLAKE2b-256 f1bce09d13df887783018580d2383765cbd3aaf10c45ab428dd38e9c91053b75

See more details on using hashes here.

File details

Details for the file deltalake-1.6.0-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for deltalake-1.6.0-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 cd22cf2301c8a3d06819813726ba3ecf68ac16ba12a7c4ac4b1c9b7177461da7
MD5 68c5b6c576238bba4e24f0a53f74f453
BLAKE2b-256 0f5da9fa27de555540fc11e83bd9e3de5c356f3e9e1019694f9ce32340b9e09f

See more details on using hashes here.

File details

Details for the file deltalake-1.6.0-cp310-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for deltalake-1.6.0-cp310-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d15cdc95a816dc1744fb208da54bb8dd57548ac4635c1b955727d57123a2e599
MD5 028755b59586bcc5c4ca0f7532ad9cba
BLAKE2b-256 e422ae4148a1d4a0b3cfaea1eed627610a96b79f3d25443237a26af1acb43a67

See more details on using hashes here.

File details

Details for the file deltalake-1.6.0-cp310-abi3-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for deltalake-1.6.0-cp310-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 e980c834c3657d0476a0e98763a7f6c6934717175d3ef86208dd974eceb35b15
MD5 bcc5fa65293e017071f20c6449597162
BLAKE2b-256 fee1b26c473480347ba82ffe4abde5452d4aa36313cc267e08d9a8ae9c7083fd

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page