Skip to content
Draft
Show file tree
Hide file tree
Changes from 10 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
206 changes: 205 additions & 1 deletion Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 3 additions & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,9 @@ version = "1.0.0"

[workspace.dependencies]
arbitrary = "1.4"
arrow = { version = "59.1.0", default-features = false }
arrow-array = "59.1.0"
arrow-ipc = "59.1.0"
arrow-schema = "59.1.0"
async-lock = "3.4"
async-stream = { version = "0.3.6" }
async-trait = "0.1"
Expand Down
42 changes: 21 additions & 21 deletions sdk/core/azure_core/src/http/pager.rs
Comment thread
vincenttran-msft marked this conversation as resolved.
Original file line number Diff line number Diff line change
Expand Up @@ -1003,6 +1003,27 @@ mod tests {
}
}

#[tokio::test]
async fn item_pagination_supports_non_serde_custom_deserialization() {
let pager: Pager<ManualPage, ManualFormat> = Pager::new(
|_, _| {
Box::pin(async move {
Ok(PagerResult::Done {
response: RawResponse::from_bytes(
StatusCode::Ok,
Headers::new(),
"items: 1, 2, 3",
)
.into(),
})
})
},
None,
);

assert_eq!(pager.try_collect::<Vec<_>>().await.unwrap(), vec![1, 2, 3]);
}

#[derive(Deserialize, Debug, PartialEq, Eq)]
struct Page {
pub items: Vec<i32>,
Expand Down Expand Up @@ -1075,27 +1096,6 @@ mod tests {
assert_eq!(vec![1, 2, 3], items.as_slice())
}

#[tokio::test]
async fn item_pagination_supports_non_serde_custom_deserialization() {
let pager: Pager<ManualPage, ManualFormat> = Pager::new(
|_, _| {
Box::pin(async move {
Ok(PagerResult::Done {
response: RawResponse::from_bytes(
StatusCode::Ok,
Headers::new(),
"items: 1, 2, 3",
)
.into(),
})
})
},
None,
);

assert_eq!(pager.try_collect::<Vec<_>>().await.unwrap(), vec![1, 2, 3]);
}

#[tokio::test]
async fn callback_item_pagination_error() {
let pager: Pager<Page> = ItemIterator::new(
Expand Down
1 change: 1 addition & 0 deletions sdk/storage/.cspell.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
"ADLS",
"appendblock",
"appendpos",
"blobprefix",
"blockid",
"blocklist",
"blocklisttype",
Expand Down
3 changes: 3 additions & 0 deletions sdk/storage/azure_storage_blob/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,13 @@
### Features Added

- Updated the default service version to `2026-10-06`.
- Re-added `BlobContainerClient::list_blobs_hierarchical()`.
- Added `end_before` to `BlobContainerClientListBlobsOptions` and `BlobContainerClientListBlobsHierarchicalOptions`. `end_before` is only supported with the Apache Arrow response format.
- The service-calculated CRC64 is now surfaced as `content_crc64` on upload responses, alongside `content_md5`, when a content MD5 is provided with the request. This applies to `stage_block`, `stage_block_from_url`, `upload_pages`, `upload_pages_from_url`, `append_block`, `append_block_from_url`, `upload` and `upload_blob_from_url`.

### Breaking Changes

- `BlobContainerClient::list_blobs()` now requests Apache Arrow by default and returns `Result<Pager<ListBlobsResponse, AutoFormat>>` instead of `Result<Pager<ListBlobsResponse, XmlFormat>>`. Use `BlobContainerClientListBlobsOptions::accept` to request a different response format.
- Added the `AccessTier::Smart` and `ArchiveStatus::RehydratePendingToSmart` enum variants.
- Added `access_tier`, `access_tier_changed_on`, `access_tier_inferred`, and `smart_access_tier` to `BlobDownloadProperties` and marked the struct as non-exhaustive.
- Added `BlobClient::start_copy_from_url()` and `BlobClient::abort_copy()` for asynchronous blob copy operations.
Expand Down
Loading
Loading