[package]
categories = ["filesystem"]
description = "OpenDAL: Access data freely, painlessly, and efficiently."
exclude = ["tests/"]
keywords = ["storage", "fs", "s3", "azblob", "gcs"]
name = "opendal"
authors.workspace = true
edition.workspace = true
homepage.workspace = true
license.workspace = true
repository.workspace = true
rust-version.workspace = true
version.workspace = true
[package.metadata.docs.rs]
all-features = true
[features]
default = [
"rustls",
"services-azblob",
"services-azdfs",
"services-fs",
"services-gcs",
"services-ghac",
"services-http",
"services-ipmfs",
"services-memory",
"services-obs",
"services-oss",
"services-s3",
"services-webdav",
"services-webhdfs",
]
docs = []
trust-dns = ["reqwest/trust-dns"]
rustls = ["reqwest/rustls-tls-native-roots"]
native-tls = ["reqwest/native-tls"]
native-tls-vendored = ["reqwest/native-tls-vendored"]
layers-all = [
"layers-chaos",
"layers-metrics",
"layers-prometheus",
"layers-tracing",
"layers-minitrace",
"layers-madsim",
]
layers-chaos = ["dep:rand"]
layers-metrics = ["dep:metrics"]
layers-prometheus = ["dep:prometheus"]
layers-madsim = ["dep:madsim"]
layers-minitrace = ["dep:minitrace"]
layers-tracing = ["dep:tracing"]
services-azblob = [
"dep:reqsign",
"reqsign?/services-azblob",
"reqsign?/reqwest_request",
]
services-azdfs = [
"dep:reqsign",
"reqsign?/services-azblob",
"reqsign?/reqwest_request",
]
services-dashmap = ["dep:dashmap"]
services-fs = ["tokio/fs"]
services-ftp = ["dep:suppaftp", "dep:lazy-regex", "dep:bb8", "dep:async-tls"]
services-gcs = [
"dep:reqsign",
"reqsign?/services-google",
"reqsign?/reqwest_request",
]
services-ghac = []
services-hdfs = ["dep:hdrs"]
services-http = []
services-ipfs = ["dep:prost"]
services-ipmfs = []
services-memcached = ["dep:bb8"]
services-memory = []
services-moka = ["dep:moka"]
services-obs = [
"dep:reqsign",
"reqsign?/services-huaweicloud",
"reqsign?/reqwest_request",
]
services-oss = [
"dep:reqsign",
"reqsign?/services-aliyun",
"reqsign?/reqwest_request",
]
services-redis = ["dep:redis"]
services-rocksdb = ["dep:rocksdb"]
services-s3 = [
"dep:reqsign",
"reqsign?/services-aws",
"reqsign?/reqwest_request",
]
services-sled = ["dep:sled"]
services-wasabi = [
"dep:reqsign",
"reqsign?/services-aws",
"reqsign?/reqwest_request",
]
services-webdav = []
services-webhdfs = []
[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.68"
backon = "0.4.0"
base64 = "0.21"
bb8 = { version = "0.8", optional = true }
bytes = "1.2"
chrono = "0.4.24"
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.5.0", optional = true }
log = "0.4"
madsim = { version = "0.2.21", optional = true }
md-5 = "0.10"
metrics = { version = "0.20", optional = true }
minitrace = { version = "0.4.0", optional = true }
moka = { version = "0.10", optional = true, features = ["future"] }
once_cell = "1"
parking_lot = "0.12"
percent-encoding = "2"
pin-project = "1"
prometheus = { version = "0.13", features = ["process"], optional = true }
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 = { version = "0.9.1", default-features = false, optional = true }
reqwest = { version = "0.11.13", features = [
"multipart",
"stream",
], default-features = false }
rocksdb = { version = "0.20.1", 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 }
tokio = "1.27"
tracing = { version = "0.1", optional = true }
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.19", default-features = false, features = [
"trace",
] }
opentelemetry-jaeger = "0.18"
paste = "1"
pretty_assertions = "1"
rand = "0.8"
sha2 = "0.10"
size = "0.4"
tokio = { version = "1.27", features = ["fs", "macros", "rt-multi-thread"] }
tracing-opentelemetry = "0.17"
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
wiremock = "0.5"