opendal 0.1.13 → 0.1.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Cargo.lock +24 -24
- data/Cargo.toml +1 -1
- data/DEPENDENCIES.rust.tsv +24 -24
- data/core/CHANGELOG.md +9 -1
- data/core/Cargo.lock +110 -110
- data/core/Cargo.toml +94 -94
- data/core/DEPENDENCIES.rust.tsv +12 -12
- data/core/benches/types/buffer.rs +61 -0
- data/core/benches/vs_fs/Cargo.toml +1 -1
- data/core/benches/vs_s3/Cargo.toml +1 -1
- data/core/core/CHANGELOG.md +9 -1
- data/core/core/src/raw/futures_util.rs +5 -0
- data/core/core/src/raw/oio/copy/block_copy.rs +1 -1
- data/core/core/src/raw/oio/copy/multipart_copy.rs +1 -1
- data/core/core/src/raw/oio/write/block_write.rs +1 -1
- data/core/core/src/raw/oio/write/multipart_write.rs +1 -1
- data/core/core/src/raw/oio/write/position_write.rs +41 -1
- data/core/core/src/types/buffer.rs +131 -0
- data/core/core/src/types/delete/deleter.rs +13 -0
- data/core/core/src/types/mod.rs +1 -0
- data/core/http-transports/reqwest/Cargo.toml +1 -1
- data/core/layers/async-backtrace/Cargo.toml +2 -2
- data/core/layers/await-tree/Cargo.toml +2 -2
- data/core/layers/capability-check/Cargo.toml +2 -2
- data/core/layers/chaos/Cargo.toml +2 -2
- data/core/layers/concurrent-limit/Cargo.toml +2 -2
- data/core/layers/dtrace/Cargo.toml +2 -2
- data/core/layers/fastmetrics/Cargo.toml +3 -3
- data/core/layers/fastrace/Cargo.toml +2 -2
- data/core/layers/foyer/Cargo.toml +2 -2
- data/core/layers/hotpath/Cargo.toml +2 -2
- data/core/layers/immutable-index/Cargo.toml +2 -2
- data/core/layers/logging/Cargo.toml +2 -2
- data/core/layers/metrics/Cargo.toml +3 -3
- data/core/layers/mime-guess/Cargo.toml +2 -2
- data/core/layers/observe-metrics-common/Cargo.toml +1 -1
- data/core/layers/otelmetrics/Cargo.toml +3 -3
- data/core/layers/oteltrace/Cargo.toml +2 -2
- data/core/layers/prometheus/Cargo.toml +3 -3
- data/core/layers/prometheus-client/Cargo.toml +3 -3
- data/core/layers/retry/Cargo.toml +4 -4
- data/core/layers/route/Cargo.toml +3 -3
- data/core/layers/tail-cut/Cargo.toml +2 -2
- data/core/layers/throttle/Cargo.toml +2 -2
- data/core/layers/timeout/Cargo.toml +3 -3
- data/core/layers/tracing/Cargo.toml +2 -2
- data/core/services/aliyun-drive/Cargo.toml +1 -1
- data/core/services/alluxio/Cargo.toml +1 -1
- data/core/services/azblob/Cargo.toml +2 -2
- data/core/services/azdls/Cargo.toml +2 -2
- data/core/services/azfile/Cargo.toml +2 -2
- data/core/services/azure-common/Cargo.toml +1 -1
- data/core/services/b2/Cargo.toml +1 -1
- data/core/services/cacache/Cargo.toml +1 -1
- data/core/services/cloudflare-kv/Cargo.toml +1 -1
- data/core/services/compfs/Cargo.toml +1 -1
- data/core/services/cos/Cargo.toml +1 -1
- data/core/services/d1/Cargo.toml +1 -1
- data/core/services/dashmap/Cargo.toml +1 -1
- data/core/services/dbfs/Cargo.toml +1 -1
- data/core/services/dropbox/Cargo.toml +1 -1
- data/core/services/etcd/Cargo.toml +1 -1
- data/core/services/foundationdb/Cargo.toml +1 -1
- data/core/services/foyer/Cargo.toml +3 -3
- data/core/services/fs/Cargo.toml +1 -1
- data/core/services/ftp/Cargo.toml +1 -1
- data/core/services/gcs/Cargo.toml +1 -1
- data/core/services/gcs-grpc/Cargo.toml +1 -1
- data/core/services/gdrive/Cargo.toml +1 -1
- data/core/services/ghac/Cargo.toml +2 -2
- data/core/services/github/Cargo.toml +1 -1
- data/core/services/goosefs/Cargo.toml +2 -2
- data/core/services/goosefs/src/backend.rs +43 -16
- data/core/services/goosefs/src/config.rs +4 -1
- data/core/services/goosefs/src/docs.md +1 -1
- data/core/services/gridfs/Cargo.toml +1 -1
- data/core/services/hdfs/Cargo.toml +2 -2
- data/core/services/hdfs/src/backend.rs +15 -7
- data/core/services/hdfs/src/core.rs +55 -16
- data/core/services/hdfs/src/docs.md +9 -1
- data/core/services/hdfs-native/Cargo.toml +1 -1
- data/core/services/hf/Cargo.toml +5 -2
- data/core/services/hf/src/backend.rs +8 -3
- data/core/services/hf/src/config.rs +4 -2
- data/core/services/hf/src/docs.md +6 -2
- data/core/services/hf/src/reader.rs +163 -68
- data/core/services/http/Cargo.toml +3 -3
- data/core/services/ipfs/Cargo.toml +1 -1
- data/core/services/ipmfs/Cargo.toml +1 -1
- data/core/services/koofr/Cargo.toml +1 -1
- data/core/services/lakefs/Cargo.toml +1 -1
- data/core/services/memcached/Cargo.toml +1 -1
- data/core/services/mini_moka/Cargo.toml +1 -1
- data/core/services/moka/Cargo.toml +1 -1
- data/core/services/mongodb/Cargo.toml +1 -1
- data/core/services/monoiofs/Cargo.toml +1 -1
- data/core/services/mysql/Cargo.toml +1 -1
- data/core/services/obs/Cargo.toml +1 -1
- data/core/services/onedrive/Cargo.toml +1 -1
- data/core/services/opfs/Cargo.toml +1 -1
- data/core/services/oss/Cargo.toml +1 -1
- data/core/services/oss/src/backend.rs +143 -2
- data/core/services/oss/src/docs.md +12 -0
- data/core/services/pcloud/Cargo.toml +1 -1
- data/core/services/persy/Cargo.toml +1 -1
- data/core/services/postgresql/Cargo.toml +1 -1
- data/core/services/redb/Cargo.toml +1 -1
- data/core/services/redis/Cargo.toml +1 -1
- data/core/services/rocksdb/Cargo.toml +1 -1
- data/core/services/s3/Cargo.toml +1 -1
- data/core/services/seafile/Cargo.toml +1 -1
- data/core/services/sftp/Cargo.toml +1 -1
- data/core/services/sled/Cargo.toml +1 -1
- data/core/services/sqlite/Cargo.toml +1 -1
- data/core/services/surrealdb/Cargo.toml +1 -1
- data/core/services/swift/Cargo.toml +1 -1
- data/core/services/tikv/Cargo.toml +1 -1
- data/core/services/tos/Cargo.toml +1 -1
- data/core/services/upyun/Cargo.toml +1 -1
- data/core/services/vercel-artifacts/Cargo.toml +1 -1
- data/core/services/vercel-blob/Cargo.toml +1 -1
- data/core/services/webdav/Cargo.toml +1 -1
- data/core/services/webdav/src/backend.rs +10 -21
- data/core/services/webdav/src/config.rs +5 -14
- data/core/services/webhdfs/Cargo.toml +1 -1
- data/core/services/yandex-disk/Cargo.toml +1 -1
- data/core/testkit/Cargo.toml +4 -4
- metadata +2 -2
|
@@ -32,7 +32,7 @@ version = { workspace = true }
|
|
|
32
32
|
all-features = true
|
|
33
33
|
|
|
34
34
|
[dependencies]
|
|
35
|
-
opendal-core = { path = "../../core", version = "0.59.
|
|
35
|
+
opendal-core = { path = "../../core", version = "0.59.4", default-features = false }
|
|
36
36
|
redb = { version = "4" }
|
|
37
37
|
serde = { workspace = true, features = ["derive"] }
|
|
38
38
|
|
|
@@ -40,7 +40,7 @@ rustls = ["redis/tokio-rustls-comp"]
|
|
|
40
40
|
asyncband = { workspace = true, features = ["pool"] }
|
|
41
41
|
bytes = { workspace = true }
|
|
42
42
|
http = { workspace = true }
|
|
43
|
-
opendal-core = { path = "../../core", version = "0.59.
|
|
43
|
+
opendal-core = { path = "../../core", version = "0.59.4", default-features = false }
|
|
44
44
|
redis = { version = "1.2", features = [
|
|
45
45
|
"cluster-async",
|
|
46
46
|
"tokio-comp",
|
|
@@ -32,7 +32,7 @@ version = { workspace = true }
|
|
|
32
32
|
all-features = true
|
|
33
33
|
|
|
34
34
|
[dependencies]
|
|
35
|
-
opendal-core = { path = "../../core", version = "0.59.
|
|
35
|
+
opendal-core = { path = "../../core", version = "0.59.4", default-features = false }
|
|
36
36
|
rocksdb = { version = "0.24.0", default-features = false }
|
|
37
37
|
serde = { workspace = true, features = ["derive"] }
|
|
38
38
|
|
data/core/services/s3/Cargo.toml
CHANGED
|
@@ -38,7 +38,7 @@ crc-fast = "1.9.0"
|
|
|
38
38
|
http = { workspace = true }
|
|
39
39
|
log = { workspace = true }
|
|
40
40
|
md-5 = "0.11.0"
|
|
41
|
-
opendal-core = { path = "../../core", version = "0.59.
|
|
41
|
+
opendal-core = { path = "../../core", version = "0.59.4", default-features = false, features = [
|
|
42
42
|
"reqsign",
|
|
43
43
|
] }
|
|
44
44
|
quick-xml = { workspace = true, features = ["serialize", "overlapped-lists"] }
|
|
@@ -32,7 +32,7 @@ version = { workspace = true }
|
|
|
32
32
|
all-features = true
|
|
33
33
|
|
|
34
34
|
[dependencies]
|
|
35
|
-
opendal-core = { path = "../../core", version = "0.59.
|
|
35
|
+
opendal-core = { path = "../../core", version = "0.59.4", default-features = false }
|
|
36
36
|
|
|
37
37
|
asyncband = { workspace = true, features = ["once-cell"] }
|
|
38
38
|
bytes = { workspace = true }
|
|
@@ -32,7 +32,7 @@ version = { workspace = true }
|
|
|
32
32
|
all-features = true
|
|
33
33
|
|
|
34
34
|
[dependencies]
|
|
35
|
-
opendal-core = { path = "../../core", version = "0.59.
|
|
35
|
+
opendal-core = { path = "../../core", version = "0.59.4", default-features = false }
|
|
36
36
|
|
|
37
37
|
asyncband = { workspace = true, features = ["pool"] }
|
|
38
38
|
bytes = { workspace = true }
|
|
@@ -32,7 +32,7 @@ version = { workspace = true }
|
|
|
32
32
|
all-features = true
|
|
33
33
|
|
|
34
34
|
[dependencies]
|
|
35
|
-
opendal-core = { path = "../../core", version = "0.59.
|
|
35
|
+
opendal-core = { path = "../../core", version = "0.59.4", default-features = false }
|
|
36
36
|
serde = { workspace = true, features = ["derive"] }
|
|
37
37
|
sled = "0.34.7"
|
|
38
38
|
|
|
@@ -33,7 +33,7 @@ all-features = true
|
|
|
33
33
|
|
|
34
34
|
[dependencies]
|
|
35
35
|
asyncband = { workspace = true, features = ["once-cell"] }
|
|
36
|
-
opendal-core = { path = "../../core", version = "0.59.
|
|
36
|
+
opendal-core = { path = "../../core", version = "0.59.4", default-features = false }
|
|
37
37
|
serde = { workspace = true, features = ["derive"] }
|
|
38
38
|
sqlx = { version = "0.8.0", features = ["runtime-tokio-rustls", "sqlite"] }
|
|
39
39
|
|
|
@@ -33,7 +33,7 @@ all-features = true
|
|
|
33
33
|
|
|
34
34
|
[dependencies]
|
|
35
35
|
asyncband = { workspace = true, features = ["once-cell"] }
|
|
36
|
-
opendal-core = { path = "../../core", version = "0.59.
|
|
36
|
+
opendal-core = { path = "../../core", version = "0.59.4", default-features = false }
|
|
37
37
|
serde = { workspace = true, features = ["derive"] }
|
|
38
38
|
surrealdb = { version = "3", features = ["protocol-http"] }
|
|
39
39
|
|
|
@@ -37,7 +37,7 @@ bytes = { workspace = true }
|
|
|
37
37
|
hmac = "0.13.0"
|
|
38
38
|
http = { workspace = true }
|
|
39
39
|
log = { workspace = true }
|
|
40
|
-
opendal-core = { path = "../../core", version = "0.59.
|
|
40
|
+
opendal-core = { path = "../../core", version = "0.59.4", default-features = false }
|
|
41
41
|
percent-encoding = "2"
|
|
42
42
|
quick-xml = { workspace = true, features = ["serialize", "overlapped-lists"] }
|
|
43
43
|
serde = { workspace = true, features = ["derive"] }
|
|
@@ -33,7 +33,7 @@ all-features = true
|
|
|
33
33
|
|
|
34
34
|
[dependencies]
|
|
35
35
|
asyncband = { workspace = true, features = ["once-cell"] }
|
|
36
|
-
opendal-core = { path = "../../core", version = "0.59.
|
|
36
|
+
opendal-core = { path = "../../core", version = "0.59.4", default-features = false }
|
|
37
37
|
serde = { workspace = true, features = ["derive"] }
|
|
38
38
|
tikv-client = { version = "0.4.0", default-features = false }
|
|
39
39
|
|
|
@@ -34,7 +34,7 @@ all-features = true
|
|
|
34
34
|
[dependencies]
|
|
35
35
|
bytes = { workspace = true }
|
|
36
36
|
http = { workspace = true }
|
|
37
|
-
opendal-core = { path = "../../core", version = "0.59.
|
|
37
|
+
opendal-core = { path = "../../core", version = "0.59.4", default-features = false, features = [
|
|
38
38
|
"reqsign",
|
|
39
39
|
] }
|
|
40
40
|
quick-xml = { workspace = true, features = ["serialize", "overlapped-lists"] }
|
|
@@ -38,7 +38,7 @@ hmac = "0.13.0"
|
|
|
38
38
|
http = { workspace = true }
|
|
39
39
|
log = { workspace = true }
|
|
40
40
|
md-5 = "0.11.0"
|
|
41
|
-
opendal-core = { path = "../../core", version = "0.59.
|
|
41
|
+
opendal-core = { path = "../../core", version = "0.59.4", default-features = false }
|
|
42
42
|
quick-xml = { workspace = true, features = ["serialize", "overlapped-lists"] }
|
|
43
43
|
serde = { workspace = true, features = ["derive"] }
|
|
44
44
|
serde_json = { workspace = true }
|
|
@@ -32,7 +32,7 @@ version = { workspace = true }
|
|
|
32
32
|
all-features = true
|
|
33
33
|
|
|
34
34
|
[dependencies]
|
|
35
|
-
opendal-core = { path = "../../core", version = "0.59.
|
|
35
|
+
opendal-core = { path = "../../core", version = "0.59.4", default-features = false }
|
|
36
36
|
|
|
37
37
|
bytes = { workspace = true }
|
|
38
38
|
http = { workspace = true }
|
|
@@ -35,7 +35,7 @@ all-features = true
|
|
|
35
35
|
bytes = { workspace = true }
|
|
36
36
|
http = { workspace = true }
|
|
37
37
|
log = { workspace = true }
|
|
38
|
-
opendal-core = { path = "../../core", version = "0.59.
|
|
38
|
+
opendal-core = { path = "../../core", version = "0.59.4", default-features = false }
|
|
39
39
|
quick-xml = { workspace = true, features = ["serialize", "overlapped-lists"] }
|
|
40
40
|
serde = { workspace = true, features = ["derive"] }
|
|
41
41
|
serde_json = { workspace = true }
|
|
@@ -36,7 +36,7 @@ anyhow = { version = "1.0.100", features = ["std"] }
|
|
|
36
36
|
bytes = { workspace = true }
|
|
37
37
|
http = { workspace = true }
|
|
38
38
|
log = { workspace = true }
|
|
39
|
-
opendal-core = { path = "../../core", version = "0.59.
|
|
39
|
+
opendal-core = { path = "../../core", version = "0.59.4", default-features = false }
|
|
40
40
|
quick-xml = { workspace = true, features = ["serialize", "overlapped-lists"] }
|
|
41
41
|
serde = { workspace = true, features = ["derive"] }
|
|
42
42
|
|
|
@@ -154,21 +154,12 @@ impl WebdavBuilder {
|
|
|
154
154
|
self
|
|
155
155
|
}
|
|
156
156
|
|
|
157
|
-
///
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
/// Some WebDAV-compatible servers (e.g., nginx-dav) don't return ETags
|
|
164
|
-
/// in PROPFIND or don't honor these headers on GET. Setting this to
|
|
165
|
-
/// `false` drops the four `read_with_if_*` capabilities, so calls like
|
|
166
|
-
/// `reader_with(path).if_match(...)` return `ErrorKind::Unsupported`
|
|
167
|
-
/// locally instead of being silently ignored by the server.
|
|
168
|
-
///
|
|
169
|
-
/// Default: true
|
|
170
|
-
pub fn enable_conditional_read(mut self, enable: bool) -> Self {
|
|
171
|
-
self.config.enable_conditional_read = enable;
|
|
157
|
+
/// Deprecated: WebDAV conditional read capabilities are enabled by default.
|
|
158
|
+
#[deprecated(
|
|
159
|
+
since = "0.60.0",
|
|
160
|
+
note = "WebDAV conditional read capabilities are enabled by default. Use CapabilityOverrideLayer to override read_with_if_match, read_with_if_none_match, read_with_if_modified_since and read_with_if_unmodified_since for endpoints without ETag support."
|
|
161
|
+
)]
|
|
162
|
+
pub fn enable_conditional_read(self, _enable: bool) -> Self {
|
|
172
163
|
self
|
|
173
164
|
}
|
|
174
165
|
}
|
|
@@ -211,8 +202,6 @@ impl Builder for WebdavBuilder {
|
|
|
211
202
|
authorization = Some(format_authorization_by_bearer(token)?)
|
|
212
203
|
}
|
|
213
204
|
|
|
214
|
-
let conditional_read = self.config.enable_conditional_read;
|
|
215
|
-
|
|
216
205
|
let core = Arc::new(WebdavCore {
|
|
217
206
|
info: ServiceInfo::new(WEBDAV_SCHEME, &root, ""),
|
|
218
207
|
capability: Capability {
|
|
@@ -220,10 +209,10 @@ impl Builder for WebdavBuilder {
|
|
|
220
209
|
|
|
221
210
|
read: true,
|
|
222
211
|
read_with_suffix: true,
|
|
223
|
-
read_with_if_match:
|
|
224
|
-
read_with_if_none_match:
|
|
225
|
-
read_with_if_modified_since:
|
|
226
|
-
read_with_if_unmodified_since:
|
|
212
|
+
read_with_if_match: true,
|
|
213
|
+
read_with_if_none_match: true,
|
|
214
|
+
read_with_if_modified_since: true,
|
|
215
|
+
read_with_if_unmodified_since: true,
|
|
227
216
|
|
|
228
217
|
write: true,
|
|
229
218
|
write_can_empty: true,
|
|
@@ -75,19 +75,11 @@ pub struct WebdavConfig {
|
|
|
75
75
|
///
|
|
76
76
|
/// Default: `https://opendal.apache.org/ns`
|
|
77
77
|
pub user_metadata_uri: Option<String>,
|
|
78
|
-
///
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
///
|
|
84
|
-
/// Some WebDAV-compatible servers (e.g., nginx-dav) don't return ETags
|
|
85
|
-
/// in PROPFIND or don't honor these headers on GET. Setting this to
|
|
86
|
-
/// `false` drops the four `read_with_if_*` capabilities, so calls like
|
|
87
|
-
/// `reader_with(path).if_match(...)` return `ErrorKind::Unsupported`
|
|
88
|
-
/// locally instead of being silently ignored by the server.
|
|
89
|
-
///
|
|
90
|
-
/// Default: true
|
|
78
|
+
/// Deprecated: WebDAV conditional read capabilities are enabled by default.
|
|
79
|
+
#[deprecated(
|
|
80
|
+
since = "0.60.0",
|
|
81
|
+
note = "WebDAV conditional read capabilities are enabled by default. Use CapabilityOverrideLayer to override read_with_if_match, read_with_if_none_match, read_with_if_modified_since and read_with_if_unmodified_since for endpoints without ETag support."
|
|
82
|
+
)]
|
|
91
83
|
pub enable_conditional_read: bool,
|
|
92
84
|
}
|
|
93
85
|
|
|
@@ -119,7 +111,6 @@ impl Debug for WebdavConfig {
|
|
|
119
111
|
.field("disable_create_dir", &self.disable_create_dir)
|
|
120
112
|
.field("user_metadata_prefix", &self.user_metadata_prefix)
|
|
121
113
|
.field("user_metadata_uri", &self.user_metadata_uri)
|
|
122
|
-
.field("enable_conditional_read", &self.enable_conditional_read)
|
|
123
114
|
.finish_non_exhaustive()
|
|
124
115
|
}
|
|
125
116
|
}
|
|
@@ -37,7 +37,7 @@ asyncband = { workspace = true, features = ["once-cell"] }
|
|
|
37
37
|
bytes = { workspace = true }
|
|
38
38
|
http = { workspace = true }
|
|
39
39
|
log = { workspace = true }
|
|
40
|
-
opendal-core = { path = "../../core", version = "0.59.
|
|
40
|
+
opendal-core = { path = "../../core", version = "0.59.4", default-features = false }
|
|
41
41
|
serde = { workspace = true, features = ["derive"] }
|
|
42
42
|
serde_json = { workspace = true }
|
|
43
43
|
uuid = { workspace = true, features = ["serde", "v4"] }
|
|
@@ -32,7 +32,7 @@ version = { workspace = true }
|
|
|
32
32
|
all-features = true
|
|
33
33
|
|
|
34
34
|
[dependencies]
|
|
35
|
-
opendal-core = { path = "../../core", version = "0.59.
|
|
35
|
+
opendal-core = { path = "../../core", version = "0.59.4", default-features = false }
|
|
36
36
|
|
|
37
37
|
bytes = { workspace = true }
|
|
38
38
|
http = { workspace = true }
|
data/core/testkit/Cargo.toml
CHANGED
|
@@ -34,10 +34,10 @@ all-features = true
|
|
|
34
34
|
[dependencies]
|
|
35
35
|
bytes = { workspace = true }
|
|
36
36
|
dotenvy = "0.15"
|
|
37
|
-
opendal-core = { path = "../core", version = "0.59.
|
|
38
|
-
opendal-layer-logging = { path = "../layers/logging", version = "0.59.
|
|
39
|
-
opendal-layer-retry = { path = "../layers/retry", version = "0.59.
|
|
40
|
-
opendal-layer-timeout = { path = "../layers/timeout", version = "0.59.
|
|
37
|
+
opendal-core = { path = "../core", version = "0.59.4", default-features = false }
|
|
38
|
+
opendal-layer-logging = { path = "../layers/logging", version = "0.59.4", default-features = false }
|
|
39
|
+
opendal-layer-retry = { path = "../layers/retry", version = "0.59.4", default-features = false }
|
|
40
|
+
opendal-layer-timeout = { path = "../layers/timeout", version = "0.59.4", default-features = false }
|
|
41
41
|
rand = { workspace = true }
|
|
42
42
|
sha2 = { workspace = true }
|
|
43
43
|
tokio = { workspace = true, features = ["rt-multi-thread"] }
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: opendal
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.1.
|
|
4
|
+
version: 0.1.15
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- OpenDAL Contributors
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2026-
|
|
11
|
+
date: 2026-10-05 00:00:00.000000000 Z
|
|
12
12
|
dependencies: []
|
|
13
13
|
description:
|
|
14
14
|
email:
|