[package]
name = "duckdb"
version = "1.3.0"
authors.workspace = true
edition.workspace = true
repository.workspace = true
homepage.workspace = true
documentation.workspace = true
readme.workspace = true
keywords.workspace = true
license.workspace = true
categories.workspace = true
description = "Ergonomic wrapper for DuckDB"

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

[lib]
name = "duckdb"

[features]
default = [ ]
bundled = ["libduckdb-sys/bundled"]
json = ["libduckdb-sys/json", "bundled"]
parquet = ["libduckdb-sys/parquet", "bundled"]
vscalar = []
vscalar-arrow = []
vtab = []
vtab-loadable = ["vtab", "duckdb-loadable-macros"]
vtab-excel = ["vtab", "calamine"]
vtab-arrow = ["vtab", "num"]
appender-arrow = ["vtab-arrow"]
vtab-full = ["vtab-excel", "vtab-arrow", "appender-arrow"]
extensions-full = ["json", "parquet", "vtab-full"]
buildtime_bindgen = ["libduckdb-sys/buildtime_bindgen"]
modern-full = ["chrono", "serde_json", "url", "r2d2", "uuid", "polars"]
polars = ["dep:polars", "dep:polars-arrow"]
# FIXME: These were added to make clippy happy: these features appear unused and should perhaps be removed
column_decltype = []
extra_check = []
# Warning: experimental feature
loadable-extension = ["libduckdb-sys/loadable-extension"]

[dependencies]
libduckdb-sys = { workspace = true }
hashlink = { workspace = true }
chrono = { workspace = true, optional = true }
serde_json = { workspace = true, optional = true }
csv = { workspace = true, optional = true }
url = { workspace = true, optional = true }
lazy_static = { workspace = true, optional = true }
byteorder = { workspace = true, features = ["i128"], optional = true }
fallible-iterator = { workspace = true }
fallible-streaming-iterator = { workspace = true }
uuid = { workspace = true, optional = true }
smallvec = { workspace = true }
cast = { workspace = true, features = ["std"] }
arrow = { workspace = true, features = ["prettyprint", "ffi"] }
rust_decimal = { workspace = true }
strum = { workspace = true, features = ["derive"] }
r2d2 = { workspace = true, optional = true }
calamine = { workspace = true, optional = true }
num = { workspace = true, features = ["std"], optional = true }
duckdb-loadable-macros = { workspace = true, optional = true }
polars = { workspace = true, features = ["dtype-full"], optional = true }
polars-arrow = { workspace = true, optional = true }
num-integer = { workspace = true }

[dev-dependencies]
doc-comment = { workspace = true }
tempfile = { workspace = true }
lazy_static = { workspace = true }
regex = { workspace = true }
uuid = { workspace = true, features = ["v4"] }
unicase = { workspace = true }
rand = { workspace = true }
tempdir = { workspace = true }
polars-core = { workspace = true }
pretty_assertions = { workspace = true }
# criterion = "0.3"

# [[bench]]
# name = "data_types"
# harness = false

[package.metadata.docs.rs]
features = ["vtab", "vtab-arrow"]
all-features = false
no-default-features = true
default-target = "x86_64-unknown-linux-gnu"

[package.metadata.playground]
features = []
all-features = false

[[example]]
name = "hello-ext"
crate-type = ["cdylib"]
required-features = ["vtab-loadable"]

[[example]]
name = "hello-ext-capi"
crate-type = ["cdylib"]
required-features = ["vtab-loadable", "loadable-extension"]
