[package]
name = "hamelin_datafusion"
description = "Translate Hamelin TypedAST to DataFusion LogicalPlans"
version.workspace = true
edition.workspace = true
readme.workspace = true
repository.workspace = true
homepage.workspace = true
documentation.workspace = true
license-file.workspace = true

[lints]
workspace = true

[lib]
doctest = false

[features]
default = []
test-utils = []
executor = [
    "dep:iceberg",
    "dep:iceberg-catalog-rest",
    "dep:iceberg-datafusion",
    "dep:iceberg-storage-opendal",
    "dep:async-recursion",
]

[dependencies]
hamelin_lib.workspace = true
hamelin_translation.workspace = true
hamelin_executor.workspace = true
datafusion.workspace = true
datafusion-common.workspace = true
datafusion-datasource.workspace = true
datafusion-expr.workspace = true
datafusion-functions.workspace = true
datafusion-functions-nested.workspace = true
datafusion-functions-aggregate.workspace = true
datafusion-functions-window.workspace = true
datafusion-optimizer.workspace = true
datafusion-physical-expr.workspace = true
datafusion-proto.workspace = true
prost.workspace = true
arrow-data.workspace = true
indexmap.workspace = true
async-trait.workspace = true
async-recursion = { workspace = true, optional = true }
futures.workspace = true
tokio.workspace = true
anyhow.workspace = true
base64.workspace = true
chrono.workspace = true
chronoutil.workspace = true
ordermap.workspace = true
vecmap-rs.workspace = true
serde.workspace = true
serde_json.workspace = true
thiserror.workspace = true
parquet-variant.workspace = true
parquet-variant-compute.workspace = true
parquet-variant-json.workspace = true
bytes.workspace = true
embedded-io = { workspace = true }
jsonpath-rust.workspace = true
rjiter.workspace = true
tokio-util.workspace = true
regex.workspace = true
object_store.workspace = true
url.workspace = true
aws-config.workspace = true
aws-credential-types.workspace = true
# Constraint-only dep: pins time <0.3.48 (transitive via aws-config) to dodge the
# E0119 conflict between time 0.3.48 and aws-smithy-types. See root Cargo.toml.
time.workspace = true
iceberg = { workspace = true, optional = true }
iceberg-catalog-rest = { workspace = true, optional = true }
iceberg-datafusion = { workspace = true, optional = true }
iceberg-storage-opendal = { workspace = true, optional = true }
uuid.workspace = true
percent-encoding.workspace = true

[dev-dependencies]
chrono.workspace = true
rstest.workspace = true
