# 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] default-members = [".", "core"] members = [ ".", "benches/vs_*", "core", "edge/*", "examples/*", "fuzz", "layers/*", "services/*", "testkit", ] [workspace.package] authors = ["Apache OpenDAL "] categories = ["filesystem"] description = "Apache OpenDALâ„¢: One Layer, All Storage." edition = "2024" homepage = "https://opendal.apache.org/" license = "Apache-2.0" repository = "https://github.com/apache/opendal" rust-version = "1.85" version = "0.57.0" [workspace.dependencies] base64 = "0.22" bytes = "1.10" ctor = "1.0.1" futures = { version = "0.3", default-features = false } http = "1.1" log = { version = "0.4.29" } logforth = { version = "0.29.1", features = ["starter-log"] } mea = "0.6" quick-xml = { version = "0.39.3", default-features = false } rand = "0.10.1" serde = { version = "1", default-features = false } serde_json = "1" sha2 = "0.11.0" tokio = { version = "1.48", default-features = false } url = "2.5" uuid = { version = "1", default-features = false } [package] exclude = ["/tests/"] keywords = ["storage", "fs", "s3", "azblob", "gcs"] name = "opendal" authors = { workspace = true } categories = { workspace = true } description = { workspace = true } edition = { workspace = true } homepage = { workspace = true } license = { workspace = true } repository = { workspace = true } rust-version = { workspace = true } version = { workspace = true } [lints.clippy] unused_async = "warn" [package.metadata.docs.rs] all-features = true [features] # Register services enabled to the OperatorRegistry so that they can be used by `Operator::from_uri`. auto-register-services = ["dep:ctor"] blocking = ["opendal-core/blocking"] default = [ "auto-register-services", "reqwest-rustls-tls", "executors-tokio", "layers-concurrent-limit", "layers-logging", "layers-retry", "layers-timeout", ] executors-tokio = ["opendal-core/executors-tokio"] internal-path-cache = ["opendal-core/internal-path-cache"] internal-tokio-rt = ["opendal-core/internal-tokio-rt"] layers-async-backtrace = ["dep:opendal-layer-async-backtrace"] layers-await-tree = ["dep:opendal-layer-await-tree"] layers-capability-check = ["dep:opendal-layer-capability-check"] layers-chaos = ["dep:opendal-layer-chaos"] layers-concurrent-limit = ["dep:opendal-layer-concurrent-limit"] layers-dtrace = ["dep:opendal-layer-dtrace"] layers-fastmetrics = ["dep:opendal-layer-fastmetrics"] layers-fastrace = ["dep:opendal-layer-fastrace"] layers-foyer = ["dep:opendal-layer-foyer"] layers-hotpath = ["dep:opendal-layer-hotpath"] layers-immutable-index = ["dep:opendal-layer-immutable-index"] layers-logging = ["dep:opendal-layer-logging"] layers-metrics = ["dep:opendal-layer-metrics"] layers-mime-guess = ["dep:opendal-layer-mime-guess"] layers-otel-metrics = ["dep:opendal-layer-otelmetrics"] layers-otel-trace = ["dep:opendal-layer-oteltrace"] layers-prometheus = ["dep:opendal-layer-prometheus"] layers-prometheus-client = ["dep:opendal-layer-prometheus-client"] layers-retry = ["dep:opendal-layer-retry"] layers-route = ["dep:opendal-layer-route"] layers-tail-cut = ["dep:opendal-layer-tail-cut"] layers-throttle = ["dep:opendal-layer-throttle"] layers-timeout = ["dep:opendal-layer-timeout"] layers-tracing = ["dep:opendal-layer-tracing"] reqwest-rustls-no-provider-tls = ["opendal-core/reqwest-rustls-no-provider-tls"] reqwest-rustls-tls = ["opendal-core/reqwest-rustls-tls"] services-aliyun-drive = ["dep:opendal-service-aliyun-drive"] services-alluxio = ["dep:opendal-service-alluxio"] services-azblob = ["dep:opendal-service-azblob"] services-azdls = ["dep:opendal-service-azdls"] services-azfile = ["dep:opendal-service-azfile"] services-b2 = ["dep:opendal-service-b2"] services-cacache = ["dep:opendal-service-cacache"] services-cloudflare-kv = ["dep:opendal-service-cloudflare-kv"] services-compfs = ["dep:opendal-service-compfs"] services-cos = ["dep:opendal-service-cos"] services-d1 = ["dep:opendal-service-d1"] services-dashmap = ["dep:opendal-service-dashmap"] services-dbfs = ["dep:opendal-service-dbfs"] services-dropbox = ["dep:opendal-service-dropbox"] services-etcd = ["dep:opendal-service-etcd"] services-foundationdb = ["dep:opendal-service-foundationdb"] services-foyer = ["dep:opendal-service-foyer"] services-fs = ["dep:opendal-service-fs"] services-ftp = ["dep:opendal-service-ftp"] services-gcs = ["dep:opendal-service-gcs"] services-gdrive = ["dep:opendal-service-gdrive"] services-ghac = ["dep:opendal-service-ghac"] services-github = ["dep:opendal-service-github"] services-goosefs = ["dep:opendal-service-goosefs"] services-gridfs = ["dep:opendal-service-gridfs"] services-hdfs = ["dep:opendal-service-hdfs"] services-hdfs-native = ["dep:opendal-service-hdfs-native"] services-hf = ["dep:opendal-service-hf"] services-http = ["dep:opendal-service-http"] services-huggingface = ["services-hf"] services-ipfs = ["dep:opendal-service-ipfs"] services-ipmfs = ["dep:opendal-service-ipmfs"] services-koofr = ["dep:opendal-service-koofr"] services-lakefs = ["dep:opendal-service-lakefs"] services-memcached = ["dep:opendal-service-memcached"] # Deprecated: memory service is always enabled. services-memory = ["opendal-core/services-memory"] services-mini-moka = ["dep:opendal-service-mini-moka"] services-moka = ["dep:opendal-service-moka"] services-mongodb = ["dep:opendal-service-mongodb"] services-monoiofs = ["dep:opendal-service-monoiofs"] services-mysql = ["dep:opendal-service-mysql"] services-obs = ["dep:opendal-service-obs"] services-onedrive = ["dep:opendal-service-onedrive"] services-opfs = ["dep:opendal-service-opfs"] services-oss = ["dep:opendal-service-oss"] services-pcloud = ["dep:opendal-service-pcloud"] services-persy = ["dep:opendal-service-persy"] services-postgresql = ["dep:opendal-service-postgresql"] services-redb = ["dep:opendal-service-redb"] services-redis = ["dep:opendal-service-redis", "opendal-service-redis?/rustls"] services-redis-native-tls = [ "dep:opendal-service-redis", "opendal-service-redis?/native-tls", ] services-rocksdb = ["dep:opendal-service-rocksdb"] services-s3 = ["dep:opendal-service-s3"] services-seafile = ["dep:opendal-service-seafile"] services-sftp = ["dep:opendal-service-sftp"] services-sled = ["dep:opendal-service-sled"] services-sqlite = ["dep:opendal-service-sqlite"] services-surrealdb = ["dep:opendal-service-surrealdb"] services-swift = ["dep:opendal-service-swift"] services-tikv = ["dep:opendal-service-tikv"] services-tos = ["dep:opendal-service-tos"] services-upyun = ["dep:opendal-service-upyun"] services-vercel-artifacts = ["dep:opendal-service-vercel-artifacts"] services-vercel-blob = ["dep:opendal-service-vercel-blob"] services-webdav = ["dep:opendal-service-webdav"] services-webhdfs = ["dep:opendal-service-webhdfs"] services-yandex-disk = ["dep:opendal-service-yandex-disk"] tests = ["opendal-testkit"] [lib] bench = false [[bench]] harness = false name = "ops" required-features = ["tests"] [[bench]] harness = false name = "types" [[test]] harness = false name = "behavior" path = "tests/behavior/main.rs" required-features = ["tests"] [dependencies] ctor = { workspace = true, optional = true } opendal-core = { path = "core", version = "0.57.0", default-features = false } opendal-layer-async-backtrace = { path = "layers/async-backtrace", version = "0.57.0", optional = true, default-features = false } opendal-layer-await-tree = { path = "layers/await-tree", version = "0.57.0", optional = true, default-features = false } opendal-layer-capability-check = { path = "layers/capability-check", version = "0.57.0", optional = true, default-features = false } opendal-layer-chaos = { path = "layers/chaos", version = "0.57.0", optional = true, default-features = false } opendal-layer-concurrent-limit = { path = "layers/concurrent-limit", version = "0.57.0", optional = true, default-features = false } opendal-layer-fastmetrics = { path = "layers/fastmetrics", version = "0.57.0", optional = true, default-features = false } opendal-layer-fastrace = { path = "layers/fastrace", version = "0.57.0", optional = true, default-features = false } opendal-layer-foyer = { path = "layers/foyer", version = "0.57.0", optional = true, default-features = false } opendal-layer-hotpath = { path = "layers/hotpath", version = "0.57.0", optional = true, default-features = false } opendal-layer-immutable-index = { path = "layers/immutable-index", version = "0.57.0", optional = true, default-features = false } opendal-layer-logging = { path = "layers/logging", version = "0.57.0", optional = true, default-features = false } opendal-layer-metrics = { path = "layers/metrics", version = "0.57.0", optional = true, default-features = false } opendal-layer-mime-guess = { path = "layers/mime-guess", version = "0.57.0", optional = true, default-features = false } opendal-layer-observe-metrics-common = { path = "layers/observe-metrics-common", version = "0.57.0", optional = true, default-features = false } opendal-layer-otelmetrics = { path = "layers/otelmetrics", version = "0.57.0", optional = true, default-features = false } opendal-layer-oteltrace = { path = "layers/oteltrace", version = "0.57.0", optional = true, default-features = false } opendal-layer-prometheus = { path = "layers/prometheus", version = "0.57.0", optional = true, default-features = false } opendal-layer-prometheus-client = { path = "layers/prometheus-client", version = "0.57.0", optional = true, default-features = false } opendal-layer-retry = { path = "layers/retry", version = "0.57.0", optional = true, default-features = false } opendal-layer-route = { path = "layers/route", version = "0.57.0", optional = true, default-features = false } opendal-layer-tail-cut = { path = "layers/tail-cut", version = "0.57.0", optional = true, default-features = false } opendal-layer-throttle = { path = "layers/throttle", version = "0.57.0", optional = true, default-features = false } opendal-layer-timeout = { path = "layers/timeout", version = "0.57.0", optional = true, default-features = false } opendal-layer-tracing = { path = "layers/tracing", version = "0.57.0", optional = true, default-features = false } opendal-service-aliyun-drive = { path = "services/aliyun-drive", version = "0.57.0", optional = true, default-features = false } opendal-service-alluxio = { path = "services/alluxio", version = "0.57.0", optional = true, default-features = false } opendal-service-azblob = { path = "services/azblob", version = "0.57.0", optional = true, default-features = false } opendal-service-azdls = { path = "services/azdls", version = "0.57.0", optional = true, default-features = false } opendal-service-azfile = { path = "services/azfile", version = "0.57.0", optional = true, default-features = false } opendal-service-b2 = { path = "services/b2", version = "0.57.0", optional = true, default-features = false } opendal-service-cacache = { path = "services/cacache", version = "0.57.0", optional = true, default-features = false } opendal-service-cloudflare-kv = { path = "services/cloudflare-kv", version = "0.57.0", optional = true, default-features = false } opendal-service-compfs = { path = "services/compfs", version = "0.57.0", optional = true, default-features = false } opendal-service-cos = { path = "services/cos", version = "0.57.0", optional = true, default-features = false } opendal-service-d1 = { path = "services/d1", version = "0.57.0", optional = true, default-features = false } opendal-service-dashmap = { path = "services/dashmap", version = "0.57.0", optional = true, default-features = false } opendal-service-dbfs = { path = "services/dbfs", version = "0.57.0", optional = true, default-features = false } opendal-service-dropbox = { path = "services/dropbox", version = "0.57.0", optional = true, default-features = false } opendal-service-etcd = { path = "services/etcd", version = "0.57.0", optional = true, default-features = false } opendal-service-foundationdb = { path = "services/foundationdb", version = "0.57.0", optional = true, default-features = false } opendal-service-foyer = { path = "services/foyer", version = "0.57.0", optional = true, default-features = false } opendal-service-fs = { path = "services/fs", version = "0.57.0", optional = true, default-features = false } opendal-service-ftp = { path = "services/ftp", version = "0.57.0", optional = true, default-features = false } opendal-service-gcs = { path = "services/gcs", version = "0.57.0", optional = true, default-features = false } opendal-service-gdrive = { path = "services/gdrive", version = "0.57.0", optional = true, default-features = false } opendal-service-ghac = { path = "services/ghac", version = "0.57.0", optional = true, default-features = false } opendal-service-github = { path = "services/github", version = "0.57.0", optional = true, default-features = false } opendal-service-goosefs = { path = "services/goosefs", version = "0.57.0", optional = true, default-features = false } opendal-service-gridfs = { path = "services/gridfs", version = "0.57.0", optional = true, default-features = false } opendal-service-hdfs = { path = "services/hdfs", version = "0.57.0", optional = true, default-features = false } opendal-service-hdfs-native = { path = "services/hdfs-native", version = "0.57.0", optional = true, default-features = false } opendal-service-hf = { path = "services/hf", version = "0.57.0", optional = true, default-features = false } opendal-service-http = { path = "services/http", version = "0.57.0", optional = true, default-features = false } opendal-service-ipfs = { path = "services/ipfs", version = "0.57.0", optional = true, default-features = false } opendal-service-ipmfs = { path = "services/ipmfs", version = "0.57.0", optional = true, default-features = false } opendal-service-koofr = { path = "services/koofr", version = "0.57.0", optional = true, default-features = false } opendal-service-lakefs = { path = "services/lakefs", version = "0.57.0", optional = true, default-features = false } opendal-service-memcached = { path = "services/memcached", version = "0.57.0", optional = true, default-features = false } opendal-service-mini-moka = { path = "services/mini_moka", version = "0.57.0", optional = true, default-features = false } opendal-service-moka = { path = "services/moka", version = "0.57.0", optional = true, default-features = false } opendal-service-mongodb = { path = "services/mongodb", version = "0.57.0", optional = true, default-features = false } opendal-service-monoiofs = { path = "services/monoiofs", version = "0.57.0", optional = true, default-features = false } opendal-service-mysql = { path = "services/mysql", version = "0.57.0", optional = true, default-features = false } opendal-service-obs = { path = "services/obs", version = "0.57.0", optional = true, default-features = false } opendal-service-onedrive = { path = "services/onedrive", version = "0.57.0", optional = true, default-features = false } opendal-service-oss = { path = "services/oss", version = "0.57.0", optional = true, default-features = false } opendal-service-pcloud = { path = "services/pcloud", version = "0.57.0", optional = true, default-features = false } opendal-service-persy = { path = "services/persy", version = "0.57.0", optional = true, default-features = false } opendal-service-postgresql = { path = "services/postgresql", version = "0.57.0", optional = true, default-features = false } opendal-service-redb = { path = "services/redb", version = "0.57.0", optional = true, default-features = false } opendal-service-redis = { path = "services/redis", version = "0.57.0", optional = true, default-features = false } opendal-service-rocksdb = { path = "services/rocksdb", version = "0.57.0", optional = true, default-features = false } opendal-service-s3 = { path = "services/s3", version = "0.57.0", optional = true, default-features = false } opendal-service-seafile = { path = "services/seafile", version = "0.57.0", optional = true, default-features = false } opendal-service-sftp = { path = "services/sftp", version = "0.57.0", optional = true, default-features = false } opendal-service-sled = { path = "services/sled", version = "0.57.0", optional = true, default-features = false } opendal-service-sqlite = { path = "services/sqlite", version = "0.57.0", optional = true, default-features = false } opendal-service-surrealdb = { path = "services/surrealdb", version = "0.57.0", optional = true, default-features = false } opendal-service-swift = { path = "services/swift", version = "0.57.0", optional = true, default-features = false } opendal-service-tikv = { path = "services/tikv", version = "0.57.0", optional = true, default-features = false } opendal-service-tos = { path = "services/tos", version = "0.57.0", optional = true, default-features = false } opendal-service-upyun = { path = "services/upyun", version = "0.57.0", optional = true, default-features = false } opendal-service-vercel-artifacts = { path = "services/vercel-artifacts", version = "0.57.0", optional = true, default-features = false } opendal-service-vercel-blob = { path = "services/vercel-blob", version = "0.57.0", optional = true, default-features = false } opendal-service-webdav = { path = "services/webdav", version = "0.57.0", optional = true, default-features = false } opendal-service-webhdfs = { path = "services/webhdfs", version = "0.57.0", optional = true, default-features = false } opendal-service-yandex-disk = { path = "services/yandex-disk", version = "0.57.0", optional = true, default-features = false } opendal-testkit = { path = "testkit", version = "0.57.0", optional = true } [target.'cfg(target_os = "linux")'.dependencies] opendal-layer-dtrace = { path = "layers/dtrace", version = "0.57.0", optional = true, default-features = false } [target.'cfg(target_arch = "wasm32")'.dependencies] opendal-service-opfs = { path = "services/opfs", version = "0.57.0", optional = true, default-features = false } [dev-dependencies] anyhow = "1.0" bytes = { workspace = true } divan = "0.1" futures = { workspace = true, default-features = true } http = { workspace = true } libtest-mimic = "0.8" log = { workspace = true } logforth = { workspace = true } rand = { workspace = true } reqwest = "0.13.2" sha2 = { workspace = true } size = "0.5" tokio = { workspace = true, features = ["fs", "macros", "rt-multi-thread"] } uuid = { workspace = true, features = ["serde", "v4"] }