This is an automated email from the ASF dual-hosted git repository. xuanwo pushed a commit to branch bump-opendal-0.55.0-rc2 in repository https://gitbox.apache.org/repos/asf/opendal.git
commit b1a3938a195428efb8eb4bce49585b2b57bf1534 Author: Xuanwo <[email protected]> AuthorDate: Mon Nov 17 19:12:52 2025 +0800 update upgrade Signed-off-by: Xuanwo <[email protected]> --- bindings/python/upgrade.md | 32 ++++++++++++++++++++++++++++++++ core/src/docs/upgrade.md | 30 ++++++++++++++++++++++++++++++ core/upgrade.md | 1 + 3 files changed, 63 insertions(+) diff --git a/bindings/python/upgrade.md b/bindings/python/upgrade.md index 606d2de15..d365283c4 100644 --- a/bindings/python/upgrade.md +++ b/bindings/python/upgrade.md @@ -1,3 +1,35 @@ +# Upgrade to v0.47 + +## Breaking change: Module exports are explicit + +`opendal.__init__` now only re-exports the `capability`, `exceptions`, `file`, `layers`, `services`, `types`, `Operator`, and `AsyncOperator` symbols. Imports such as: + +```python +from opendal import Metadata, Layer +``` + +no longer work. Update them to use the dedicated submodules: + +```python +from opendal.types import Metadata +from opendal.layers import Layer +``` + +The legacy helper module `opendal.__base` has also been removed together with `_Base`. + +## Breaking change: Capability accessors renamed + +Both `Operator.full_capability()` and `AsyncOperator.full_capability()` have been renamed to `capability()`. Adjust your code accordingly: + +```diff +-caps = op.full_capability() ++caps = op.capability() +``` + +## Breaking change: Service identifiers now have typed enums + +The constructors for `Operator` / `AsyncOperator` provide overloads that accept `opendal.services.Scheme` members. While plain strings are still accepted at runtime, type checkers (pyright/mypy) expect the new enum values. Migrate code bases that relied on importing the old `Scheme` enum from `opendal` to `from opendal import services` and use `services.Scheme.<NAME>`. + # Upgrade to v0.46 ## Breaking change: Native blocking API removed diff --git a/core/src/docs/upgrade.md b/core/src/docs/upgrade.md index 0767ddc21..53654435f 100644 --- a/core/src/docs/upgrade.md +++ b/core/src/docs/upgrade.md @@ -1,3 +1,33 @@ +# Upgrade to v0.55 + +## Public API + +### Timestamp types now come from `jiff` + +All public metadata APIs that previously exposed `chrono::DateTime<Utc>` now use `jiff::Timestamp`. For example, `Metadata::last_modified()` and related setters return/accept `Timestamp` values (`core/src/types/metadata.rs`). Update downstream crates to depend on `jiff` if they manipulate these timestamps or convert them to other formats. + +### Scheme handling is string-based + +`OperatorInfo::scheme()` now returns `&'static str` instead of `Scheme`, and `Operator::via_iter` accepts `impl AsRef<str>` (typically the `services::*_SCHEME` constants). Additionally, the deprecated constructors `Operator::from_map` and `Operator::via_map` have been removed. Migrate any code that relied on the enum variants or the removed constructors to the new string-based constants and `from_iter`/`via_iter`. + +### List APIs only support `versions` + +`OpList::with_version()`/`version()` and `Capability::list_with_version` have been removed after a long deprecation cycle. Use `with_versions()`/`versions()` on `OpList` and read `Capability::list_with_versions` instead. + +### `S3Builder::security_token` removed + +`S3Builder` no longer exposes the deprecated `security_token()` helper. Use `session_token()` exclusively when configuring temporary credentials. + +### KV-style services no longer pretend to support `list` + +Services that never returned meaningful results for `Operator::list` (such as D1, FoundationDB, GridFS, Memcached, MongoDB, MySQL, Persy, PostgreSQL, Redb, Redis, SurrealDB, TiKV, etc.) now rely on the default `Unsupported` implementation. Those features will be implemented later. + +## Raw API + +### Deprecated KV adapters removed + +The legacy `opendal::raw::adapters::{kv, typed_kv}` modules have been deleted. Services should directly implement `Access` instead of depending on the adapters. Remove the corresponding imports and shim layers from any out-of-tree services. + # Upgrade to v0.54 ## Public API diff --git a/core/upgrade.md b/core/upgrade.md new file mode 120000 index 000000000..f2d33947d --- /dev/null +++ b/core/upgrade.md @@ -0,0 +1 @@ +./src/docs/upgrade.md \ No newline at end of file
