opendal 0.17.3

OpenDAL: Access data freely, painless, and efficiently.
Documentation
[package]
authors = ["Databend Authors <opensource@datafuselabs.com>"]
categories = ["filesystem"]
description = "OpenDAL: Access data freely, painless, and efficiently."
edition = "2021"
exclude = ["docs/", "testdata/"]
homepage = "https://opendal.databend.rs/"
keywords = ["storage", "data", "s3", "azblob", "gcs"]
license = "Apache-2.0"
name = "opendal"
repository = "https://github.com/datafuselabs/opendal"
version = "0.17.3"

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

[features]
# Enable compress support so that users can decompress while reading.
compress = ["async-compression"]
# Enable serde support.
serde = ["time/serde"]

# Enable all layers.
layers-all = ["layers-metrics", "layers-retry", "layers-tracing"]
# Enable layers metrics support
layers-metrics = ["metrics"]
# Enable layers retry support.
layers-retry = ["backon"]
# Enable layers tracing support.
layers-tracing = ["tracing"]

# Enable services hdfs support
services-hdfs = ["hdrs"]
# Enable services http support
# deprecated: We don't need services-http feature any more.
services-http = []
# Enable services ftp support
services-ftp = ["suppaftp"]
# Enable services ipfs support
services-ipfs = ["prost"]
# Enable services redis support
services-redis = ["redis", "bincode", "serde"]

[lib]
bench = false

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

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

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

[[bench]]
harness = false
name = "layers"
required-features = ["layers-all"]

[[example]]
name = "hdfs"
required-features = ["services-hdfs"]

[[example]]
name = "ipfs"
required-features = ["services-ipfs"]

[[example]]
name = "ftp"
required-features = ["services-ftp"]

[[example]]
name = "redis"
required-features = ["services-redis"]

[[example]]
name = "tracing_layer"
required-features = ["layers-all"]

[dependencies]
anyhow = { version = "1.0", features = ["std"] }
async-compat = "0.2"
# Temp workaround, should come back to tagged version after https://github.com/Nemo157/async-compression/issues/150 resolved.
async-compression = { package = "async-compression-issue-150-workaround", version = "0.3.15-issue-150", features = [
  "futures-io",
  "all-algorithms",
], optional = true }
async-trait = "0.1"
backon = { version = "0.2", optional = true }
base64 = "0.13"
bincode = { version = "1.3", optional = true }
bytes = "1.1"
dotenv = { version = "0.15", optional = true }
flagset = "0.4"
futures = { version = "0.3", features = ["alloc"] }
hdrs = { version = "0.1", optional = true, features = ["futures-io"] }
http = "0.2"
log = "0.4"
md5 = "0.7"
metrics = { version = "0.20", optional = true }
once_cell = "1.10"
parking_lot = "0.12"
percent-encoding = "2.1"
pin-project = "1.0"
prost = { version = "0.11", optional = true }
quick-xml = { version = "0.25", features = ["serialize", "overlapped-lists"] }
redis = { version = "0.21", features = [
  "r2d2",
  "tokio-comp",
  "connection-manager",
], optional = true }
reqsign = "0.4"
reqwest = { version = "0.11", features = [
  "multipart",
  "stream",
  "rustls-tls-native-roots",
], default-features = false }
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
suppaftp = { version = "4.4", features = ["async-secure"], optional = true }
thiserror = "1.0"
time = "0.3"
tokio = { version = "1.20", features = ["fs"] }
tracing = { version = "0.1", optional = true }
ureq = { version = "2.5", features = ["rustls-native-certs"] }

[dev-dependencies]
cfg-if = "1.0"
criterion = { version = "0.4", features = ["async", "async_tokio"] }
dotenv = "0.15"
env_logger = "0.9"
itertools = "0.10"
num-traits = "0.2"
opentelemetry = { version = "0.17", default-features = false, features = [
  "trace",
] }
opentelemetry-jaeger = "0.16"
paste = "1.0"
pretty_assertions = "1"
rand = "0.8"
serde_json = "1.0"
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"] }
uuid = { version = "1.0", features = ["serde", "v4"] }
wiremock = "0.5"