core/Cargo.toml (269 lines of code) (raw):

# 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. [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-cos", "services-fs", "services-gcs", "services-ghac", "services-http", "services-ipmfs", "services-memory", "services-obs", "services-oss", "services-s3", "services-webdav", "services-webhdfs", ] # 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"] # Enable rustls for TLS support rustls = ["reqwest/rustls-tls-native-roots"] # Enable native-tls for TLS support native-tls = ["reqwest/native-tls"] # Enable vendored native-tls for TLS support native-tls-vendored = ["reqwest/native-tls-vendored"] # Enable all layers. layers-all = [ "layers-chaos", "layers-metrics", "layers-prometheus", "layers-tracing", "layers-minitrace", "layers-throttle", "layers-await-tree", "layers-async-backtrace", ] # Enable layers chaos support layers-chaos = ["dep:rand"] # Enable layers metrics support layers-metrics = ["dep:metrics"] # Enable layers prometheus support layers-prometheus = ["dep:prometheus"] # Enable layers madsim support layers-madsim = ["dep:madsim"] # Enable layers minitrace support. layers-minitrace = ["dep:minitrace"] # Enable layers tracing support. layers-tracing = ["dep:tracing"] # Enable layers oteltrace support. layers-otel-trace = ["dep:opentelemetry"] # Enable layers throttle support. layers-throttle = ["dep:governor"] # Enable layers await-tree support. layers-await-tree = ["dep:await-tree"] # Enable layers async-backtrace support. layers-async-backtrace = ["dep:async-backtrace"] services-azblob = [ "dep:sha2", "dep:reqsign", "reqsign?/services-azblob", "reqsign?/reqwest_request", ] services-azdfs = [ "dep:reqsign", "reqsign?/services-azblob", "reqsign?/reqwest_request", ] services-cacache = ["dep:cacache"] services-cos = [ "dep:reqsign", "reqsign?/services-tencent", "reqsign?/reqwest_request", ] services-dashmap = ["dep:dashmap"] services-dropbox = [] services-etcd = ["dep:etcd-client"] services-foundationdb = ["dep:foundationdb"] 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-gdrive = [] services-ghac = [] services-hdfs = ["dep:hdrs"] services-http = [] services-ipfs = ["dep:prost"] services-ipmfs = [] services-memcached = ["dep:bb8"] services-memory = [] services-mini-moka = ["dep:mini-moka"] services-moka = ["dep:moka"] services-obs = [ "dep:reqsign", "reqsign?/services-huaweicloud", "reqsign?/reqwest_request", ] services-onedrive = [] services-oss = [ "dep:reqsign", "reqsign?/services-aliyun", "reqsign?/reqwest_request", ] services-persy = ["dep:persy"] services-redb = ["dep:redb"] services-redis = ["dep:redis"] services-redis-native-tls = ["services-redis", "redis?/tokio-native-tls-comp"] services-redis-rustls = ["services-redis", "redis?/tokio-rustls-comp"] services-rocksdb = ["dep:rocksdb"] services-s3 = [ "dep:reqsign", "reqsign?/services-aws", "reqsign?/reqwest_request", ] services-sftp = ["dep:openssh", "dep:openssh-sftp-client", "dep:dirs"] services-sled = ["dep:sled"] services-supabase = [] services-tikv = ["tikv-client"] services-vercel-artifacts = [] services-wasabi = [ "dep:reqsign", "reqsign?/services-aws", "reqsign?/reqwest_request", ] services-webdav = [] services-webhdfs = [] [lib] bench = false [[bench]] harness = false name = "ops" [[test]] harness = false name = "behavior" path = "tests/behavior/main.rs" [dependencies] anyhow = { version = "1.0.30", features = ["std"] } async-backtrace = { version = "0.2.6", optional = true } async-compat = "0.2" async-tls = { version = "0.11", optional = true } async-trait = "0.1.68" await-tree = { version = "0.1.1", optional = true } backon = "0.4.1" base64 = "0.21" bb8 = { version = "0.8", optional = true } bytes = "1.4" cacache = { version = "11.6", default-features = false, features = [ "tokio-runtime", "mmap", ], optional = true } chrono = { version = "0.4.26", default-features = false, features = ["clock", "std"] } dashmap = { version = "5.4", optional = true } dirs = { version = "5.0.1", optional = true } etcd-client = { version = "0.11", optional = true, features = ["tls"] } flagset = "0.4" foundationdb = { version = "0.8.0", features = [ "embedded-fdb-include", ], optional = true } futures = { version = "0.3", default-features = false, features = ["std"] } governor = { version = "0.5", optional = true, features = ["std"] } hdrs = { version = "0.3.0", optional = true, features = ["async_file"] } http = "0.2.9" 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 } mini-moka = { version = "0.10", optional = true } minitrace = { version = "0.5", optional = true } moka = { version = "0.10", optional = true, features = ["future"] } once_cell = "1" openssh = { version = "0.9.9", optional = true } openssh-sftp-client = { version = "0.13.8", optional = true, features = [ "openssh", "tracing", ] } opentelemetry = { version = "0.20.0", optional = true } parking_lot = "0.12" percent-encoding = "2" persy = { version = "1.4.4", optional = true } pin-project = "1" prometheus = { version = "0.13", features = ["process"], optional = true } prost = { version = "0.11", optional = true } quick-xml = { version = "0.29", features = ["serialize", "overlapped-lists"] } rand = { version = "0.8", optional = true } redb = { version = "1.0.0", optional = true } redis = { version = "0.23", features = [ "tokio-comp", "connection-manager", ], optional = true } reqsign = { version = "0.14.1", default-features = false, optional = true } reqwest = { version = "0.11.18", features = [ "stream", ], default-features = false } rocksdb = { version = "0.21.0", default-features = false, optional = true } serde = { version = "1", features = ["derive"] } serde_json = "1" sha2 = { version = "0.10", optional = true } sled = { version = "0.34.7", optional = true } suppaftp = { version = "4.5", default-features = false, features = [ "async-secure", "async-rustls", ], optional = true } tikv-client = { version = "0.2.0", optional = true } tokio = "1.27" tracing = { version = "0.1", optional = true } uuid = { version = "1", features = ["serde", "v4"] } [dev-dependencies] criterion = { version = "0.4", features = ["async", "async_tokio"] } dotenvy = "0.15" libtest-mimic = "0.6" minitrace = { version = "0.5", features = ["enable"] } minitrace-jaeger = "0.5" opentelemetry = { version = "0.20", 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.19" tracing-subscriber = { version = "0.3", features = [ "env-filter", "tracing-log", ] } wiremock = "0.5"