# 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 = "5.0.0-SNAPSHOT"
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 = "2018"

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

[dependencies]
serde = { version = "1.0", features = ["rc"] }
serde_derive = "1.0"
serde_json = { version = "1.0", features = ["preserve_order"] }
indexmap = "1.6"
rand = "0.7"
num = "0.4"
csv_crate = { version = "1.1", optional = true, package="csv" }
regex = "1.3"
lazy_static = "1.4"
packed_simd = { version = "0.3.4", optional = true, package = "packed_simd_2" }
chrono = "0.4"
flatbuffers = { version = "=0.8.4", optional = true }
hex = "0.4"
prettytable-rs = { version = "0.8.0", optional = true }
lexical-core = "^0.7"
multiversion = "0.6.1"

[features]
default = ["csv", "ipc"]
avx512 = []
csv = ["csv_crate"]
ipc = ["flatbuffers"]
simd = ["packed_simd"]
prettyprint = ["prettytable-rs"]
# this is only intended to be used in single-threaded programs: it verifies that
# all allocated memory is being released (no memory leaks).
# See README for details
memory-check = []

[dev-dependencies]
criterion = "0.3"
flate2 = "1"
tempfile = "3"

[build-dependencies]

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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