# 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.

[workspace]

members = [
    "arrow",
    "arrow-arith",
    "arrow-array",
    "arrow-avro",
    "arrow-buffer",
    "arrow-cast",
    "arrow-csv",
    "arrow-data",
    "arrow-flight",
    "arrow-flight/gen",
    "arrow-integration-test",
    "arrow-integration-testing",
    "arrow-ipc",
    "arrow-json",
    "arrow-ord",
    "arrow-pyarrow",
    "arrow-row",
    "arrow-schema",
    "arrow-select",
    "arrow-string",
    "parquet",
    "parquet-geospatial",
    "parquet-variant",
    "parquet-variant-compute",
    "parquet-variant-json",
    "parquet_derive",
    "parquet_derive_test",
]

# Enable the version 2 feature resolver, which avoids unifying features for targets that are not being built
#
# Critically this prevents dev-dependencies from enabling features even when not building a target that
# uses dev-dependencies, e.g. the library crate. This in turn ensures that we can catch invalid feature
# flag combinations that would otherwise only surface in dependent crates
#
# Reference - https://doc.rust-lang.org/nightly/cargo/reference/features.html#feature-resolver-version-2
#
resolver = "2"

exclude = [
    # arrow-pyarrow-testing is excluded because it requires a Python interpreter with the pyarrow package installed,
    # which makes running `cargo test --all` fail if the appropriate Python environment is not set up.
    "arrow-pyarrow-testing",
    # arrow-pyarrow-integration-testing is excluded because it requires different compilation flags, thereby
    # significantly changing how it is compiled within the workspace, causing the whole workspace to be compiled from
    # scratch this way, this is a stand-alone package that compiles independently of the others.
    "arrow-pyarrow-integration-testing",
]

[workspace.package]
version = "59.1.0"
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",
    "LICENSE.txt",
    "NOTICE.txt",
]
edition = "2024"
rust-version = "1.85"

[workspace.dependencies]
arrow = { version = "59.1.0", path = "./arrow", default-features = false }
arrow-arith = { version = "59.1.0", path = "./arrow-arith" }
arrow-array = { version = "59.1.0", path = "./arrow-array" }
arrow-buffer = { version = "59.1.0", path = "./arrow-buffer" }
arrow-cast = { version = "59.1.0", path = "./arrow-cast" }
arrow-csv = { version = "59.1.0", path = "./arrow-csv" }
arrow-data = { version = "59.1.0", path = "./arrow-data" }
arrow-ipc = { version = "59.1.0", path = "./arrow-ipc" }
arrow-json = { version = "59.1.0", path = "./arrow-json" }
arrow-ord = { version = "59.1.0", path = "./arrow-ord" }
arrow-pyarrow = { version = "59.1.0", path = "./arrow-pyarrow" }
arrow-row = { version = "59.1.0", path = "./arrow-row" }
arrow-schema = { version = "59.1.0", path = "./arrow-schema" }
arrow-select = { version = "59.1.0", path = "./arrow-select" }
arrow-string = { version = "59.1.0", path = "./arrow-string" }
parquet = { version = "59.1.0", path = "./parquet", default-features = false }
parquet-geospatial = { version = "59.1.0", path = "./parquet-geospatial" }
parquet-variant = { version = "59.1.0", path = "./parquet-variant" }
parquet-variant-json = { version = "59.1.0", path = "./parquet-variant-json" }
parquet-variant-compute = { version = "59.1.0", path = "./parquet-variant-compute" }

chrono = { version = "0.4.40", default-features = false, features = ["clock"] }

criterion = { version = "0.8.0", default-features = false }

insta = { version = "1.46.3", default-features = false }

object_store = { version = "0.13.2", default-features = false }

simdutf8 = { version = "0.1.5", default-features = false }

# release inherited profile keeping debug information and symbols
# for mem/cpu profiling
[profile.profiling]
inherits = "release"
debug = true
strip = false
