delta_kernel 0.6.0

Core crate providing a Delta/Deltalake implementation focused on interoperability with a wide range of query engines.
Documentation
[package]
name = "delta_kernel"
description = "Core crate providing a Delta/Deltalake implementation focused on interoperability with a wide range of query engines."
documentation = "https://docs.rs/delta_kernel"
edition.workspace = true
homepage.workspace = true
license.workspace = true
repository.workspace = true
readme.workspace = true
version.workspace = true
# exclude golden tests + golden test data since they push us over 10MB crate size limit
exclude = ["tests/golden_tables.rs", "tests/golden_data/" ]
rust-version.workspace = true

[package.metadata.docs.rs]
all-features = true

[dependencies]
bytes = "1.7"
chrono = { version = "0.4" }
fix-hidden-lifetime-bug = "0.2"
indexmap = "2.5.0"
itertools = "0.13"
roaring = "0.10.6"
serde = { version = "1", features = ["derive", "rc"] }
serde_json = "1"
thiserror = "1"
# only for structured logging
tracing = { version = "0.1", features = ["log"] }
url = "2"
uuid = "1.10.0"
z85 = "3.0.5"

# bring in our derive macros
delta_kernel_derive = { path = "../derive-macros", version = "0.6.0" }

# used for developer-visibility
visibility = "0.1.1"

# Used in the sync engine
tempfile = { version = "3", optional = true }
# Used in default engine
arrow-buffer = { workspace = true, optional = true }
arrow-array = { workspace = true, optional = true, features = ["chrono-tz"] }
arrow-select = { workspace = true, optional = true }
arrow-arith = { workspace = true, optional = true }
arrow-cast = { workspace = true, optional = true }
arrow-json = { workspace = true, optional = true }
arrow-ord = { workspace = true, optional = true }
arrow-schema = { workspace = true, optional = true }
futures = { version = "0.3", optional = true }
object_store = { workspace = true, optional = true }
hdfs-native-object-store = { workspace = true, optional = true }
# Used in default and sync engine
parquet = { workspace = true, optional = true }
# Used for fetching direct urls (like pre-signed urls)
reqwest = { version = "0.12.7", optional = true }
strum = { version = "0.26", features = ["derive"] }


# optionally used with default engine (though not required)
tokio = { version = "1.40", optional = true, features = ["rt-multi-thread"] }

# Used in integration tests
hdfs-native = { workspace = true, optional = true }
walkdir = { workspace = true, optional = true }

[features]
arrow-conversion = ["arrow-schema"]
arrow-expression = ["arrow-arith", "arrow-array", "arrow-buffer", "arrow-ord", "arrow-schema"]
cloud = [
  "object_store/aws",
  "object_store/azure",
  "object_store/gcp",
  "object_store/http",
  "hdfs-native-object-store",
]
default = []
default-engine = [
  "arrow-conversion",
  "arrow-expression",
  "arrow-array",
  "arrow-buffer",
  "arrow-cast",
  "arrow-json",
  "arrow-schema",
  "arrow-select",
  "futures",
  "object_store",
  "parquet/async",
  "parquet/object_store",
  "reqwest",
  "tokio",
  "uuid/v4",
  "uuid/fast-rng",
]

developer-visibility = []
sync-engine = [
  "arrow-cast",
  "arrow-conversion",
  "arrow-expression",
  "arrow-array",
  "arrow-json",
  "arrow-select",
  "parquet",
  "tempfile",
]
integration-test = [
  "hdfs-native-object-store/integration-test",
  "hdfs-native",
  "walkdir",
]

[build-dependencies]
rustc_version = "0.4.1"

[dev-dependencies]
arrow = { workspace = true, features = ["json", "prettyprint"] }
delta_kernel = { path = ".", features = ["default-engine", "sync-engine"] }
test_utils = { path = "../test-utils" }
paste = "1.0"
test-log = { version = "0.2", default-features = false, features = ["trace"] }
tempfile = "3"
tar = "0.4"
zstd = "0.13"
tracing-subscriber = { version = "0.3", default-features = false, features = [
  "env-filter",
  "fmt",
] }