# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#   http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.

[package]
name = "arrow"
version = "24.0.0"
description = "Rust implementation of Apache Arrow"
homepage = "https://github.com/apache/arrow-rs"
repository = "https://github.com/apache/arrow-rs"
authors = ["Apache Arrow <dev@arrow.apache.org>"]
license = "Apache-2.0"
keywords = ["arrow"]
include = [
    "benches/*.rs",
    "src/**/*.rs",
    "Cargo.toml",
]
edition = "2021"
rust-version = "1.62"

[lib]
name = "arrow"
path = "src/lib.rs"
bench = false

[target.'cfg(target_arch = "wasm32")'.dependencies]
ahash = { version = "0.8", default-features = false, features = ["compile-time-rng"] }

[target.'cfg(not(target_arch = "wasm32"))'.dependencies]
ahash = { version = "0.8", default-features = false, features = ["runtime-rng"] }

[dependencies]
arrow-buffer = { version = "24.0.0", path = "../arrow-buffer" }
arrow-data = { version = "24.0.0", path = "../arrow-data" }
arrow-schema = { version = "24.0.0", path = "../arrow-schema" }
arrow-array = { version = "24.0.0", path = "../arrow-array" }
serde_json = { version = "1.0", default-features = false, features = ["std"], optional = true }
indexmap = { version = "1.9", default-features = false, features = ["std"] }
rand = { version = "0.8", default-features = false, features = ["std", "std_rng"], optional = true }
num = { version = "0.4", default-features = false, features = ["std"] }
half = { version = "2.0", default-features = false, features = ["num-traits"]}
hashbrown = { version = "0.12", default-features = false }
csv_crate = { version = "1.1", default-features = false, optional = true, package = "csv" }
regex = { version = "1.5.6", default-features = false, features = ["std", "unicode"] }
regex-syntax = { version = "0.6.27", default-features = false, features = ["unicode"] }
lazy_static = { version = "1.4", default-features = false }
lz4 = { version = "1.23", default-features = false, optional = true }
packed_simd = { version = "0.3", default-features = false, optional = true, package = "packed_simd_2" }
chrono = { version = "0.4", default-features = false, features = ["clock"] }
chrono-tz = { version = "0.6", default-features = false, optional = true }
flatbuffers = { version = "2.1.2", default-features = false, features = ["thiserror"], optional = true }
comfy-table = { version = "6.0", optional = true, default-features = false }
pyo3 = { version = "0.17", default-features = false, optional = true }
lexical-core = { version = "^0.8", default-features = false, features = ["write-integers", "write-floats", "parse-integers", "parse-floats"] }
multiversion = { version = "0.6.1", default-features = false }
bitflags = { version = "1.2.1", default-features = false }
zstd = { version = "0.11.1", default-features = false, optional = true }

[package.metadata.docs.rs]
features = ["prettyprint", "ipc_compression", "dyn_cmp_dict", "ffi", "pyarrow"]

[features]
default = ["csv", "ipc", "json"]
ipc_compression = ["ipc", "zstd", "lz4"]
csv = ["csv_crate"]
ipc = ["flatbuffers"]
json = ["serde_json"]
simd = ["packed_simd"]
prettyprint = ["comfy-table"]
# The test utils feature enables code used in benchmarks and tests but
# not the core arrow code itself. Be aware that `rand` must be kept as
# an optional dependency for supporting compile to wasm32-unknown-unknown
# target without assuming an environment containing JavaScript.
test_utils = ["rand"]
pyarrow = ["pyo3", "ffi"]
# force_validate runs full data validation for all arrays that are created
# this is not enabled by default as it is too computationally expensive
# but is run as part of our CI checks
force_validate = ["arrow-data/force_validate"]
# Enable ffi support
ffi = []
# Enable dyn-comparison of dictionary arrays with other arrays
# Note: this does not impact comparison against scalars
dyn_cmp_dict = []
# Enable dyn-arithmetic kernels for dictionary arrays
# Note: this does not impact arithmetic with scalars
dyn_arith_dict = []

[dev-dependencies]
rand = { version = "0.8", default-features = false, features = ["std", "std_rng"] }
criterion = { version = "0.4", default-features = false }
flate2 = { version = "1", default-features = false, features = ["rust_backend"] }
tempfile = { version = "3", default-features = false }

[build-dependencies]

[[example]]
name = "dynamic_types"
required-features = ["prettyprint"]
path = "./examples/dynamic_types.rs"

[[example]]
name = "read_csv"
required-features = ["prettyprint", "csv"]
path = "./examples/read_csv.rs"

[[example]]
name = "read_csv_infer_schema"
required-features = ["prettyprint", "csv"]
path = "./examples/read_csv_infer_schema.rs"

[[bench]]
name = "aggregate_kernels"
harness = false
required-features = ["test_utils"]

[[bench]]
name = "array_from_vec"
harness = false

[[bench]]
name = "builder"
harness = false
required-features = ["test_utils"]

[[bench]]
name = "buffer_bit_ops"
harness = false

[[bench]]
name = "boolean_kernels"
harness = false
required-features = ["test_utils"]

[[bench]]
name = "boolean_append_packed"
harness = false

[[bench]]
name = "arithmetic_kernels"
harness = false
required-features = ["test_utils"]

[[bench]]
name = "cast_kernels"
harness = false
required-features = ["test_utils"]

[[bench]]
name = "comparison_kernels"
harness = false
required-features = ["test_utils", "dyn_cmp_dict"]

[[bench]]
name = "filter_kernels"
harness = false
required-features = ["test_utils"]

[[bench]]
name = "take_kernels"
harness = false
required-features = ["test_utils"]

[[bench]]
name = "length_kernel"
harness = false

[[bench]]
name = "bit_length_kernel"
harness = false

[[bench]]
name = "sort_kernel"
harness = false
required-features = ["test_utils"]

[[bench]]
name = "partition_kernels"
harness = false
required-features = ["test_utils"]

[[bench]]
name = "csv_writer"
harness = false
required-features = ["csv"]

[[bench]]
name = "json_reader"
harness = false
required-features = ["json"]

[[bench]]
name = "equal"
harness = false
required-features = ["test_utils"]

[[bench]]
name = "array_slice"
harness = false

[[bench]]
name = "concatenate_kernel"
harness = false
required-features = ["test_utils"]

[[bench]]
name = "mutable_array"
harness = false
required-features = ["test_utils"]

[[bench]]
name = "buffer_create"
harness = false
required-features = ["test_utils"]

[[bench]]
name = "string_dictionary_builder"
harness = false

[[bench]]
name = "substring_kernels"
harness = false
required-features = ["test_utils"]

[[bench]]
name = "array_data_validate"
harness = false

[[bench]]
name = "decimal_validate"
harness = false

[[bench]]
name = "row_format"
harness = false
required-features = ["test_utils"]

[[bench]]
name = "bitwise_kernel"
harness = false
required-features = ["test_utils"]
