opendal 0.30.2

OpenDAL: Access data freely, painlessly, and efficiently.
Documentation
# Copyright 2022 Datafuse Labs
#
# Licensed 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]
authors = ["Databend Authors <opensource@datafuselabs.com>"]
categories = ["filesystem"]
description = "OpenDAL: Access data freely, painlessly, and efficiently."
edition = "2021"
exclude = [".github/", "bindings/", "profiles/", "oli/", "tests/"]
homepage = "https://opendal.databend.rs/"
keywords = ["storage", "fs", "s3", "azblob", "gcs"]
license = "Apache-2.0"
name = "opendal"
repository = "https://github.com/datafuselabs/opendal"
version = "0.30.2"
# MSRV of OpenDAL. Please update this field while bump.
rust-version = "1.60"

[package.metadata.docs.rs]
all-features = true

[profile.bench]
debug = true

[workspace]
members = [
  "bindings/nodejs",
  "bindings/object_store",
  "bindings/python",

  "binaries/oli",
]

[features]
default = ["rustls"]

# Build docs or not.
#
# This features is used to control whether or not to build opendal's docs.
# And doesn't have any other effects.
docs = []

# Enable trust-dns for pure rust dns cache.
trust-dns = ["reqwest/trust-dns", "dep:trust-dns-resolver"]

# Enable rustls for TLS support
rustls = ["reqwest/rustls-tls-native-roots", "ureq/tls", "ureq/native-certs"]
# Enable native-tls for TLS support
native-tls = ["reqwest/native-tls", "ureq/native-tls"]
# Enable vendored native-tls for TLS support
native-tls-vendored = ["reqwest/native-tls-vendored", "ureq/native-tls"]

# Enable all layers.
layers-all = ["layers-chaos", "layers-metrics", "layers-tracing"]
# Enable layers chaos support
layers-chaos = ["dep:rand"]
# Enable layers metrics support
layers-metrics = ["dep:metrics"]
# Enable layers tracing support.
layers-tracing = ["dep:tracing"]

# Enable services dashmap support
services-dashmap = ["dep:dashmap"]
# Enable services ftp support
services-ftp = ["dep:suppaftp", "dep:lazy-regex", "dep:bb8", "dep:async-tls"]
# Enable services hdfs support
services-hdfs = ["dep:hdrs"]
# Enable services ipfs support
services-ipfs = ["dep:prost"]
# Enable services memcached support
services-memcached = ["dep:bb8"]
# Enable services moka support
services-moka = ["dep:moka"]
# Enable services redis support
services-redis = ["dep:redis"]
# Enable services rocksdb support
services-rocksdb = ["dep:rocksdb", "dep:librocksdb-sys"]
# Enable services sled support
services-sled = ["dep:sled"]

[lib]
bench = false

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

[dependencies]
anyhow = { version = "1.0.30", features = ["std"] }
async-compat = "0.2"
async-tls = { version = "0.11", optional = true }
async-trait = "0.1.50"
backon = "0.4.0"
base64 = "0.21"
bb8 = { version = "0.8", optional = true }
bytes = "1.2"
dashmap = { version = "5.4", optional = true }
flagset = "0.4"
futures = { version = "0.3", features = ["alloc"] }
hdrs = { version = "0.2", optional = true, features = ["async_file"] }
http = "0.2.5"
hyper = "0.14"
lazy-regex = { version = "2.4.1", optional = true }
# Notes:
# pin to 6.11 to allow we can use rocksdb 6.11 which is more widely used.
librocksdb-sys = { version = "=6.11", optional = true }
log = "0.4"
md-5 = "0.10"
metrics = { version = "0.20", optional = true }
moka = { version = "0.10", optional = true, features = ["future"] }
once_cell = "1"
parking_lot = "0.12"
percent-encoding = "2"
pin-project = "1"
prost = { version = "0.11", optional = true }
quick-xml = { version = "0.27", features = ["serialize", "overlapped-lists"] }
rand = { version = "0.8", optional = true }
redis = { version = "0.22", features = [
  "tokio-comp",
  "connection-manager",
], optional = true }
reqsign = "0.8.3"
reqwest = { version = "0.11.13", features = [
  "multipart",
  "stream",
], default-features = false }
# Notes:
# pin to 0.15 to allow we can use rocksdb 6.x which is more widely used.
rocksdb = { version = "0.15", default-features = false, optional = true }
serde = { version = "1", features = ["derive"] }
serde_json = "1"
sled = { version = "0.34.7", optional = true }
suppaftp = { version = "4.5", default-features = false, features = [
  "async-secure",
  "async-rustls",
], optional = true }
# time 0.3.18 bump MSRV to 1.62, let's pin to 0.3.17 until we decide
# to bump ours
time = { version = ">=0.3.10, <=0.3.17", features = ["serde"] }
tokio = { version = "1.20", features = ["fs"] }
tracing = { version = "0.1", optional = true }
trust-dns-resolver = { version = "0.22", optional = true }
ureq = { version = "2", default-features = false }
uuid = { version = "1", features = ["serde", "v4"] }

[dev-dependencies]
cfg-if = "1"
criterion = { version = "0.4", features = ["async", "async_tokio"] }
dotenvy = "0.15"
env_logger = "0.10"
opentelemetry = { version = "0.17", default-features = false, features = [
  "trace",
] }
opentelemetry-jaeger = "0.16"
paste = "1"
pretty_assertions = "1"
rand = "0.8"
sha2 = "0.10"
size = "0.4"
tokio = { version = "1.20", features = ["fs", "macros", "rt-multi-thread"] }
tracing-opentelemetry = "0.17"
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
wiremock = "0.5"