# What changed in azure-storage-blob

> 51 changes in azure-storage-blob 2 to 12 from its official release notes, upgrade guides and advisories: 24 breaking, 3 deprecations, 3 security, 17 new APIs and options. Each one cited. Sources checked 2026-10-23. HTML: https://unstale.sh/pypi/azure-storage-blob/

To see which of these apply to a repository, run `npx @unstale/cli init` in it.

## azure-storage-blob 12

### Breaking changes

- Python 3.9 is no longer supported; this version and future versions require Python 3.10+. (12.31.0) — [release notes](https://github.com/Azure/azure-sdk-for-python/releases/tag/azure-storage-blob_12.31.0)
- Client-side encryption 2.0 now detects rearrangement of otherwise-untampered authenticated regions in blob content and throws exceptions. (12.30.1) — [release notes](https://github.com/Azure/azure-sdk-for-python/releases/tag/azure-storage-blob_12.30.1)
- Only BlobServiceClient, ContainerClient, BlobClient, and BlobLeaseClient should be imported from the async module. (12.0.0) — [release notes](https://github.com/Azure/azure-sdk-for-python/releases/tag/azure-storage-blob_12.0.0)
- BlobAnalyticsLogging is the new name for Logging. (12.0.0) — [release notes](https://github.com/Azure/azure-sdk-for-python/releases/tag/azure-storage-blob_12.0.0)
- BlobLeaseClient is the new name for LeaseClient. (12.0.0) — [release notes](https://github.com/Azure/azure-sdk-for-python/releases/tag/azure-storage-blob_12.0.0)
- Client and model files are internal; users should import only from the top-level azure.storage.blob and azure.storage.blob.aio modules. (12.0.0) — [release notes](https://github.com/Azure/azure-sdk-for-python/releases/tag/azure-storage-blob_12.0.0)
- The overwrite option is now keyword-only. (12.0.0) — [release notes](https://github.com/Azure/azure-sdk-for-python/releases/tag/azure-storage-blob_12.0.0)
- The client methods were replaced by module-level SAS generation functions. (12.0.0) — [release notes](https://github.com/Azure/azure-sdk-for-python/releases/tag/azure-storage-blob_12.0.0)
- get_service_properties now returns a dict with keys consistent with set_service_properties. (12.0.0) — [release notes](https://github.com/Azure/azure-sdk-for-python/releases/tag/azure-storage-blob_12.0.0)
- get_service_stats now returns a dict. (12.0.0) — [release notes](https://github.com/Azure/azure-sdk-for-python/releases/tag/azure-storage-blob_12.0.0)
- Etag conditional operations now take explicit etag and match_condition parameters instead of if_match. (12.0.0) — [release notes](https://github.com/Azure/azure-sdk-for-python/releases/tag/azure-storage-blob_12.0.0)
- Etag conditional operations now take explicit etag and match_condition parameters instead of if_none_match. (12.0.0) — [release notes](https://github.com/Azure/azure-sdk-for-python/releases/tag/azure-storage-blob_12.0.0)
- LeaseClient was renamed to BlobLeaseClient. (12.0.0) — [release notes](https://github.com/Azure/azure-sdk-for-python/releases/tag/azure-storage-blob_12.0.0)
- Logging was renamed to BlobAnalyticsLogging. (12.0.0) — [release notes](https://github.com/Azure/azure-sdk-for-python/releases/tag/azure-storage-blob_12.0.0)
- Etag conditional operations now take match_condition as an instance of azure.core.MatchConditions. (12.0.0) — [release notes](https://github.com/Azure/azure-sdk-for-python/releases/tag/azure-storage-blob_12.0.0)
- The NoRetry policy was removed; use retry_total=0 for no retries. (12.0.0) — [release notes](https://github.com/Azure/azure-sdk-for-python/releases/tag/azure-storage-blob_12.0.0)
- Batch APIs add the keyword-only raise_on_any_failure argument, defaulting to True and raising an error for partial batch failure. (12.0.0) — [release notes](https://github.com/Azure/azure-sdk-for-python/releases/tag/azure-storage-blob_12.0.0)
- Reads the complete download stream and returns bytes, replacing content_as_bytes and content_as_text. (12.0.0) — [release notes](https://github.com/Azure/azure-sdk-for-python/releases/tag/azure-storage-blob_12.0.0)
- The signed_identifiers parameter is now required. (12.0.0) — [release notes](https://github.com/Azure/azure-sdk-for-python/releases/tag/azure-storage-blob_12.0.0)
- StorageStreamDownloader is no longer iterable; use its chunks attribute to iterate over the blob data stream. (12.0.0) — [release notes](https://github.com/Azure/azure-sdk-for-python/releases/tag/azure-storage-blob_12.0.0)
- The public attributes of StorageStreamDownloader are limited to name, container, properties, and size. (12.0.0) — [release notes](https://github.com/Azure/azure-sdk-for-python/releases/tag/azure-storage-blob_12.0.0)
- The public attributes of StorageStreamDownloader are limited to name, container, properties, and size. (12.0.0) — [release notes](https://github.com/Azure/azure-sdk-for-python/releases/tag/azure-storage-blob_12.0.0)
- The downloader exposes size for the total blob size or the length of a specified subsection; this was previously called download_size. (12.0.0) — [release notes](https://github.com/Azure/azure-sdk-for-python/releases/tag/azure-storage-blob_12.0.0)
- The overwrite option is now keyword-only. (12.0.0) — [release notes](https://github.com/Azure/azure-sdk-for-python/releases/tag/azure-storage-blob_12.0.0)

### Security

- Fixed an issue where certain headers were not being properly redacted when DEBUG logging was enabled. (12.31.1) — [release notes](https://github.com/Azure/azure-sdk-for-python/releases/tag/azure-storage-blob_12.31.1)
- Async clients now reject header names and values containing carriage returns or newlines when sending a batch request, matching sync clients. (12.30.3) — [release notes](https://github.com/Azure/azure-sdk-for-python/releases/tag/azure-storage-blob_12.30.3)
- Client-side encryption now detects version downgrades and other metadata tampering beyond the start of a download. (12.30.1) — [release notes](https://github.com/Azure/azure-sdk-for-python/releases/tag/azure-storage-blob_12.30.1)

### Deprecations

- content_as_bytes is deprecated and replaced by readall(). (12.0.0) — [release notes](https://github.com/Azure/azure-sdk-for-python/releases/tag/azure-storage-blob_12.0.0)
- content_as_text is deprecated and replaced by readall(). (12.0.0) — [release notes](https://github.com/Azure/azure-sdk-for-python/releases/tag/azure-storage-blob_12.0.0)
- download_to_stream is deprecated and replaced by readinto(stream). (12.0.0) — [release notes](https://github.com/Azure/azure-sdk-for-python/releases/tag/azure-storage-blob_12.0.0)

### New APIs and options

- Added list support for use with directory-scoped SAS tokens. (12.31.0) — [release notes](https://github.com/Azure/azure-sdk-for-python/releases/tag/azure-storage-blob_12.31.0)
- Set this environment variable to revert detection of misordered authenticated regions for data recovery purposes. (12.30.1) — [release notes](https://github.com/Azure/azure-sdk-for-python/releases/tag/azure-storage-blob_12.30.1)
- Use chunks to iterate over the blob data stream. (12.0.0) — [release notes](https://github.com/Azure/azure-sdk-for-python/releases/tag/azure-storage-blob_12.0.0)
- An async module-level download_blob_from_url function was added. (12.0.0) — [release notes](https://github.com/Azure/azure-sdk-for-python/releases/tag/azure-storage-blob_12.0.0)
- Etag conditional operations now take an explicit etag value parameter. (12.0.0) — [release notes](https://github.com/Azure/azure-sdk-for-python/releases/tag/azure-storage-blob_12.0.0)
- A module-level function replaces the BlobServiceClient generate_shared_access_signature method. (12.0.0) — [release notes](https://github.com/Azure/azure-sdk-for-python/releases/tag/azure-storage-blob_12.0.0)
- A module-level function replaces the BlobClient generate_shared_access_signature method. (12.0.0) — [release notes](https://github.com/Azure/azure-sdk-for-python/releases/tag/azure-storage-blob_12.0.0)
- A module-level function replaces the ContainerClient generate_shared_access_signature method. (12.0.0) — [release notes](https://github.com/Azure/azure-sdk-for-python/releases/tag/azure-storage-blob_12.0.0)
- Downloads the complete stream into a supplied writable stream and returns the number of bytes written. (12.0.0) — [release notes](https://github.com/Azure/azure-sdk-for-python/releases/tag/azure-storage-blob_12.0.0)
- ResourceTypes adds a from_string method that takes a string parameter. (12.0.0) — [release notes](https://github.com/Azure/azure-sdk-for-python/releases/tag/azure-storage-blob_12.0.0)
- Services adds a from_string method that takes a string parameter. (12.0.0) — [release notes](https://github.com/Azure/azure-sdk-for-python/releases/tag/azure-storage-blob_12.0.0)
- An async module-level upload_blob_to_url function was added. (12.0.0) — [release notes](https://github.com/Azure/azure-sdk-for-python/releases/tag/azure-storage-blob_12.0.0)

### Fixes and other changes

- Fixed UTC conversion of timezone-aware datetimes in generate_account_sas, generate_container_sas, generate_blob_sas, and BlobServiceClient.get_user_delegation_key for sync and async APIs. Datetimes without timezone information continue to be treated as UTC. (12.31.1) — [release notes](https://github.com/Azure/azure-sdk-for-python/releases/tag/azure-storage-blob_12.31.1)
- Fixed the field being always None on a blob's copy properties when listing blobs with response_format="arrow". (12.31.0) — [release notes](https://github.com/Azure/azure-sdk-for-python/releases/tag/azure-storage-blob_12.31.0)
- Header names or values containing carriage returns or newlines are now rejected with a ValueError instead of being written into the batch request body. (12.30.2) — [release notes](https://github.com/Azure/azure-sdk-for-python/releases/tag/azure-storage-blob_12.30.2)
- The public attributes of StorageStreamDownloader are limited to name, container, properties, and size. (12.0.0) — [release notes](https://github.com/Azure/azure-sdk-for-python/releases/tag/azure-storage-blob_12.0.0)

## azure-storage-blob 2

### New APIs and options

- Adds synchronous support for appending a block from URL(s) to append blobs. (2.0.0) — [release notes](https://github.com/Azure/azure-sdk-for-python/blob/HEAD/sdk/storage/azure-storage-blob/CHANGELOG.md)
- Adds support for generating and using blob snapshot SAS tokens. (2.0.0) — [release notes](https://github.com/Azure/azure-sdk-for-python/blob/HEAD/sdk/storage/azure-storage-blob/CHANGELOG.md)
- Adds support for the 2018-11-09 REST version, enabling related REST API features. (2.0.0) — [release notes](https://github.com/Azure/azure-sdk-for-python/blob/HEAD/sdk/storage/azure-storage-blob/CHANGELOG.md)
- Adds synchronous support for updating a page from URL(s) for page blobs. (2.0.0) — [release notes](https://github.com/Azure/azure-sdk-for-python/blob/HEAD/sdk/storage/azure-storage-blob/CHANGELOG.md)
- Adds support for generating user delegation SAS tokens. (2.0.0) — [release notes](https://github.com/Azure/azure-sdk-for-python/blob/HEAD/sdk/storage/azure-storage-blob/CHANGELOG.md)
