diff --git a/sdk/storage/azure-storage-blob/CHANGELOG.md b/sdk/storage/azure-storage-blob/CHANGELOG.md index 55937e1b2a77..b9302d15a78e 100644 --- a/sdk/storage/azure-storage-blob/CHANGELOG.md +++ b/sdk/storage/azure-storage-blob/CHANGELOG.md @@ -4,6 +4,8 @@ ### Features Added - Added support for service version 2026-04-06. +- Added support for the keywords `access_tier_if_modified_since` and `access_tier_if_unmodified_since` to +conditionally perform `BlobClient.delete_blob` operation. ## 12.28.0b1 (Unreleased) diff --git a/sdk/storage/azure-storage-blob/azure/storage/blob/_blob_client.py b/sdk/storage/azure-storage-blob/azure/storage/blob/_blob_client.py index 0d0b53475e62..9ee4c60f4965 100644 --- a/sdk/storage/azure-storage-blob/azure/storage/blob/_blob_client.py +++ b/sdk/storage/azure-storage-blob/azure/storage/blob/_blob_client.py @@ -932,6 +932,18 @@ def delete_blob(self, delete_snapshots: Optional[str] = None, **kwargs: Any) -> .. versionadded:: 12.4.0 + :keyword ~datetime.datetime access_tier_if_modified_since: + A DateTime value. Azure expects the date value passed in to be UTC. + If timezone is included, any non-UTC datetimes will be converted to UTC. + If a date is passed in without timezone info, it is assumed to be UTC. + Specify this header to perform the operation only if + the access-tier has been modified since the specified date/time. + :keyword ~datetime.datetime access_tier_if_unmodified_since: + A DateTime value. Azure expects the date value passed in to be UTC. + If timezone is included, any non-UTC datetimes will be converted to UTC. + If a date is passed in without timezone info, it is assumed to be UTC. + Specify this header to perform the operation only if + the access-tier has been modified since the specified date/time. :keyword int timeout: Sets the server-side timeout for the operation in seconds. For more details see https://learn.microsoft.com/rest/api/storageservices/setting-timeouts-for-blob-service-operations. @@ -954,7 +966,8 @@ def delete_blob(self, delete_snapshots: Optional[str] = None, **kwargs: Any) -> snapshot=self.snapshot, version_id=get_version_id(self.version_id, kwargs), delete_snapshots=delete_snapshots, - **kwargs) + **kwargs + ) try: self._client.blob.delete(**options) except HttpResponseError as error: diff --git a/sdk/storage/azure-storage-blob/azure/storage/blob/_blob_client.pyi b/sdk/storage/azure-storage-blob/azure/storage/blob/_blob_client.pyi index e55fc01aec3a..d6d34d6cc1df 100644 --- a/sdk/storage/azure-storage-blob/azure/storage/blob/_blob_client.pyi +++ b/sdk/storage/azure-storage-blob/azure/storage/blob/_blob_client.pyi @@ -287,6 +287,8 @@ class BlobClient(StorageAccountHostsMixin, StorageEncryptionMixin): etag: Optional[str] = None, match_condition: Optional[MatchConditions] = None, if_tags_match_condition: Optional[str] = None, + access_tier_if_modified_since: Optional[datetime] = None, + access_tier_if_unmodified_since: Optional[datetime] = None, timeout: Optional[int] = None, **kwargs: Any ) -> None: ... diff --git a/sdk/storage/azure-storage-blob/azure/storage/blob/_blob_client_helpers.py b/sdk/storage/azure-storage-blob/azure/storage/blob/_blob_client_helpers.py index 16e418835cd4..d0b103d5e2f8 100644 --- a/sdk/storage/azure-storage-blob/azure/storage/blob/_blob_client_helpers.py +++ b/sdk/storage/azure-storage-blob/azure/storage/blob/_blob_client_helpers.py @@ -393,7 +393,8 @@ def _generic_delete_blob_options(delete_snapshots: Optional[str] = None, **kwarg 'snapshot': kwargs.pop('snapshot', None), # this is added for delete_blobs 'delete_snapshots': delete_snapshots or None, 'lease_access_conditions': access_conditions, - 'modified_access_conditions': mod_conditions} + 'modified_access_conditions': mod_conditions + } options.update(kwargs) return options diff --git a/sdk/storage/azure-storage-blob/azure/storage/blob/_generated/_azure_blob_storage.py b/sdk/storage/azure-storage-blob/azure/storage/blob/_generated/_azure_blob_storage.py index 9ab21c8abf79..ab37bf1439df 100644 --- a/sdk/storage/azure-storage-blob/azure/storage/blob/_generated/_azure_blob_storage.py +++ b/sdk/storage/azure-storage-blob/azure/storage/blob/_generated/_azure_blob_storage.py @@ -48,7 +48,7 @@ class AzureBlobStorage: # pylint: disable=client-accepts-api-version-keyword :param base_url: Service URL. Required. Default value is "". :type base_url: str :keyword version: Specifies the version of the operation to use for this request. Default value - is "2026-02-06". Note that overriding this default value may result in unsupported behavior. + is "2026-04-06". Note that overriding this default value may result in unsupported behavior. :paramtype version: str """ diff --git a/sdk/storage/azure-storage-blob/azure/storage/blob/_generated/_configuration.py b/sdk/storage/azure-storage-blob/azure/storage/blob/_generated/_configuration.py index 027308796bf1..e9866569775c 100644 --- a/sdk/storage/azure-storage-blob/azure/storage/blob/_generated/_configuration.py +++ b/sdk/storage/azure-storage-blob/azure/storage/blob/_generated/_configuration.py @@ -23,12 +23,12 @@ class AzureBlobStorageConfiguration: # pylint: disable=too-many-instance-attrib desired operation. Required. :type url: str :keyword version: Specifies the version of the operation to use for this request. Default value - is "2026-02-06". Note that overriding this default value may result in unsupported behavior. + is "2026-04-06". Note that overriding this default value may result in unsupported behavior. :paramtype version: str """ def __init__(self, url: str, **kwargs: Any) -> None: - version: Literal["2026-02-06"] = kwargs.pop("version", "2026-02-06") + version: Literal["2026-04-06"] = kwargs.pop("version", "2026-04-06") if url is None: raise ValueError("Parameter 'url' must not be None.") diff --git a/sdk/storage/azure-storage-blob/azure/storage/blob/_generated/_utils/serialization.py b/sdk/storage/azure-storage-blob/azure/storage/blob/_generated/_utils/serialization.py index f5187701d7be..ff543ed937ff 100644 --- a/sdk/storage/azure-storage-blob/azure/storage/blob/_generated/_utils/serialization.py +++ b/sdk/storage/azure-storage-blob/azure/storage/blob/_generated/_utils/serialization.py @@ -21,7 +21,6 @@ import sys import codecs from typing import ( - Dict, Any, cast, Optional, @@ -31,7 +30,6 @@ Mapping, Callable, MutableMapping, - List, ) try: @@ -229,12 +227,12 @@ class Model: serialization and deserialization. """ - _subtype_map: Dict[str, Dict[str, Any]] = {} - _attribute_map: Dict[str, Dict[str, Any]] = {} - _validation: Dict[str, Dict[str, Any]] = {} + _subtype_map: dict[str, dict[str, Any]] = {} + _attribute_map: dict[str, dict[str, Any]] = {} + _validation: dict[str, dict[str, Any]] = {} def __init__(self, **kwargs: Any) -> None: - self.additional_properties: Optional[Dict[str, Any]] = {} + self.additional_properties: Optional[dict[str, Any]] = {} for k in kwargs: # pylint: disable=consider-using-dict-items if k not in self._attribute_map: _LOGGER.warning("%s is not a known attribute of class %s and will be ignored", k, self.__class__) @@ -311,7 +309,7 @@ def serialize(self, keep_readonly: bool = False, **kwargs: Any) -> JSON: def as_dict( self, keep_readonly: bool = True, - key_transformer: Callable[[str, Dict[str, Any], Any], Any] = attribute_transformer, + key_transformer: Callable[[str, dict[str, Any], Any], Any] = attribute_transformer, **kwargs: Any ) -> JSON: """Return a dict that can be serialized using json.dump. @@ -380,7 +378,7 @@ def deserialize(cls, data: Any, content_type: Optional[str] = None) -> Self: def from_dict( cls, data: Any, - key_extractors: Optional[Callable[[str, Dict[str, Any], Any], Any]] = None, + key_extractors: Optional[Callable[[str, dict[str, Any], Any], Any]] = None, content_type: Optional[str] = None, ) -> Self: """Parse a dict using given key extractor return a model. @@ -414,7 +412,7 @@ def _flatten_subtype(cls, key, objects): return {} result = dict(cls._subtype_map[key]) for valuetype in cls._subtype_map[key].values(): - result.update(objects[valuetype]._flatten_subtype(key, objects)) # pylint: disable=protected-access + result |= objects[valuetype]._flatten_subtype(key, objects) # pylint: disable=protected-access return result @classmethod @@ -528,7 +526,7 @@ def __init__(self, classes: Optional[Mapping[str, type]] = None) -> None: "[]": self.serialize_iter, "{}": self.serialize_dict, } - self.dependencies: Dict[str, type] = dict(classes) if classes else {} + self.dependencies: dict[str, type] = dict(classes) if classes else {} self.key_transformer = full_restapi_key_transformer self.client_side_validation = True @@ -579,7 +577,7 @@ def _serialize( # pylint: disable=too-many-nested-blocks, too-many-branches, to if attr_name == "additional_properties" and attr_desc["key"] == "": if target_obj.additional_properties is not None: - serialized.update(target_obj.additional_properties) + serialized |= target_obj.additional_properties continue try: @@ -789,7 +787,7 @@ def serialize_data(self, data, data_type, **kwargs): # If dependencies is empty, try with current data class # It has to be a subclass of Enum anyway - enum_type = self.dependencies.get(data_type, data.__class__) + enum_type = self.dependencies.get(data_type, cast(type, data.__class__)) if issubclass(enum_type, Enum): return Serializer.serialize_enum(data, enum_obj=enum_type) @@ -1184,7 +1182,7 @@ def rest_key_extractor(attr, attr_desc, data): # pylint: disable=unused-argumen while "." in key: # Need the cast, as for some reasons "split" is typed as list[str | Any] - dict_keys = cast(List[str], _FLATTEN.split(key)) + dict_keys = cast(list[str], _FLATTEN.split(key)) if len(dict_keys) == 1: key = _decode_attribute_map_key(dict_keys[0]) break @@ -1386,7 +1384,7 @@ def __init__(self, classes: Optional[Mapping[str, type]] = None) -> None: "duration": (isodate.Duration, datetime.timedelta), "iso-8601": (datetime.datetime), } - self.dependencies: Dict[str, type] = dict(classes) if classes else {} + self.dependencies: dict[str, type] = dict(classes) if classes else {} self.key_extractors = [rest_key_extractor, xml_key_extractor] # Additional properties only works if the "rest_key_extractor" is used to # extract the keys. Making it to work whatever the key extractor is too much diff --git a/sdk/storage/azure-storage-blob/azure/storage/blob/_generated/aio/_azure_blob_storage.py b/sdk/storage/azure-storage-blob/azure/storage/blob/_generated/aio/_azure_blob_storage.py index d01344b66a32..d1313555a124 100644 --- a/sdk/storage/azure-storage-blob/azure/storage/blob/_generated/aio/_azure_blob_storage.py +++ b/sdk/storage/azure-storage-blob/azure/storage/blob/_generated/aio/_azure_blob_storage.py @@ -48,7 +48,7 @@ class AzureBlobStorage: # pylint: disable=client-accepts-api-version-keyword :param base_url: Service URL. Required. Default value is "". :type base_url: str :keyword version: Specifies the version of the operation to use for this request. Default value - is "2026-02-06". Note that overriding this default value may result in unsupported behavior. + is "2026-04-06". Note that overriding this default value may result in unsupported behavior. :paramtype version: str """ diff --git a/sdk/storage/azure-storage-blob/azure/storage/blob/_generated/aio/_configuration.py b/sdk/storage/azure-storage-blob/azure/storage/blob/_generated/aio/_configuration.py index 59296d0c0fd4..0aa4486f33f3 100644 --- a/sdk/storage/azure-storage-blob/azure/storage/blob/_generated/aio/_configuration.py +++ b/sdk/storage/azure-storage-blob/azure/storage/blob/_generated/aio/_configuration.py @@ -23,12 +23,12 @@ class AzureBlobStorageConfiguration: # pylint: disable=too-many-instance-attrib desired operation. Required. :type url: str :keyword version: Specifies the version of the operation to use for this request. Default value - is "2026-02-06". Note that overriding this default value may result in unsupported behavior. + is "2026-04-06". Note that overriding this default value may result in unsupported behavior. :paramtype version: str """ def __init__(self, url: str, **kwargs: Any) -> None: - version: Literal["2026-02-06"] = kwargs.pop("version", "2026-02-06") + version: Literal["2026-04-06"] = kwargs.pop("version", "2026-04-06") if url is None: raise ValueError("Parameter 'url' must not be None.") diff --git a/sdk/storage/azure-storage-blob/azure/storage/blob/_generated/aio/operations/_append_blob_operations.py b/sdk/storage/azure-storage-blob/azure/storage/blob/_generated/aio/operations/_append_blob_operations.py index cfef1c72eb6b..8e92343afda1 100644 --- a/sdk/storage/azure-storage-blob/azure/storage/blob/_generated/aio/operations/_append_blob_operations.py +++ b/sdk/storage/azure-storage-blob/azure/storage/blob/_generated/aio/operations/_append_blob_operations.py @@ -8,7 +8,7 @@ # -------------------------------------------------------------------------- from collections.abc import MutableMapping import datetime -from typing import Any, Callable, Dict, IO, Literal, Optional, TypeVar, Union +from typing import Any, Callable, IO, Literal, Optional, TypeVar, Union from azure.core import AsyncPipelineClient from azure.core.exceptions import ( @@ -35,7 +35,7 @@ from .._configuration import AzureBlobStorageConfiguration T = TypeVar("T") -ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] +ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, dict[str, Any]], Any]] class AppendBlobOperations: @@ -62,7 +62,7 @@ async def create( self, content_length: int, timeout: Optional[int] = None, - metadata: Optional[Dict[str, str]] = None, + metadata: Optional[dict[str, str]] = None, request_id_parameter: Optional[str] = None, blob_tags_string: Optional[str] = None, immutability_policy_expiry: Optional[datetime.datetime] = None, @@ -215,7 +215,10 @@ async def create( if response.status_code not in [201]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -390,7 +393,10 @@ async def append_block( if response.status_code not in [201]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -598,7 +604,10 @@ async def append_block_from_url( if response.status_code not in [201]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -719,7 +728,10 @@ async def seal( if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} diff --git a/sdk/storage/azure-storage-blob/azure/storage/blob/_generated/aio/operations/_blob_operations.py b/sdk/storage/azure-storage-blob/azure/storage/blob/_generated/aio/operations/_blob_operations.py index 3f960c6d8901..ecbada93f0db 100644 --- a/sdk/storage/azure-storage-blob/azure/storage/blob/_generated/aio/operations/_blob_operations.py +++ b/sdk/storage/azure-storage-blob/azure/storage/blob/_generated/aio/operations/_blob_operations.py @@ -8,7 +8,7 @@ # -------------------------------------------------------------------------- from collections.abc import MutableMapping import datetime -from typing import Any, AsyncIterator, Callable, Dict, Literal, Optional, TypeVar, Union +from typing import Any, AsyncIterator, Callable, Literal, Optional, TypeVar, Union from azure.core import AsyncPipelineClient from azure.core.exceptions import ( @@ -57,7 +57,7 @@ from .._configuration import AzureBlobStorageConfiguration T = TypeVar("T") -ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] +ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, dict[str, Any]], Any]] class BlobOperations: # pylint: disable=too-many-public-methods @@ -214,7 +214,10 @@ async def download( except (StreamConsumedError, StreamClosedError): pass map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -507,7 +510,10 @@ async def get_properties( if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -609,6 +615,8 @@ async def delete( delete_snapshots: Optional[Union[str, _models.DeleteSnapshotsOptionType]] = None, request_id_parameter: Optional[str] = None, blob_delete_type: Literal["Permanent"] = "Permanent", + access_tier_if_modified_since: Optional[datetime.datetime] = None, + access_tier_if_unmodified_since: Optional[datetime.datetime] = None, lease_access_conditions: Optional[_models.LeaseAccessConditions] = None, modified_access_conditions: Optional[_models.ModifiedAccessConditions] = None, **kwargs: Any @@ -654,6 +662,12 @@ async def delete( permanently delete a blob if blob soft delete is enabled. Known values are "Permanent" and None. Default value is "Permanent". :type blob_delete_type: str + :param access_tier_if_modified_since: Specify this header value to operate only on a blob if + the access-tier has been modified since the specified date/time. Default value is None. + :type access_tier_if_modified_since: ~datetime.datetime + :param access_tier_if_unmodified_since: Specify this header value to operate only on a blob if + the access-tier has not been modified since the specified date/time. Default value is None. + :type access_tier_if_unmodified_since: ~datetime.datetime :param lease_access_conditions: Parameter group. Default value is None. :type lease_access_conditions: ~azure.storage.blob.models.LeaseAccessConditions :param modified_access_conditions: Parameter group. Default value is None. @@ -704,6 +718,8 @@ async def delete( if_tags=_if_tags, request_id_parameter=request_id_parameter, blob_delete_type=blob_delete_type, + access_tier_if_modified_since=access_tier_if_modified_since, + access_tier_if_unmodified_since=access_tier_if_unmodified_since, version=self._config.version, headers=_headers, params=_params, @@ -719,7 +735,10 @@ async def delete( if response.status_code not in [202]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -786,7 +805,10 @@ async def undelete( if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -865,7 +887,10 @@ async def set_expiry( if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -986,7 +1011,10 @@ async def set_http_headers( if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -1093,7 +1121,10 @@ async def set_immutability_policy( if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -1183,7 +1214,10 @@ async def delete_immutability_policy( if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -1271,7 +1305,10 @@ async def set_legal_hold( if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -1290,7 +1327,7 @@ async def set_legal_hold( async def set_metadata( self, timeout: Optional[int] = None, - metadata: Optional[Dict[str, str]] = None, + metadata: Optional[dict[str, str]] = None, request_id_parameter: Optional[str] = None, lease_access_conditions: Optional[_models.LeaseAccessConditions] = None, cpk_info: Optional[_models.CpkInfo] = None, @@ -1400,7 +1437,10 @@ async def set_metadata( if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -1517,7 +1557,10 @@ async def acquire_lease( if response.status_code not in [201]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -1617,7 +1660,10 @@ async def release_lease( if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -1716,7 +1762,10 @@ async def renew_lease( if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -1822,7 +1871,10 @@ async def change_lease( if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -1928,7 +1980,10 @@ async def break_lease( if response.status_code not in [202]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -1949,7 +2004,7 @@ async def break_lease( async def create_snapshot( self, timeout: Optional[int] = None, - metadata: Optional[Dict[str, str]] = None, + metadata: Optional[dict[str, str]] = None, request_id_parameter: Optional[str] = None, cpk_info: Optional[_models.CpkInfo] = None, cpk_scope_info: Optional[_models.CpkScopeInfo] = None, @@ -2058,7 +2113,10 @@ async def create_snapshot( if response.status_code not in [201]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -2084,7 +2142,7 @@ async def start_copy_from_url( self, copy_source: str, timeout: Optional[int] = None, - metadata: Optional[Dict[str, str]] = None, + metadata: Optional[dict[str, str]] = None, tier: Optional[Union[str, _models.AccessTierOptional]] = None, rehydrate_priority: Optional[Union[str, _models.RehydratePriority]] = None, request_id_parameter: Optional[str] = None, @@ -2232,7 +2290,10 @@ async def start_copy_from_url( if response.status_code not in [202]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -2256,7 +2317,7 @@ async def copy_from_url( self, copy_source: str, timeout: Optional[int] = None, - metadata: Optional[Dict[str, str]] = None, + metadata: Optional[dict[str, str]] = None, tier: Optional[Union[str, _models.AccessTierOptional]] = None, request_id_parameter: Optional[str] = None, source_content_md5: Optional[bytes] = None, @@ -2423,7 +2484,10 @@ async def copy_from_url( if response.status_code not in [202]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -2523,7 +2587,10 @@ async def abort_copy_from_url( if response.status_code not in [204]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -2637,7 +2704,10 @@ async def set_tier( if response.status_code not in [200, 202]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -2705,7 +2775,10 @@ async def get_account_info( if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -2776,7 +2849,8 @@ async def query( _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) comp: Literal["query"] = kwargs.pop("comp", _params.pop("comp", "query")) - content_type: str = kwargs.pop("content_type", _headers.pop("Content-Type", "application/xml")) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", "application/xml")) + content_type = content_type if query_request else None cls: ClsType[AsyncIterator[bytes]] = kwargs.pop("cls", None) _lease_id = None @@ -2842,7 +2916,10 @@ async def query( except (StreamConsumedError, StreamClosedError): pass map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -3073,7 +3150,10 @@ async def get_tags( if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -3150,7 +3230,8 @@ async def set_tags( _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) comp: Literal["tags"] = kwargs.pop("comp", _params.pop("comp", "tags")) - content_type: str = kwargs.pop("content_type", _headers.pop("Content-Type", "application/xml")) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", "application/xml")) + content_type = content_type if tags else None cls: ClsType[None] = kwargs.pop("cls", None) _if_tags = None @@ -3204,7 +3285,10 @@ async def set_tags( if response.status_code not in [204]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} diff --git a/sdk/storage/azure-storage-blob/azure/storage/blob/_generated/aio/operations/_block_blob_operations.py b/sdk/storage/azure-storage-blob/azure/storage/blob/_generated/aio/operations/_block_blob_operations.py index 7f9a736d85d9..7031e68bf8bb 100644 --- a/sdk/storage/azure-storage-blob/azure/storage/blob/_generated/aio/operations/_block_blob_operations.py +++ b/sdk/storage/azure-storage-blob/azure/storage/blob/_generated/aio/operations/_block_blob_operations.py @@ -8,7 +8,7 @@ # -------------------------------------------------------------------------- from collections.abc import MutableMapping import datetime -from typing import Any, Callable, Dict, IO, Literal, Optional, TypeVar, Union +from typing import Any, Callable, IO, Literal, Optional, TypeVar, Union from azure.core import AsyncPipelineClient from azure.core.exceptions import ( @@ -37,7 +37,7 @@ from .._configuration import AzureBlobStorageConfiguration T = TypeVar("T") -ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] +ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, dict[str, Any]], Any]] class BlockBlobOperations: @@ -66,7 +66,7 @@ async def upload( body: IO[bytes], timeout: Optional[int] = None, transactional_content_md5: Optional[bytes] = None, - metadata: Optional[Dict[str, str]] = None, + metadata: Optional[dict[str, str]] = None, tier: Optional[Union[str, _models.AccessTierOptional]] = None, request_id_parameter: Optional[str] = None, blob_tags_string: Optional[str] = None, @@ -255,7 +255,10 @@ async def upload( if response.status_code not in [201]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -292,7 +295,7 @@ async def put_blob_from_url( copy_source: str, timeout: Optional[int] = None, transactional_content_md5: Optional[bytes] = None, - metadata: Optional[Dict[str, str]] = None, + metadata: Optional[dict[str, str]] = None, tier: Optional[Union[str, _models.AccessTierOptional]] = None, request_id_parameter: Optional[str] = None, source_content_md5: Optional[bytes] = None, @@ -496,7 +499,10 @@ async def put_blob_from_url( if response.status_code not in [201]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -645,7 +651,10 @@ async def stage_block( if response.status_code not in [201]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -814,7 +823,10 @@ async def stage_block_from_url( if response.status_code not in [201]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -848,7 +860,7 @@ async def commit_block_list( timeout: Optional[int] = None, transactional_content_md5: Optional[bytes] = None, transactional_content_crc64: Optional[bytes] = None, - metadata: Optional[Dict[str, str]] = None, + metadata: Optional[dict[str, str]] = None, tier: Optional[Union[str, _models.AccessTierOptional]] = None, request_id_parameter: Optional[str] = None, blob_tags_string: Optional[str] = None, @@ -1024,7 +1036,10 @@ async def commit_block_list( if response.status_code not in [201]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -1140,7 +1155,10 @@ async def get_block_list( if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} diff --git a/sdk/storage/azure-storage-blob/azure/storage/blob/_generated/aio/operations/_container_operations.py b/sdk/storage/azure-storage-blob/azure/storage/blob/_generated/aio/operations/_container_operations.py index 054ef756a9de..22728c401369 100644 --- a/sdk/storage/azure-storage-blob/azure/storage/blob/_generated/aio/operations/_container_operations.py +++ b/sdk/storage/azure-storage-blob/azure/storage/blob/_generated/aio/operations/_container_operations.py @@ -7,7 +7,7 @@ # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- from collections.abc import MutableMapping -from typing import Any, AsyncIterator, Callable, Dict, IO, List, Literal, Optional, TypeVar, Union +from typing import Any, AsyncIterator, Callable, IO, Literal, Optional, TypeVar, Union from azure.core import AsyncPipelineClient from azure.core.exceptions import ( @@ -50,7 +50,7 @@ from .._configuration import AzureBlobStorageConfiguration T = TypeVar("T") -ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] +ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, dict[str, Any]], Any]] class ContainerOperations: @@ -76,7 +76,7 @@ def __init__(self, *args, **kwargs) -> None: async def create( self, timeout: Optional[int] = None, - metadata: Optional[Dict[str, str]] = None, + metadata: Optional[dict[str, str]] = None, access: Optional[Union[str, _models.PublicAccessType]] = None, request_id_parameter: Optional[str] = None, container_cpk_scope_info: Optional[_models.ContainerCpkScopeInfo] = None, @@ -155,7 +155,10 @@ async def create( if response.status_code not in [201]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -236,7 +239,10 @@ async def get_properties( if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -347,7 +353,10 @@ async def delete( if response.status_code not in [202]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -365,7 +374,7 @@ async def delete( async def set_metadata( self, timeout: Optional[int] = None, - metadata: Optional[Dict[str, str]] = None, + metadata: Optional[dict[str, str]] = None, request_id_parameter: Optional[str] = None, lease_access_conditions: Optional[_models.LeaseAccessConditions] = None, modified_access_conditions: Optional[_models.ModifiedAccessConditions] = None, @@ -444,7 +453,10 @@ async def set_metadata( if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -467,7 +479,7 @@ async def get_access_policy( request_id_parameter: Optional[str] = None, lease_access_conditions: Optional[_models.LeaseAccessConditions] = None, **kwargs: Any - ) -> List[_models.SignedIdentifier]: + ) -> list[_models.SignedIdentifier]: """gets the permissions for the specified container. The permissions indicate whether container data may be accessed publicly. @@ -499,7 +511,7 @@ async def get_access_policy( restype: Literal["container"] = kwargs.pop("restype", _params.pop("restype", "container")) comp: Literal["acl"] = kwargs.pop("comp", _params.pop("comp", "acl")) - cls: ClsType[List[_models.SignedIdentifier]] = kwargs.pop("cls", None) + cls: ClsType[list[_models.SignedIdentifier]] = kwargs.pop("cls", None) _lease_id = None if lease_access_conditions is not None: @@ -527,7 +539,10 @@ async def get_access_policy( if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -558,7 +573,7 @@ async def set_access_policy( request_id_parameter: Optional[str] = None, lease_access_conditions: Optional[_models.LeaseAccessConditions] = None, modified_access_conditions: Optional[_models.ModifiedAccessConditions] = None, - container_acl: Optional[List[_models.SignedIdentifier]] = None, + container_acl: Optional[list[_models.SignedIdentifier]] = None, **kwargs: Any ) -> None: """sets the permissions for the specified container. The permissions indicate whether blobs in a @@ -599,7 +614,8 @@ async def set_access_policy( restype: Literal["container"] = kwargs.pop("restype", _params.pop("restype", "container")) comp: Literal["acl"] = kwargs.pop("comp", _params.pop("comp", "acl")) - content_type: str = kwargs.pop("content_type", _headers.pop("Content-Type", "application/xml")) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", "application/xml")) + content_type = content_type if container_acl else None cls: ClsType[None] = kwargs.pop("cls", None) _lease_id = None @@ -645,7 +661,10 @@ async def set_access_policy( if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -729,7 +748,10 @@ async def restore( if response.status_code not in [201]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -811,7 +833,10 @@ async def rename( if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -902,7 +927,10 @@ async def submit_batch( except (StreamConsumedError, StreamClosedError): pass map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -925,7 +953,7 @@ async def filter_blobs( where: Optional[str] = None, marker: Optional[str] = None, maxresults: Optional[int] = None, - include: Optional[List[Union[str, _models.FilterBlobsIncludeItem]]] = None, + include: Optional[list[Union[str, _models.FilterBlobsIncludeItem]]] = None, **kwargs: Any ) -> _models.FilterBlobSegment: """The Filter Blobs operation enables callers to list blobs in a container whose tags match a @@ -1004,7 +1032,10 @@ async def filter_blobs( if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -1106,7 +1137,10 @@ async def acquire_lease( if response.status_code not in [201]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -1199,7 +1233,10 @@ async def release_lease( if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -1291,7 +1328,10 @@ async def renew_lease( if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -1390,7 +1430,10 @@ async def break_lease( if response.status_code not in [202]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -1489,7 +1532,10 @@ async def change_lease( if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -1512,7 +1558,7 @@ async def list_blob_flat_segment( prefix: Optional[str] = None, marker: Optional[str] = None, maxresults: Optional[int] = None, - include: Optional[List[Union[str, _models.ListBlobsIncludeItem]]] = None, + include: Optional[list[Union[str, _models.ListBlobsIncludeItem]]] = None, start_from: Optional[str] = None, timeout: Optional[int] = None, request_id_parameter: Optional[str] = None, @@ -1598,7 +1644,10 @@ async def list_blob_flat_segment( if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -1624,7 +1673,7 @@ async def list_blob_hierarchy_segment( prefix: Optional[str] = None, marker: Optional[str] = None, maxresults: Optional[int] = None, - include: Optional[List[Union[str, _models.ListBlobsIncludeItem]]] = None, + include: Optional[list[Union[str, _models.ListBlobsIncludeItem]]] = None, start_from: Optional[str] = None, timeout: Optional[int] = None, request_id_parameter: Optional[str] = None, @@ -1716,7 +1765,10 @@ async def list_blob_hierarchy_segment( if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -1790,7 +1842,10 @@ async def get_account_info( if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} diff --git a/sdk/storage/azure-storage-blob/azure/storage/blob/_generated/aio/operations/_page_blob_operations.py b/sdk/storage/azure-storage-blob/azure/storage/blob/_generated/aio/operations/_page_blob_operations.py index a46c058643c5..d656ece5daa2 100644 --- a/sdk/storage/azure-storage-blob/azure/storage/blob/_generated/aio/operations/_page_blob_operations.py +++ b/sdk/storage/azure-storage-blob/azure/storage/blob/_generated/aio/operations/_page_blob_operations.py @@ -8,7 +8,7 @@ # -------------------------------------------------------------------------- from collections.abc import MutableMapping import datetime -from typing import Any, Callable, Dict, IO, Literal, Optional, TypeVar, Union +from typing import Any, Callable, IO, Literal, Optional, TypeVar, Union from azure.core import AsyncPipelineClient from azure.core.exceptions import ( @@ -40,7 +40,7 @@ from .._configuration import AzureBlobStorageConfiguration T = TypeVar("T") -ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] +ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, dict[str, Any]], Any]] class PageBlobOperations: @@ -69,7 +69,7 @@ async def create( blob_content_length: int, timeout: Optional[int] = None, tier: Optional[Union[str, _models.PremiumPageBlobAccessTier]] = None, - metadata: Optional[Dict[str, str]] = None, + metadata: Optional[dict[str, str]] = None, blob_sequence_number: int = 0, request_id_parameter: Optional[str] = None, blob_tags_string: Optional[str] = None, @@ -236,7 +236,10 @@ async def create( if response.status_code not in [201]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -420,7 +423,10 @@ async def upload_pages( if response.status_code not in [201]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -584,7 +590,10 @@ async def clear_pages( if response.status_code not in [201]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -783,7 +792,10 @@ async def upload_pages_from_url( if response.status_code not in [201]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -926,7 +938,10 @@ async def get_page_ranges( if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -1079,7 +1094,10 @@ async def get_page_ranges_diff( if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -1210,7 +1228,10 @@ async def resize( if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -1325,7 +1346,10 @@ async def update_sequence_number( if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -1431,7 +1455,10 @@ async def copy_incremental( if response.status_code not in [202]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} diff --git a/sdk/storage/azure-storage-blob/azure/storage/blob/_generated/aio/operations/_service_operations.py b/sdk/storage/azure-storage-blob/azure/storage/blob/_generated/aio/operations/_service_operations.py index ecf36dbb32d7..c122e3eea681 100644 --- a/sdk/storage/azure-storage-blob/azure/storage/blob/_generated/aio/operations/_service_operations.py +++ b/sdk/storage/azure-storage-blob/azure/storage/blob/_generated/aio/operations/_service_operations.py @@ -7,7 +7,7 @@ # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- from collections.abc import MutableMapping -from typing import Any, AsyncIterator, Callable, Dict, IO, List, Literal, Optional, TypeVar, Union +from typing import Any, AsyncIterator, Callable, IO, Literal, Optional, TypeVar, Union from azure.core import AsyncPipelineClient from azure.core.exceptions import ( @@ -40,7 +40,7 @@ from .._configuration import AzureBlobStorageConfiguration T = TypeVar("T") -ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] +ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, dict[str, Any]], Any]] class ServiceOperations: @@ -129,7 +129,10 @@ async def set_properties( if response.status_code not in [202]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -198,7 +201,10 @@ async def get_properties( if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -272,7 +278,10 @@ async def get_statistics( if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -296,7 +305,7 @@ async def list_containers_segment( prefix: Optional[str] = None, marker: Optional[str] = None, maxresults: Optional[int] = None, - include: Optional[List[Union[str, _models.ListContainersIncludeType]]] = None, + include: Optional[list[Union[str, _models.ListContainersIncludeType]]] = None, timeout: Optional[int] = None, request_id_parameter: Optional[str] = None, **kwargs: Any @@ -375,7 +384,10 @@ async def list_containers_segment( if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -459,7 +471,10 @@ async def get_user_delegation_key( if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -532,7 +547,10 @@ async def get_account_info( if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -624,7 +642,10 @@ async def submit_batch( except (StreamConsumedError, StreamClosedError): pass map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -647,7 +668,7 @@ async def filter_blobs( where: Optional[str] = None, marker: Optional[str] = None, maxresults: Optional[int] = None, - include: Optional[List[Union[str, _models.FilterBlobsIncludeItem]]] = None, + include: Optional[list[Union[str, _models.FilterBlobsIncludeItem]]] = None, **kwargs: Any ) -> _models.FilterBlobSegment: """The Filter Blobs operation enables callers to list blobs across all containers whose tags match @@ -725,7 +746,10 @@ async def filter_blobs( if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} diff --git a/sdk/storage/azure-storage-blob/azure/storage/blob/_generated/models/_models_py3.py b/sdk/storage/azure-storage-blob/azure/storage/blob/_generated/models/_models_py3.py index 56d23cfbd5bd..3c353de607d5 100644 --- a/sdk/storage/azure-storage-blob/azure/storage/blob/_generated/models/_models_py3.py +++ b/sdk/storage/azure-storage-blob/azure/storage/blob/_generated/models/_models_py3.py @@ -9,7 +9,7 @@ from collections.abc import MutableMapping import datetime -from typing import Any, Dict, List, Optional, TYPE_CHECKING, Union +from typing import Any, Optional, TYPE_CHECKING, Union from .._utils import serialization as _serialization @@ -117,7 +117,7 @@ class ArrowConfiguration(_serialization.Model): } _xml_map = {"name": "ArrowConfiguration"} - def __init__(self, *, schema: List["_models.ArrowField"], **kwargs: Any) -> None: + def __init__(self, *, schema: list["_models.ArrowField"], **kwargs: Any) -> None: """ :keyword schema: Required. :paramtype schema: list[~azure.storage.blob.models.ArrowField] @@ -197,7 +197,7 @@ class BlobFlatListSegment(_serialization.Model): } _xml_map = {"name": "Blobs"} - def __init__(self, *, blob_items: List["_models.BlobItemInternal"], **kwargs: Any) -> None: + def __init__(self, *, blob_items: list["_models.BlobItemInternal"], **kwargs: Any) -> None: """ :keyword blob_items: Required. :paramtype blob_items: list[~azure.storage.blob.models.BlobItemInternal] @@ -230,8 +230,8 @@ class BlobHierarchyListSegment(_serialization.Model): def __init__( self, *, - blob_items: List["_models.BlobItemInternal"], - blob_prefixes: Optional[List["_models.BlobPrefix"]] = None, + blob_items: list["_models.BlobItemInternal"], + blob_prefixes: Optional[list["_models.BlobPrefix"]] = None, **kwargs: Any ) -> None: """ @@ -375,7 +375,7 @@ def __init__( metadata: Optional["_models.BlobMetadata"] = None, blob_tags: Optional["_models.BlobTags"] = None, has_versions_only: Optional[bool] = None, - object_replication_metadata: Optional[Dict[str, str]] = None, + object_replication_metadata: Optional[dict[str, str]] = None, **kwargs: Any ) -> None: """ @@ -430,7 +430,7 @@ class BlobMetadata(_serialization.Model): _xml_map = {"name": "Metadata"} def __init__( - self, *, additional_properties: Optional[Dict[str, str]] = None, encrypted: Optional[str] = None, **kwargs: Any + self, *, additional_properties: Optional[dict[str, str]] = None, encrypted: Optional[str] = None, **kwargs: Any ) -> None: """ :keyword additional_properties: Unmatched properties from the message are deserialized to this @@ -920,7 +920,7 @@ class BlobTags(_serialization.Model): } _xml_map = {"name": "Tags"} - def __init__(self, *, blob_tag_set: List["_models.BlobTag"], **kwargs: Any) -> None: + def __init__(self, *, blob_tag_set: list["_models.BlobTag"], **kwargs: Any) -> None: """ :keyword blob_tag_set: Required. :paramtype blob_tag_set: list[~azure.storage.blob.models.BlobTag] @@ -979,8 +979,8 @@ class BlockList(_serialization.Model): def __init__( self, *, - committed_blocks: Optional[List["_models.Block"]] = None, - uncommitted_blocks: Optional[List["_models.Block"]] = None, + committed_blocks: Optional[list["_models.Block"]] = None, + uncommitted_blocks: Optional[list["_models.Block"]] = None, **kwargs: Any ) -> None: """ @@ -1015,9 +1015,9 @@ class BlockLookupList(_serialization.Model): def __init__( self, *, - committed: Optional[List[str]] = None, - uncommitted: Optional[List[str]] = None, - latest: Optional[List[str]] = None, + committed: Optional[list[str]] = None, + uncommitted: Optional[list[str]] = None, + latest: Optional[list[str]] = None, **kwargs: Any ) -> None: """ @@ -1144,7 +1144,7 @@ def __init__( properties: "_models.ContainerProperties", deleted: Optional[bool] = None, version: Optional[str] = None, - metadata: Optional[Dict[str, str]] = None, + metadata: Optional[dict[str, str]] = None, **kwargs: Any ) -> None: """ @@ -1601,7 +1601,7 @@ def __init__( *, service_endpoint: str, where: str, - blobs: List["_models.FilterBlobItem"], + blobs: list["_models.FilterBlobItem"], next_marker: Optional[str] = None, **kwargs: Any ) -> None: @@ -1944,7 +1944,7 @@ def __init__( self, *, service_endpoint: str, - container_items: List["_models.ContainerItem"], + container_items: list["_models.ContainerItem"], prefix: Optional[str] = None, marker: Optional[str] = None, max_results: Optional[int] = None, @@ -2175,8 +2175,8 @@ class PageList(_serialization.Model): def __init__( self, *, - page_range: Optional[List["_models.PageRange"]] = None, - clear_range: Optional[List["_models.ClearRange"]] = None, + page_range: Optional[list["_models.PageRange"]] = None, + clear_range: Optional[list["_models.ClearRange"]] = None, next_marker: Optional[str] = None, **kwargs: Any ) -> None: @@ -2706,7 +2706,7 @@ def __init__( logging: Optional["_models.Logging"] = None, hour_metrics: Optional["_models.Metrics"] = None, minute_metrics: Optional["_models.Metrics"] = None, - cors: Optional[List["_models.CorsRule"]] = None, + cors: Optional[list["_models.CorsRule"]] = None, default_service_version: Optional[str] = None, delete_retention_policy: Optional["_models.RetentionPolicy"] = None, static_website: Optional["_models.StaticWebsite"] = None, diff --git a/sdk/storage/azure-storage-blob/azure/storage/blob/_generated/operations/_append_blob_operations.py b/sdk/storage/azure-storage-blob/azure/storage/blob/_generated/operations/_append_blob_operations.py index 6ef6d09c7b99..80a750aa5c9a 100644 --- a/sdk/storage/azure-storage-blob/azure/storage/blob/_generated/operations/_append_blob_operations.py +++ b/sdk/storage/azure-storage-blob/azure/storage/blob/_generated/operations/_append_blob_operations.py @@ -8,7 +8,7 @@ # -------------------------------------------------------------------------- from collections.abc import MutableMapping import datetime -from typing import Any, Callable, Dict, IO, Literal, Optional, TypeVar, Union +from typing import Any, Callable, IO, Literal, Optional, TypeVar, Union from azure.core import PipelineClient from azure.core.exceptions import ( @@ -29,7 +29,7 @@ from .._utils.serialization import Deserializer, Serializer T = TypeVar("T") -ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]] +ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, dict[str, Any]], Any]] _SERIALIZER = Serializer() _SERIALIZER.client_side_validation = False @@ -45,7 +45,7 @@ def build_create_request( blob_content_language: Optional[str] = None, blob_content_md5: Optional[bytes] = None, blob_cache_control: Optional[str] = None, - metadata: Optional[Dict[str, str]] = None, + metadata: Optional[dict[str, str]] = None, lease_id: Optional[str] = None, blob_content_disposition: Optional[str] = None, encryption_key: Optional[str] = None, @@ -68,7 +68,7 @@ def build_create_request( _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) blob_type: Literal["AppendBlob"] = kwargs.pop("blob_type", _headers.pop("x-ms-blob-type", "AppendBlob")) - version: Literal["2026-02-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-02-06")) + version: Literal["2026-04-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-04-06")) accept = _headers.pop("Accept", "application/xml") # Construct URL @@ -178,7 +178,7 @@ def build_append_block_request( comp: Literal["appendblock"] = kwargs.pop("comp", _params.pop("comp", "appendblock")) content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - version: Literal["2026-02-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-02-06")) + version: Literal["2026-04-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-04-06")) accept = _headers.pop("Accept", "application/xml") # Construct URL @@ -281,7 +281,7 @@ def build_append_block_from_url_request( _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) comp: Literal["appendblock"] = kwargs.pop("comp", _params.pop("comp", "appendblock")) - version: Literal["2026-02-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-02-06")) + version: Literal["2026-04-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-04-06")) accept = _headers.pop("Accept", "application/xml") # Construct URL @@ -381,7 +381,7 @@ def build_seal_request( _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) comp: Literal["seal"] = kwargs.pop("comp", _params.pop("comp", "seal")) - version: Literal["2026-02-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-02-06")) + version: Literal["2026-04-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-04-06")) accept = _headers.pop("Accept", "application/xml") # Construct URL @@ -442,7 +442,7 @@ def create( # pylint: disable=inconsistent-return-statements self, content_length: int, timeout: Optional[int] = None, - metadata: Optional[Dict[str, str]] = None, + metadata: Optional[dict[str, str]] = None, request_id_parameter: Optional[str] = None, blob_tags_string: Optional[str] = None, immutability_policy_expiry: Optional[datetime.datetime] = None, @@ -595,7 +595,10 @@ def create( # pylint: disable=inconsistent-return-statements if response.status_code not in [201]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -770,7 +773,10 @@ def append_block( # pylint: disable=inconsistent-return-statements if response.status_code not in [201]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -978,7 +984,10 @@ def append_block_from_url( # pylint: disable=inconsistent-return-statements if response.status_code not in [201]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -1099,7 +1108,10 @@ def seal( # pylint: disable=inconsistent-return-statements if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} diff --git a/sdk/storage/azure-storage-blob/azure/storage/blob/_generated/operations/_blob_operations.py b/sdk/storage/azure-storage-blob/azure/storage/blob/_generated/operations/_blob_operations.py index 8a0929025129..03db2d8d1d8f 100644 --- a/sdk/storage/azure-storage-blob/azure/storage/blob/_generated/operations/_blob_operations.py +++ b/sdk/storage/azure-storage-blob/azure/storage/blob/_generated/operations/_blob_operations.py @@ -8,7 +8,7 @@ # -------------------------------------------------------------------------- from collections.abc import MutableMapping import datetime -from typing import Any, Callable, Dict, Iterator, Literal, Optional, TypeVar, Union +from typing import Any, Callable, Iterator, Literal, Optional, TypeVar, Union from azure.core import PipelineClient from azure.core.exceptions import ( @@ -31,7 +31,7 @@ from .._utils.serialization import Deserializer, Serializer T = TypeVar("T") -ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]] +ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, dict[str, Any]], Any]] _SERIALIZER = Serializer() _SERIALIZER.client_side_validation = False @@ -62,7 +62,7 @@ def build_download_request( _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - version: Literal["2026-02-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-02-06")) + version: Literal["2026-04-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-04-06")) accept = _headers.pop("Accept", "application/xml") # Construct URL @@ -143,7 +143,7 @@ def build_get_properties_request( _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - version: Literal["2026-02-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-02-06")) + version: Literal["2026-04-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-04-06")) accept = _headers.pop("Accept", "application/xml") # Construct URL @@ -206,12 +206,14 @@ def build_delete_request( if_tags: Optional[str] = None, request_id_parameter: Optional[str] = None, blob_delete_type: Literal["Permanent"] = "Permanent", + access_tier_if_modified_since: Optional[datetime.datetime] = None, + access_tier_if_unmodified_since: Optional[datetime.datetime] = None, **kwargs: Any ) -> HttpRequest: _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - version: Literal["2026-02-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-02-06")) + version: Literal["2026-04-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-04-06")) accept = _headers.pop("Accept", "application/xml") # Construct URL @@ -250,6 +252,14 @@ def build_delete_request( _headers["x-ms-version"] = _SERIALIZER.header("version", version, "str") if request_id_parameter is not None: _headers["x-ms-client-request-id"] = _SERIALIZER.header("request_id_parameter", request_id_parameter, "str") + if access_tier_if_modified_since is not None: + _headers["x-ms-access-tier-if-modified-since"] = _SERIALIZER.header( + "access_tier_if_modified_since", access_tier_if_modified_since, "rfc-1123" + ) + if access_tier_if_unmodified_since is not None: + _headers["x-ms-access-tier-if-unmodified-since"] = _SERIALIZER.header( + "access_tier_if_unmodified_since", access_tier_if_unmodified_since, "rfc-1123" + ) _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") return HttpRequest(method="DELETE", url=_url, params=_params, headers=_headers, **kwargs) @@ -262,7 +272,7 @@ def build_undelete_request( _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) comp: Literal["undelete"] = kwargs.pop("comp", _params.pop("comp", "undelete")) - version: Literal["2026-02-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-02-06")) + version: Literal["2026-04-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-04-06")) accept = _headers.pop("Accept", "application/xml") # Construct URL @@ -300,7 +310,7 @@ def build_set_expiry_request( _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) comp: Literal["expiry"] = kwargs.pop("comp", _params.pop("comp", "expiry")) - version: Literal["2026-02-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-02-06")) + version: Literal["2026-04-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-04-06")) accept = _headers.pop("Accept", "application/xml") # Construct URL @@ -351,7 +361,7 @@ def build_set_http_headers_request( _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) comp: Literal["properties"] = kwargs.pop("comp", _params.pop("comp", "properties")) - version: Literal["2026-02-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-02-06")) + version: Literal["2026-04-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-04-06")) accept = _headers.pop("Accept", "application/xml") # Construct URL @@ -422,7 +432,7 @@ def build_set_immutability_policy_request( _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) comp: Literal["immutabilityPolicies"] = kwargs.pop("comp", _params.pop("comp", "immutabilityPolicies")) - version: Literal["2026-02-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-02-06")) + version: Literal["2026-04-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-04-06")) accept = _headers.pop("Accept", "application/xml") # Construct URL @@ -474,7 +484,7 @@ def build_delete_immutability_policy_request( _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) comp: Literal["immutabilityPolicies"] = kwargs.pop("comp", _params.pop("comp", "immutabilityPolicies")) - version: Literal["2026-02-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-02-06")) + version: Literal["2026-04-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-04-06")) accept = _headers.pop("Accept", "application/xml") # Construct URL @@ -517,7 +527,7 @@ def build_set_legal_hold_request( _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) comp: Literal["legalhold"] = kwargs.pop("comp", _params.pop("comp", "legalhold")) - version: Literal["2026-02-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-02-06")) + version: Literal["2026-04-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-04-06")) accept = _headers.pop("Accept", "application/xml") # Construct URL @@ -551,7 +561,7 @@ def build_set_metadata_request( url: str, *, timeout: Optional[int] = None, - metadata: Optional[Dict[str, str]] = None, + metadata: Optional[dict[str, str]] = None, lease_id: Optional[str] = None, encryption_key: Optional[str] = None, encryption_key_sha256: Optional[str] = None, @@ -569,7 +579,7 @@ def build_set_metadata_request( _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) comp: Literal["metadata"] = kwargs.pop("comp", _params.pop("comp", "metadata")) - version: Literal["2026-02-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-02-06")) + version: Literal["2026-04-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-04-06")) accept = _headers.pop("Accept", "application/xml") # Construct URL @@ -637,7 +647,7 @@ def build_acquire_lease_request( comp: Literal["lease"] = kwargs.pop("comp", _params.pop("comp", "lease")) action: Literal["acquire"] = kwargs.pop("action", _headers.pop("x-ms-lease-action", "acquire")) - version: Literal["2026-02-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-02-06")) + version: Literal["2026-04-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-04-06")) accept = _headers.pop("Accept", "application/xml") # Construct URL @@ -695,7 +705,7 @@ def build_release_lease_request( comp: Literal["lease"] = kwargs.pop("comp", _params.pop("comp", "lease")) action: Literal["release"] = kwargs.pop("action", _headers.pop("x-ms-lease-action", "release")) - version: Literal["2026-02-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-02-06")) + version: Literal["2026-04-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-04-06")) accept = _headers.pop("Accept", "application/xml") # Construct URL @@ -750,7 +760,7 @@ def build_renew_lease_request( comp: Literal["lease"] = kwargs.pop("comp", _params.pop("comp", "lease")) action: Literal["renew"] = kwargs.pop("action", _headers.pop("x-ms-lease-action", "renew")) - version: Literal["2026-02-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-02-06")) + version: Literal["2026-04-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-04-06")) accept = _headers.pop("Accept", "application/xml") # Construct URL @@ -806,7 +816,7 @@ def build_change_lease_request( comp: Literal["lease"] = kwargs.pop("comp", _params.pop("comp", "lease")) action: Literal["change"] = kwargs.pop("action", _headers.pop("x-ms-lease-action", "change")) - version: Literal["2026-02-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-02-06")) + version: Literal["2026-04-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-04-06")) accept = _headers.pop("Accept", "application/xml") # Construct URL @@ -862,7 +872,7 @@ def build_break_lease_request( comp: Literal["lease"] = kwargs.pop("comp", _params.pop("comp", "lease")) action: Literal["break"] = kwargs.pop("action", _headers.pop("x-ms-lease-action", "break")) - version: Literal["2026-02-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-02-06")) + version: Literal["2026-04-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-04-06")) accept = _headers.pop("Accept", "application/xml") # Construct URL @@ -904,7 +914,7 @@ def build_create_snapshot_request( url: str, *, timeout: Optional[int] = None, - metadata: Optional[Dict[str, str]] = None, + metadata: Optional[dict[str, str]] = None, encryption_key: Optional[str] = None, encryption_key_sha256: Optional[str] = None, encryption_algorithm: Optional[Union[str, _models.EncryptionAlgorithmType]] = None, @@ -922,7 +932,7 @@ def build_create_snapshot_request( _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) comp: Literal["snapshot"] = kwargs.pop("comp", _params.pop("comp", "snapshot")) - version: Literal["2026-02-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-02-06")) + version: Literal["2026-04-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-04-06")) accept = _headers.pop("Accept", "application/xml") # Construct URL @@ -976,7 +986,7 @@ def build_start_copy_from_url_request( *, copy_source: str, timeout: Optional[int] = None, - metadata: Optional[Dict[str, str]] = None, + metadata: Optional[dict[str, str]] = None, tier: Optional[Union[str, _models.AccessTierOptional]] = None, rehydrate_priority: Optional[Union[str, _models.RehydratePriority]] = None, source_if_modified_since: Optional[datetime.datetime] = None, @@ -1001,7 +1011,7 @@ def build_start_copy_from_url_request( _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - version: Literal["2026-02-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-02-06")) + version: Literal["2026-04-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-04-06")) accept = _headers.pop("Accept", "application/xml") # Construct URL @@ -1077,7 +1087,7 @@ def build_copy_from_url_request( *, copy_source: str, timeout: Optional[int] = None, - metadata: Optional[Dict[str, str]] = None, + metadata: Optional[dict[str, str]] = None, tier: Optional[Union[str, _models.AccessTierOptional]] = None, source_if_modified_since: Optional[datetime.datetime] = None, source_if_unmodified_since: Optional[datetime.datetime] = None, @@ -1105,7 +1115,7 @@ def build_copy_from_url_request( _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) x_ms_requires_sync: Literal["true"] = kwargs.pop("x_ms_requires_sync", _headers.pop("x-ms-requires-sync", "true")) - version: Literal["2026-02-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-02-06")) + version: Literal["2026-04-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-04-06")) accept = _headers.pop("Accept", "application/xml") # Construct URL @@ -1199,7 +1209,7 @@ def build_abort_copy_from_url_request( copy_action_abort_constant: Literal["abort"] = kwargs.pop( "copy_action_abort_constant", _headers.pop("x-ms-copy-action", "abort") ) - version: Literal["2026-02-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-02-06")) + version: Literal["2026-04-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-04-06")) accept = _headers.pop("Accept", "application/xml") # Construct URL @@ -1245,7 +1255,7 @@ def build_set_tier_request( _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) comp: Literal["tier"] = kwargs.pop("comp", _params.pop("comp", "tier")) - version: Literal["2026-02-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-02-06")) + version: Literal["2026-04-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-04-06")) accept = _headers.pop("Accept", "application/xml") # Construct URL @@ -1289,7 +1299,7 @@ def build_get_account_info_request( restype: Literal["account"] = kwargs.pop("restype", _params.pop("restype", "account")) comp: Literal["properties"] = kwargs.pop("comp", _params.pop("comp", "properties")) - version: Literal["2026-02-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-02-06")) + version: Literal["2026-04-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-04-06")) accept = _headers.pop("Accept", "application/xml") # Construct URL @@ -1338,7 +1348,7 @@ def build_query_request( comp: Literal["query"] = kwargs.pop("comp", _params.pop("comp", "query")) content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - version: Literal["2026-02-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-02-06")) + version: Literal["2026-04-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-04-06")) accept = _headers.pop("Accept", "application/xml") # Construct URL @@ -1406,7 +1416,7 @@ def build_get_tags_request( _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) comp: Literal["tags"] = kwargs.pop("comp", _params.pop("comp", "tags")) - version: Literal["2026-02-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-02-06")) + version: Literal["2026-04-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-04-06")) accept = _headers.pop("Accept", "application/xml") # Construct URL @@ -1471,7 +1481,7 @@ def build_set_tags_request( comp: Literal["tags"] = kwargs.pop("comp", _params.pop("comp", "tags")) content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - version: Literal["2026-02-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-02-06")) + version: Literal["2026-04-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-04-06")) accept = _headers.pop("Accept", "application/xml") # Construct URL @@ -1676,7 +1686,10 @@ def download( except (StreamConsumedError, StreamClosedError): pass map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -1969,7 +1982,10 @@ def get_properties( # pylint: disable=inconsistent-return-statements if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -2071,6 +2087,8 @@ def delete( # pylint: disable=inconsistent-return-statements delete_snapshots: Optional[Union[str, _models.DeleteSnapshotsOptionType]] = None, request_id_parameter: Optional[str] = None, blob_delete_type: Literal["Permanent"] = "Permanent", + access_tier_if_modified_since: Optional[datetime.datetime] = None, + access_tier_if_unmodified_since: Optional[datetime.datetime] = None, lease_access_conditions: Optional[_models.LeaseAccessConditions] = None, modified_access_conditions: Optional[_models.ModifiedAccessConditions] = None, **kwargs: Any @@ -2116,6 +2134,12 @@ def delete( # pylint: disable=inconsistent-return-statements permanently delete a blob if blob soft delete is enabled. Known values are "Permanent" and None. Default value is "Permanent". :type blob_delete_type: str + :param access_tier_if_modified_since: Specify this header value to operate only on a blob if + the access-tier has been modified since the specified date/time. Default value is None. + :type access_tier_if_modified_since: ~datetime.datetime + :param access_tier_if_unmodified_since: Specify this header value to operate only on a blob if + the access-tier has not been modified since the specified date/time. Default value is None. + :type access_tier_if_unmodified_since: ~datetime.datetime :param lease_access_conditions: Parameter group. Default value is None. :type lease_access_conditions: ~azure.storage.blob.models.LeaseAccessConditions :param modified_access_conditions: Parameter group. Default value is None. @@ -2166,6 +2190,8 @@ def delete( # pylint: disable=inconsistent-return-statements if_tags=_if_tags, request_id_parameter=request_id_parameter, blob_delete_type=blob_delete_type, + access_tier_if_modified_since=access_tier_if_modified_since, + access_tier_if_unmodified_since=access_tier_if_unmodified_since, version=self._config.version, headers=_headers, params=_params, @@ -2181,7 +2207,10 @@ def delete( # pylint: disable=inconsistent-return-statements if response.status_code not in [202]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -2248,7 +2277,10 @@ def undelete( # pylint: disable=inconsistent-return-statements if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -2327,7 +2359,10 @@ def set_expiry( # pylint: disable=inconsistent-return-statements if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -2448,7 +2483,10 @@ def set_http_headers( # pylint: disable=inconsistent-return-statements if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -2555,7 +2593,10 @@ def set_immutability_policy( # pylint: disable=inconsistent-return-statements if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -2645,7 +2686,10 @@ def delete_immutability_policy( # pylint: disable=inconsistent-return-statement if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -2733,7 +2777,10 @@ def set_legal_hold( # pylint: disable=inconsistent-return-statements if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -2752,7 +2799,7 @@ def set_legal_hold( # pylint: disable=inconsistent-return-statements def set_metadata( # pylint: disable=inconsistent-return-statements self, timeout: Optional[int] = None, - metadata: Optional[Dict[str, str]] = None, + metadata: Optional[dict[str, str]] = None, request_id_parameter: Optional[str] = None, lease_access_conditions: Optional[_models.LeaseAccessConditions] = None, cpk_info: Optional[_models.CpkInfo] = None, @@ -2862,7 +2909,10 @@ def set_metadata( # pylint: disable=inconsistent-return-statements if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -2979,7 +3029,10 @@ def acquire_lease( # pylint: disable=inconsistent-return-statements if response.status_code not in [201]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -3079,7 +3132,10 @@ def release_lease( # pylint: disable=inconsistent-return-statements if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -3178,7 +3234,10 @@ def renew_lease( # pylint: disable=inconsistent-return-statements if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -3284,7 +3343,10 @@ def change_lease( # pylint: disable=inconsistent-return-statements if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -3390,7 +3452,10 @@ def break_lease( # pylint: disable=inconsistent-return-statements if response.status_code not in [202]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -3411,7 +3476,7 @@ def break_lease( # pylint: disable=inconsistent-return-statements def create_snapshot( # pylint: disable=inconsistent-return-statements self, timeout: Optional[int] = None, - metadata: Optional[Dict[str, str]] = None, + metadata: Optional[dict[str, str]] = None, request_id_parameter: Optional[str] = None, cpk_info: Optional[_models.CpkInfo] = None, cpk_scope_info: Optional[_models.CpkScopeInfo] = None, @@ -3520,7 +3585,10 @@ def create_snapshot( # pylint: disable=inconsistent-return-statements if response.status_code not in [201]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -3546,7 +3614,7 @@ def start_copy_from_url( # pylint: disable=inconsistent-return-statements self, copy_source: str, timeout: Optional[int] = None, - metadata: Optional[Dict[str, str]] = None, + metadata: Optional[dict[str, str]] = None, tier: Optional[Union[str, _models.AccessTierOptional]] = None, rehydrate_priority: Optional[Union[str, _models.RehydratePriority]] = None, request_id_parameter: Optional[str] = None, @@ -3694,7 +3762,10 @@ def start_copy_from_url( # pylint: disable=inconsistent-return-statements if response.status_code not in [202]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -3718,7 +3789,7 @@ def copy_from_url( # pylint: disable=inconsistent-return-statements self, copy_source: str, timeout: Optional[int] = None, - metadata: Optional[Dict[str, str]] = None, + metadata: Optional[dict[str, str]] = None, tier: Optional[Union[str, _models.AccessTierOptional]] = None, request_id_parameter: Optional[str] = None, source_content_md5: Optional[bytes] = None, @@ -3885,7 +3956,10 @@ def copy_from_url( # pylint: disable=inconsistent-return-statements if response.status_code not in [202]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -3985,7 +4059,10 @@ def abort_copy_from_url( # pylint: disable=inconsistent-return-statements if response.status_code not in [204]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -4099,7 +4176,10 @@ def set_tier( # pylint: disable=inconsistent-return-statements if response.status_code not in [200, 202]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -4167,7 +4247,10 @@ def get_account_info( # pylint: disable=inconsistent-return-statements if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -4238,7 +4321,8 @@ def query( _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) comp: Literal["query"] = kwargs.pop("comp", _params.pop("comp", "query")) - content_type: str = kwargs.pop("content_type", _headers.pop("Content-Type", "application/xml")) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", "application/xml")) + content_type = content_type if query_request else None cls: ClsType[Iterator[bytes]] = kwargs.pop("cls", None) _lease_id = None @@ -4304,7 +4388,10 @@ def query( except (StreamConsumedError, StreamClosedError): pass map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -4535,7 +4622,10 @@ def get_tags( if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -4612,7 +4702,8 @@ def set_tags( # pylint: disable=inconsistent-return-statements _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) comp: Literal["tags"] = kwargs.pop("comp", _params.pop("comp", "tags")) - content_type: str = kwargs.pop("content_type", _headers.pop("Content-Type", "application/xml")) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", "application/xml")) + content_type = content_type if tags else None cls: ClsType[None] = kwargs.pop("cls", None) _if_tags = None @@ -4666,7 +4757,10 @@ def set_tags( # pylint: disable=inconsistent-return-statements if response.status_code not in [204]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} diff --git a/sdk/storage/azure-storage-blob/azure/storage/blob/_generated/operations/_block_blob_operations.py b/sdk/storage/azure-storage-blob/azure/storage/blob/_generated/operations/_block_blob_operations.py index 1240c714e6fd..4b27dacf08dd 100644 --- a/sdk/storage/azure-storage-blob/azure/storage/blob/_generated/operations/_block_blob_operations.py +++ b/sdk/storage/azure-storage-blob/azure/storage/blob/_generated/operations/_block_blob_operations.py @@ -8,7 +8,7 @@ # -------------------------------------------------------------------------- from collections.abc import MutableMapping import datetime -from typing import Any, Callable, Dict, IO, Literal, Optional, TypeVar, Union +from typing import Any, Callable, IO, Literal, Optional, TypeVar, Union from azure.core import PipelineClient from azure.core.exceptions import ( @@ -29,7 +29,7 @@ from .._utils.serialization import Deserializer, Serializer T = TypeVar("T") -ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]] +ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, dict[str, Any]], Any]] _SERIALIZER = Serializer() _SERIALIZER.client_side_validation = False @@ -47,7 +47,7 @@ def build_upload_request( blob_content_language: Optional[str] = None, blob_content_md5: Optional[bytes] = None, blob_cache_control: Optional[str] = None, - metadata: Optional[Dict[str, str]] = None, + metadata: Optional[dict[str, str]] = None, lease_id: Optional[str] = None, blob_content_disposition: Optional[str] = None, encryption_key: Optional[str] = None, @@ -75,7 +75,7 @@ def build_upload_request( blob_type: Literal["BlockBlob"] = kwargs.pop("blob_type", _headers.pop("x-ms-blob-type", "BlockBlob")) content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - version: Literal["2026-02-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-02-06")) + version: Literal["2026-04-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-04-06")) accept = _headers.pop("Accept", "application/xml") # Construct URL @@ -185,7 +185,7 @@ def build_put_blob_from_url_request( blob_content_language: Optional[str] = None, blob_content_md5: Optional[bytes] = None, blob_cache_control: Optional[str] = None, - metadata: Optional[Dict[str, str]] = None, + metadata: Optional[dict[str, str]] = None, lease_id: Optional[str] = None, blob_content_disposition: Optional[str] = None, encryption_key: Optional[str] = None, @@ -216,7 +216,7 @@ def build_put_blob_from_url_request( _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) blob_type: Literal["BlockBlob"] = kwargs.pop("blob_type", _headers.pop("x-ms-blob-type", "BlockBlob")) - version: Literal["2026-02-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-02-06")) + version: Literal["2026-04-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-04-06")) accept = _headers.pop("Accept", "application/xml") # Construct URL @@ -345,7 +345,7 @@ def build_stage_block_request( comp: Literal["block"] = kwargs.pop("comp", _params.pop("comp", "block")) content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - version: Literal["2026-02-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-02-06")) + version: Literal["2026-04-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-04-06")) accept = _headers.pop("Accept", "application/xml") # Construct URL @@ -428,7 +428,7 @@ def build_stage_block_from_url_request( _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) comp: Literal["block"] = kwargs.pop("comp", _params.pop("comp", "block")) - version: Literal["2026-02-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-02-06")) + version: Literal["2026-04-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-04-06")) accept = _headers.pop("Accept", "application/xml") # Construct URL @@ -506,7 +506,7 @@ def build_commit_block_list_request( blob_content_md5: Optional[bytes] = None, transactional_content_md5: Optional[bytes] = None, transactional_content_crc64: Optional[bytes] = None, - metadata: Optional[Dict[str, str]] = None, + metadata: Optional[dict[str, str]] = None, lease_id: Optional[str] = None, blob_content_disposition: Optional[str] = None, encryption_key: Optional[str] = None, @@ -531,7 +531,7 @@ def build_commit_block_list_request( comp: Literal["blocklist"] = kwargs.pop("comp", _params.pop("comp", "blocklist")) content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - version: Literal["2026-02-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-02-06")) + version: Literal["2026-04-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-04-06")) accept = _headers.pop("Accept", "application/xml") # Construct URL @@ -637,7 +637,7 @@ def build_get_block_list_request( _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) comp: Literal["blocklist"] = kwargs.pop("comp", _params.pop("comp", "blocklist")) - version: Literal["2026-02-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-02-06")) + version: Literal["2026-04-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-04-06")) accept = _headers.pop("Accept", "application/xml") # Construct URL @@ -695,7 +695,7 @@ def upload( # pylint: disable=inconsistent-return-statements body: IO[bytes], timeout: Optional[int] = None, transactional_content_md5: Optional[bytes] = None, - metadata: Optional[Dict[str, str]] = None, + metadata: Optional[dict[str, str]] = None, tier: Optional[Union[str, _models.AccessTierOptional]] = None, request_id_parameter: Optional[str] = None, blob_tags_string: Optional[str] = None, @@ -884,7 +884,10 @@ def upload( # pylint: disable=inconsistent-return-statements if response.status_code not in [201]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -921,7 +924,7 @@ def put_blob_from_url( # pylint: disable=inconsistent-return-statements copy_source: str, timeout: Optional[int] = None, transactional_content_md5: Optional[bytes] = None, - metadata: Optional[Dict[str, str]] = None, + metadata: Optional[dict[str, str]] = None, tier: Optional[Union[str, _models.AccessTierOptional]] = None, request_id_parameter: Optional[str] = None, source_content_md5: Optional[bytes] = None, @@ -1125,7 +1128,10 @@ def put_blob_from_url( # pylint: disable=inconsistent-return-statements if response.status_code not in [201]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -1274,7 +1280,10 @@ def stage_block( # pylint: disable=inconsistent-return-statements if response.status_code not in [201]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -1443,7 +1452,10 @@ def stage_block_from_url( # pylint: disable=inconsistent-return-statements if response.status_code not in [201]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -1477,7 +1489,7 @@ def commit_block_list( # pylint: disable=inconsistent-return-statements timeout: Optional[int] = None, transactional_content_md5: Optional[bytes] = None, transactional_content_crc64: Optional[bytes] = None, - metadata: Optional[Dict[str, str]] = None, + metadata: Optional[dict[str, str]] = None, tier: Optional[Union[str, _models.AccessTierOptional]] = None, request_id_parameter: Optional[str] = None, blob_tags_string: Optional[str] = None, @@ -1653,7 +1665,10 @@ def commit_block_list( # pylint: disable=inconsistent-return-statements if response.status_code not in [201]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -1769,7 +1784,10 @@ def get_block_list( if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} diff --git a/sdk/storage/azure-storage-blob/azure/storage/blob/_generated/operations/_container_operations.py b/sdk/storage/azure-storage-blob/azure/storage/blob/_generated/operations/_container_operations.py index bef5d9a9caa6..5b4e6875a9a6 100644 --- a/sdk/storage/azure-storage-blob/azure/storage/blob/_generated/operations/_container_operations.py +++ b/sdk/storage/azure-storage-blob/azure/storage/blob/_generated/operations/_container_operations.py @@ -8,7 +8,7 @@ # -------------------------------------------------------------------------- from collections.abc import MutableMapping import datetime -from typing import Any, Callable, Dict, IO, Iterator, List, Literal, Optional, TypeVar, Union +from typing import Any, Callable, IO, Iterator, Literal, Optional, TypeVar, Union from azure.core import PipelineClient from azure.core.exceptions import ( @@ -31,7 +31,7 @@ from .._utils.serialization import Deserializer, Serializer T = TypeVar("T") -ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]] +ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, dict[str, Any]], Any]] _SERIALIZER = Serializer() _SERIALIZER.client_side_validation = False @@ -41,7 +41,7 @@ def build_create_request( url: str, *, timeout: Optional[int] = None, - metadata: Optional[Dict[str, str]] = None, + metadata: Optional[dict[str, str]] = None, access: Optional[Union[str, _models.PublicAccessType]] = None, request_id_parameter: Optional[str] = None, default_encryption_scope: Optional[str] = None, @@ -52,7 +52,7 @@ def build_create_request( _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) restype: Literal["container"] = kwargs.pop("restype", _params.pop("restype", "container")) - version: Literal["2026-02-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-02-06")) + version: Literal["2026-04-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-04-06")) accept = _headers.pop("Accept", "application/xml") # Construct URL @@ -101,7 +101,7 @@ def build_get_properties_request( _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) restype: Literal["container"] = kwargs.pop("restype", _params.pop("restype", "container")) - version: Literal["2026-02-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-02-06")) + version: Literal["2026-04-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-04-06")) accept = _headers.pop("Accept", "application/xml") # Construct URL @@ -142,7 +142,7 @@ def build_delete_request( _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) restype: Literal["container"] = kwargs.pop("restype", _params.pop("restype", "container")) - version: Literal["2026-02-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-02-06")) + version: Literal["2026-04-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-04-06")) accept = _headers.pop("Accept", "application/xml") # Construct URL @@ -178,7 +178,7 @@ def build_set_metadata_request( *, timeout: Optional[int] = None, lease_id: Optional[str] = None, - metadata: Optional[Dict[str, str]] = None, + metadata: Optional[dict[str, str]] = None, if_modified_since: Optional[datetime.datetime] = None, request_id_parameter: Optional[str] = None, **kwargs: Any @@ -188,7 +188,7 @@ def build_set_metadata_request( restype: Literal["container"] = kwargs.pop("restype", _params.pop("restype", "container")) comp: Literal["metadata"] = kwargs.pop("comp", _params.pop("comp", "metadata")) - version: Literal["2026-02-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-02-06")) + version: Literal["2026-04-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-04-06")) accept = _headers.pop("Accept", "application/xml") # Construct URL @@ -233,7 +233,7 @@ def build_get_access_policy_request( restype: Literal["container"] = kwargs.pop("restype", _params.pop("restype", "container")) comp: Literal["acl"] = kwargs.pop("comp", _params.pop("comp", "acl")) - version: Literal["2026-02-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-02-06")) + version: Literal["2026-04-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-04-06")) accept = _headers.pop("Accept", "application/xml") # Construct URL @@ -279,7 +279,7 @@ def build_set_access_policy_request( restype: Literal["container"] = kwargs.pop("restype", _params.pop("restype", "container")) comp: Literal["acl"] = kwargs.pop("comp", _params.pop("comp", "acl")) content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - version: Literal["2026-02-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-02-06")) + version: Literal["2026-04-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-04-06")) accept = _headers.pop("Accept", "application/xml") # Construct URL @@ -329,7 +329,7 @@ def build_restore_request( restype: Literal["container"] = kwargs.pop("restype", _params.pop("restype", "container")) comp: Literal["undelete"] = kwargs.pop("comp", _params.pop("comp", "undelete")) - version: Literal["2026-02-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-02-06")) + version: Literal["2026-04-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-04-06")) accept = _headers.pop("Accept", "application/xml") # Construct URL @@ -377,7 +377,7 @@ def build_rename_request( restype: Literal["container"] = kwargs.pop("restype", _params.pop("restype", "container")) comp: Literal["rename"] = kwargs.pop("comp", _params.pop("comp", "rename")) - version: Literal["2026-02-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-02-06")) + version: Literal["2026-04-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-04-06")) accept = _headers.pop("Accept", "application/xml") # Construct URL @@ -421,7 +421,7 @@ def build_submit_batch_request( restype: Literal["container"] = kwargs.pop("restype", _params.pop("restype", "container")) comp: Literal["batch"] = kwargs.pop("comp", _params.pop("comp", "batch")) multipart_content_type: Optional[str] = kwargs.pop("multipart_content_type", _headers.pop("Content-Type", None)) - version: Literal["2026-02-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-02-06")) + version: Literal["2026-04-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-04-06")) accept = _headers.pop("Accept", "application/xml") # Construct URL @@ -458,7 +458,7 @@ def build_filter_blobs_request( where: Optional[str] = None, marker: Optional[str] = None, maxresults: Optional[int] = None, - include: Optional[List[Union[str, _models.FilterBlobsIncludeItem]]] = None, + include: Optional[list[Union[str, _models.FilterBlobsIncludeItem]]] = None, **kwargs: Any ) -> HttpRequest: _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) @@ -466,7 +466,7 @@ def build_filter_blobs_request( restype: Literal["container"] = kwargs.pop("restype", _params.pop("restype", "container")) comp: Literal["blobs"] = kwargs.pop("comp", _params.pop("comp", "blobs")) - version: Literal["2026-02-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-02-06")) + version: Literal["2026-04-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-04-06")) accept = _headers.pop("Accept", "application/xml") # Construct URL @@ -517,7 +517,7 @@ def build_acquire_lease_request( comp: Literal["lease"] = kwargs.pop("comp", _params.pop("comp", "lease")) restype: Literal["container"] = kwargs.pop("restype", _params.pop("restype", "container")) action: Literal["acquire"] = kwargs.pop("action", _headers.pop("x-ms-lease-action", "acquire")) - version: Literal["2026-02-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-02-06")) + version: Literal["2026-04-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-04-06")) accept = _headers.pop("Accept", "application/xml") # Construct URL @@ -568,7 +568,7 @@ def build_release_lease_request( comp: Literal["lease"] = kwargs.pop("comp", _params.pop("comp", "lease")) restype: Literal["container"] = kwargs.pop("restype", _params.pop("restype", "container")) action: Literal["release"] = kwargs.pop("action", _headers.pop("x-ms-lease-action", "release")) - version: Literal["2026-02-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-02-06")) + version: Literal["2026-04-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-04-06")) accept = _headers.pop("Accept", "application/xml") # Construct URL @@ -616,7 +616,7 @@ def build_renew_lease_request( comp: Literal["lease"] = kwargs.pop("comp", _params.pop("comp", "lease")) restype: Literal["container"] = kwargs.pop("restype", _params.pop("restype", "container")) action: Literal["renew"] = kwargs.pop("action", _headers.pop("x-ms-lease-action", "renew")) - version: Literal["2026-02-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-02-06")) + version: Literal["2026-04-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-04-06")) accept = _headers.pop("Accept", "application/xml") # Construct URL @@ -664,7 +664,7 @@ def build_break_lease_request( comp: Literal["lease"] = kwargs.pop("comp", _params.pop("comp", "lease")) restype: Literal["container"] = kwargs.pop("restype", _params.pop("restype", "container")) action: Literal["break"] = kwargs.pop("action", _headers.pop("x-ms-lease-action", "break")) - version: Literal["2026-02-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-02-06")) + version: Literal["2026-04-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-04-06")) accept = _headers.pop("Accept", "application/xml") # Construct URL @@ -714,7 +714,7 @@ def build_change_lease_request( comp: Literal["lease"] = kwargs.pop("comp", _params.pop("comp", "lease")) restype: Literal["container"] = kwargs.pop("restype", _params.pop("restype", "container")) action: Literal["change"] = kwargs.pop("action", _headers.pop("x-ms-lease-action", "change")) - version: Literal["2026-02-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-02-06")) + version: Literal["2026-04-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-04-06")) accept = _headers.pop("Accept", "application/xml") # Construct URL @@ -753,7 +753,7 @@ def build_list_blob_flat_segment_request( prefix: Optional[str] = None, marker: Optional[str] = None, maxresults: Optional[int] = None, - include: Optional[List[Union[str, _models.ListBlobsIncludeItem]]] = None, + include: Optional[list[Union[str, _models.ListBlobsIncludeItem]]] = None, start_from: Optional[str] = None, timeout: Optional[int] = None, request_id_parameter: Optional[str] = None, @@ -764,7 +764,7 @@ def build_list_blob_flat_segment_request( restype: Literal["container"] = kwargs.pop("restype", _params.pop("restype", "container")) comp: Literal["list"] = kwargs.pop("comp", _params.pop("comp", "list")) - version: Literal["2026-02-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-02-06")) + version: Literal["2026-04-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-04-06")) accept = _headers.pop("Accept", "application/xml") # Construct URL @@ -807,7 +807,7 @@ def build_list_blob_hierarchy_segment_request( # pylint: disable=name-too-long prefix: Optional[str] = None, marker: Optional[str] = None, maxresults: Optional[int] = None, - include: Optional[List[Union[str, _models.ListBlobsIncludeItem]]] = None, + include: Optional[list[Union[str, _models.ListBlobsIncludeItem]]] = None, start_from: Optional[str] = None, timeout: Optional[int] = None, request_id_parameter: Optional[str] = None, @@ -818,7 +818,7 @@ def build_list_blob_hierarchy_segment_request( # pylint: disable=name-too-long restype: Literal["container"] = kwargs.pop("restype", _params.pop("restype", "container")) comp: Literal["list"] = kwargs.pop("comp", _params.pop("comp", "list")) - version: Literal["2026-02-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-02-06")) + version: Literal["2026-04-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-04-06")) accept = _headers.pop("Accept", "application/xml") # Construct URL @@ -863,7 +863,7 @@ def build_get_account_info_request( restype: Literal["account"] = kwargs.pop("restype", _params.pop("restype", "account")) comp: Literal["properties"] = kwargs.pop("comp", _params.pop("comp", "properties")) - version: Literal["2026-02-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-02-06")) + version: Literal["2026-04-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-04-06")) accept = _headers.pop("Accept", "application/xml") # Construct URL @@ -912,7 +912,7 @@ def __init__(self, *args, **kwargs) -> None: def create( # pylint: disable=inconsistent-return-statements self, timeout: Optional[int] = None, - metadata: Optional[Dict[str, str]] = None, + metadata: Optional[dict[str, str]] = None, access: Optional[Union[str, _models.PublicAccessType]] = None, request_id_parameter: Optional[str] = None, container_cpk_scope_info: Optional[_models.ContainerCpkScopeInfo] = None, @@ -991,7 +991,10 @@ def create( # pylint: disable=inconsistent-return-statements if response.status_code not in [201]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -1072,7 +1075,10 @@ def get_properties( # pylint: disable=inconsistent-return-statements if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -1183,7 +1189,10 @@ def delete( # pylint: disable=inconsistent-return-statements if response.status_code not in [202]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -1201,7 +1210,7 @@ def delete( # pylint: disable=inconsistent-return-statements def set_metadata( # pylint: disable=inconsistent-return-statements self, timeout: Optional[int] = None, - metadata: Optional[Dict[str, str]] = None, + metadata: Optional[dict[str, str]] = None, request_id_parameter: Optional[str] = None, lease_access_conditions: Optional[_models.LeaseAccessConditions] = None, modified_access_conditions: Optional[_models.ModifiedAccessConditions] = None, @@ -1280,7 +1289,10 @@ def set_metadata( # pylint: disable=inconsistent-return-statements if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -1303,7 +1315,7 @@ def get_access_policy( request_id_parameter: Optional[str] = None, lease_access_conditions: Optional[_models.LeaseAccessConditions] = None, **kwargs: Any - ) -> List[_models.SignedIdentifier]: + ) -> list[_models.SignedIdentifier]: """gets the permissions for the specified container. The permissions indicate whether container data may be accessed publicly. @@ -1335,7 +1347,7 @@ def get_access_policy( restype: Literal["container"] = kwargs.pop("restype", _params.pop("restype", "container")) comp: Literal["acl"] = kwargs.pop("comp", _params.pop("comp", "acl")) - cls: ClsType[List[_models.SignedIdentifier]] = kwargs.pop("cls", None) + cls: ClsType[list[_models.SignedIdentifier]] = kwargs.pop("cls", None) _lease_id = None if lease_access_conditions is not None: @@ -1363,7 +1375,10 @@ def get_access_policy( if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -1394,7 +1409,7 @@ def set_access_policy( # pylint: disable=inconsistent-return-statements request_id_parameter: Optional[str] = None, lease_access_conditions: Optional[_models.LeaseAccessConditions] = None, modified_access_conditions: Optional[_models.ModifiedAccessConditions] = None, - container_acl: Optional[List[_models.SignedIdentifier]] = None, + container_acl: Optional[list[_models.SignedIdentifier]] = None, **kwargs: Any ) -> None: """sets the permissions for the specified container. The permissions indicate whether blobs in a @@ -1435,7 +1450,8 @@ def set_access_policy( # pylint: disable=inconsistent-return-statements restype: Literal["container"] = kwargs.pop("restype", _params.pop("restype", "container")) comp: Literal["acl"] = kwargs.pop("comp", _params.pop("comp", "acl")) - content_type: str = kwargs.pop("content_type", _headers.pop("Content-Type", "application/xml")) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", "application/xml")) + content_type = content_type if container_acl else None cls: ClsType[None] = kwargs.pop("cls", None) _lease_id = None @@ -1481,7 +1497,10 @@ def set_access_policy( # pylint: disable=inconsistent-return-statements if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -1565,7 +1584,10 @@ def restore( # pylint: disable=inconsistent-return-statements if response.status_code not in [201]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -1647,7 +1669,10 @@ def rename( # pylint: disable=inconsistent-return-statements if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -1738,7 +1763,10 @@ def submit_batch( except (StreamConsumedError, StreamClosedError): pass map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -1761,7 +1789,7 @@ def filter_blobs( where: Optional[str] = None, marker: Optional[str] = None, maxresults: Optional[int] = None, - include: Optional[List[Union[str, _models.FilterBlobsIncludeItem]]] = None, + include: Optional[list[Union[str, _models.FilterBlobsIncludeItem]]] = None, **kwargs: Any ) -> _models.FilterBlobSegment: """The Filter Blobs operation enables callers to list blobs in a container whose tags match a @@ -1840,7 +1868,10 @@ def filter_blobs( if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -1942,7 +1973,10 @@ def acquire_lease( # pylint: disable=inconsistent-return-statements if response.status_code not in [201]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -2035,7 +2069,10 @@ def release_lease( # pylint: disable=inconsistent-return-statements if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -2127,7 +2164,10 @@ def renew_lease( # pylint: disable=inconsistent-return-statements if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -2226,7 +2266,10 @@ def break_lease( # pylint: disable=inconsistent-return-statements if response.status_code not in [202]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -2325,7 +2368,10 @@ def change_lease( # pylint: disable=inconsistent-return-statements if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -2348,7 +2394,7 @@ def list_blob_flat_segment( prefix: Optional[str] = None, marker: Optional[str] = None, maxresults: Optional[int] = None, - include: Optional[List[Union[str, _models.ListBlobsIncludeItem]]] = None, + include: Optional[list[Union[str, _models.ListBlobsIncludeItem]]] = None, start_from: Optional[str] = None, timeout: Optional[int] = None, request_id_parameter: Optional[str] = None, @@ -2434,7 +2480,10 @@ def list_blob_flat_segment( if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -2460,7 +2509,7 @@ def list_blob_hierarchy_segment( prefix: Optional[str] = None, marker: Optional[str] = None, maxresults: Optional[int] = None, - include: Optional[List[Union[str, _models.ListBlobsIncludeItem]]] = None, + include: Optional[list[Union[str, _models.ListBlobsIncludeItem]]] = None, start_from: Optional[str] = None, timeout: Optional[int] = None, request_id_parameter: Optional[str] = None, @@ -2552,7 +2601,10 @@ def list_blob_hierarchy_segment( if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -2626,7 +2678,10 @@ def get_account_info( # pylint: disable=inconsistent-return-statements if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} diff --git a/sdk/storage/azure-storage-blob/azure/storage/blob/_generated/operations/_page_blob_operations.py b/sdk/storage/azure-storage-blob/azure/storage/blob/_generated/operations/_page_blob_operations.py index 06234aa5a9fb..d718f5914289 100644 --- a/sdk/storage/azure-storage-blob/azure/storage/blob/_generated/operations/_page_blob_operations.py +++ b/sdk/storage/azure-storage-blob/azure/storage/blob/_generated/operations/_page_blob_operations.py @@ -8,7 +8,7 @@ # -------------------------------------------------------------------------- from collections.abc import MutableMapping import datetime -from typing import Any, Callable, Dict, IO, Literal, Optional, TypeVar, Union +from typing import Any, Callable, IO, Literal, Optional, TypeVar, Union from azure.core import PipelineClient from azure.core.exceptions import ( @@ -29,7 +29,7 @@ from .._utils.serialization import Deserializer, Serializer T = TypeVar("T") -ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]] +ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, dict[str, Any]], Any]] _SERIALIZER = Serializer() _SERIALIZER.client_side_validation = False @@ -47,7 +47,7 @@ def build_create_request( blob_content_language: Optional[str] = None, blob_content_md5: Optional[bytes] = None, blob_cache_control: Optional[str] = None, - metadata: Optional[Dict[str, str]] = None, + metadata: Optional[dict[str, str]] = None, lease_id: Optional[str] = None, blob_content_disposition: Optional[str] = None, encryption_key: Optional[str] = None, @@ -71,7 +71,7 @@ def build_create_request( _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) blob_type: Literal["PageBlob"] = kwargs.pop("blob_type", _headers.pop("x-ms-blob-type", "PageBlob")) - version: Literal["2026-02-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-02-06")) + version: Literal["2026-04-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-04-06")) accept = _headers.pop("Accept", "application/xml") # Construct URL @@ -189,7 +189,7 @@ def build_upload_pages_request( comp: Literal["page"] = kwargs.pop("comp", _params.pop("comp", "page")) page_write: Literal["update"] = kwargs.pop("page_write", _headers.pop("x-ms-page-write", "update")) content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - version: Literal["2026-02-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-02-06")) + version: Literal["2026-04-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-04-06")) accept = _headers.pop("Accept", "application/xml") # Construct URL @@ -295,7 +295,7 @@ def build_clear_pages_request( comp: Literal["page"] = kwargs.pop("comp", _params.pop("comp", "page")) page_write: Literal["clear"] = kwargs.pop("page_write", _headers.pop("x-ms-page-write", "clear")) - version: Literal["2026-02-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-02-06")) + version: Literal["2026-04-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-04-06")) accept = _headers.pop("Accept", "application/xml") # Construct URL @@ -395,7 +395,7 @@ def build_upload_pages_from_url_request( comp: Literal["page"] = kwargs.pop("comp", _params.pop("comp", "page")) page_write: Literal["update"] = kwargs.pop("page_write", _headers.pop("x-ms-page-write", "update")) - version: Literal["2026-02-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-02-06")) + version: Literal["2026-04-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-04-06")) accept = _headers.pop("Accept", "application/xml") # Construct URL @@ -504,7 +504,7 @@ def build_get_page_ranges_request( _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) comp: Literal["pagelist"] = kwargs.pop("comp", _params.pop("comp", "pagelist")) - version: Literal["2026-02-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-02-06")) + version: Literal["2026-04-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-04-06")) accept = _headers.pop("Accept", "application/xml") # Construct URL @@ -572,7 +572,7 @@ def build_get_page_ranges_diff_request( _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) comp: Literal["pagelist"] = kwargs.pop("comp", _params.pop("comp", "pagelist")) - version: Literal["2026-02-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-02-06")) + version: Literal["2026-04-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-04-06")) accept = _headers.pop("Accept", "application/xml") # Construct URL @@ -643,7 +643,7 @@ def build_resize_request( _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) comp: Literal["properties"] = kwargs.pop("comp", _params.pop("comp", "properties")) - version: Literal["2026-02-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-02-06")) + version: Literal["2026-04-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-04-06")) accept = _headers.pop("Accept", "application/xml") # Construct URL @@ -710,7 +710,7 @@ def build_update_sequence_number_request( _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) comp: Literal["properties"] = kwargs.pop("comp", _params.pop("comp", "properties")) - version: Literal["2026-02-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-02-06")) + version: Literal["2026-04-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-04-06")) accept = _headers.pop("Accept", "application/xml") # Construct URL @@ -769,7 +769,7 @@ def build_copy_incremental_request( _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) comp: Literal["incrementalcopy"] = kwargs.pop("comp", _params.pop("comp", "incrementalcopy")) - version: Literal["2026-02-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-02-06")) + version: Literal["2026-04-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-04-06")) accept = _headers.pop("Accept", "application/xml") # Construct URL @@ -831,7 +831,7 @@ def create( # pylint: disable=inconsistent-return-statements blob_content_length: int, timeout: Optional[int] = None, tier: Optional[Union[str, _models.PremiumPageBlobAccessTier]] = None, - metadata: Optional[Dict[str, str]] = None, + metadata: Optional[dict[str, str]] = None, blob_sequence_number: int = 0, request_id_parameter: Optional[str] = None, blob_tags_string: Optional[str] = None, @@ -998,7 +998,10 @@ def create( # pylint: disable=inconsistent-return-statements if response.status_code not in [201]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -1182,7 +1185,10 @@ def upload_pages( # pylint: disable=inconsistent-return-statements if response.status_code not in [201]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -1346,7 +1352,10 @@ def clear_pages( # pylint: disable=inconsistent-return-statements if response.status_code not in [201]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -1545,7 +1554,10 @@ def upload_pages_from_url( # pylint: disable=inconsistent-return-statements if response.status_code not in [201]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -1688,7 +1700,10 @@ def get_page_ranges( if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -1841,7 +1856,10 @@ def get_page_ranges_diff( if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -1972,7 +1990,10 @@ def resize( # pylint: disable=inconsistent-return-statements if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -2087,7 +2108,10 @@ def update_sequence_number( # pylint: disable=inconsistent-return-statements if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -2193,7 +2217,10 @@ def copy_incremental( # pylint: disable=inconsistent-return-statements if response.status_code not in [202]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} diff --git a/sdk/storage/azure-storage-blob/azure/storage/blob/_generated/operations/_service_operations.py b/sdk/storage/azure-storage-blob/azure/storage/blob/_generated/operations/_service_operations.py index 3d3d6b14b10f..c9b170579b9f 100644 --- a/sdk/storage/azure-storage-blob/azure/storage/blob/_generated/operations/_service_operations.py +++ b/sdk/storage/azure-storage-blob/azure/storage/blob/_generated/operations/_service_operations.py @@ -7,7 +7,7 @@ # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- from collections.abc import MutableMapping -from typing import Any, Callable, Dict, IO, Iterator, List, Literal, Optional, TypeVar, Union +from typing import Any, Callable, IO, Iterator, Literal, Optional, TypeVar, Union from azure.core import PipelineClient from azure.core.exceptions import ( @@ -30,7 +30,7 @@ from .._utils.serialization import Deserializer, Serializer T = TypeVar("T") -ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]] +ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, dict[str, Any]], Any]] _SERIALIZER = Serializer() _SERIALIZER.client_side_validation = False @@ -45,7 +45,7 @@ def build_set_properties_request( restype: Literal["service"] = kwargs.pop("restype", _params.pop("restype", "service")) comp: Literal["properties"] = kwargs.pop("comp", _params.pop("comp", "properties")) content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - version: Literal["2026-02-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-02-06")) + version: Literal["2026-04-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-04-06")) accept = _headers.pop("Accept", "application/xml") # Construct URL @@ -81,7 +81,7 @@ def build_get_properties_request( restype: Literal["service"] = kwargs.pop("restype", _params.pop("restype", "service")) comp: Literal["properties"] = kwargs.pop("comp", _params.pop("comp", "properties")) - version: Literal["2026-02-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-02-06")) + version: Literal["2026-04-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-04-06")) accept = _headers.pop("Accept", "application/xml") # Construct URL @@ -115,7 +115,7 @@ def build_get_statistics_request( restype: Literal["service"] = kwargs.pop("restype", _params.pop("restype", "service")) comp: Literal["stats"] = kwargs.pop("comp", _params.pop("comp", "stats")) - version: Literal["2026-02-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-02-06")) + version: Literal["2026-04-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-04-06")) accept = _headers.pop("Accept", "application/xml") # Construct URL @@ -147,7 +147,7 @@ def build_list_containers_segment_request( prefix: Optional[str] = None, marker: Optional[str] = None, maxresults: Optional[int] = None, - include: Optional[List[Union[str, _models.ListContainersIncludeType]]] = None, + include: Optional[list[Union[str, _models.ListContainersIncludeType]]] = None, timeout: Optional[int] = None, request_id_parameter: Optional[str] = None, **kwargs: Any @@ -156,7 +156,7 @@ def build_list_containers_segment_request( _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) comp: Literal["list"] = kwargs.pop("comp", _params.pop("comp", "list")) - version: Literal["2026-02-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-02-06")) + version: Literal["2026-04-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-04-06")) accept = _headers.pop("Accept", "application/xml") # Construct URL @@ -198,7 +198,7 @@ def build_get_user_delegation_key_request( restype: Literal["service"] = kwargs.pop("restype", _params.pop("restype", "service")) comp: Literal["userdelegationkey"] = kwargs.pop("comp", _params.pop("comp", "userdelegationkey")) content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - version: Literal["2026-02-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-02-06")) + version: Literal["2026-04-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-04-06")) accept = _headers.pop("Accept", "application/xml") # Construct URL @@ -234,7 +234,7 @@ def build_get_account_info_request( restype: Literal["account"] = kwargs.pop("restype", _params.pop("restype", "account")) comp: Literal["properties"] = kwargs.pop("comp", _params.pop("comp", "properties")) - version: Literal["2026-02-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-02-06")) + version: Literal["2026-04-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-04-06")) accept = _headers.pop("Accept", "application/xml") # Construct URL @@ -274,7 +274,7 @@ def build_submit_batch_request( comp: Literal["batch"] = kwargs.pop("comp", _params.pop("comp", "batch")) multipart_content_type: Optional[str] = kwargs.pop("multipart_content_type", _headers.pop("Content-Type", None)) - version: Literal["2026-02-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-02-06")) + version: Literal["2026-04-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-04-06")) accept = _headers.pop("Accept", "application/xml") # Construct URL @@ -310,14 +310,14 @@ def build_filter_blobs_request( where: Optional[str] = None, marker: Optional[str] = None, maxresults: Optional[int] = None, - include: Optional[List[Union[str, _models.FilterBlobsIncludeItem]]] = None, + include: Optional[list[Union[str, _models.FilterBlobsIncludeItem]]] = None, **kwargs: Any ) -> HttpRequest: _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) comp: Literal["blobs"] = kwargs.pop("comp", _params.pop("comp", "blobs")) - version: Literal["2026-02-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-02-06")) + version: Literal["2026-04-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-04-06")) accept = _headers.pop("Accept", "application/xml") # Construct URL @@ -436,7 +436,10 @@ def set_properties( # pylint: disable=inconsistent-return-statements if response.status_code not in [202]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -505,7 +508,10 @@ def get_properties( if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -579,7 +585,10 @@ def get_statistics( if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -603,7 +612,7 @@ def list_containers_segment( prefix: Optional[str] = None, marker: Optional[str] = None, maxresults: Optional[int] = None, - include: Optional[List[Union[str, _models.ListContainersIncludeType]]] = None, + include: Optional[list[Union[str, _models.ListContainersIncludeType]]] = None, timeout: Optional[int] = None, request_id_parameter: Optional[str] = None, **kwargs: Any @@ -682,7 +691,10 @@ def list_containers_segment( if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -766,7 +778,10 @@ def get_user_delegation_key( if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -839,7 +854,10 @@ def get_account_info( # pylint: disable=inconsistent-return-statements if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -931,7 +949,10 @@ def submit_batch( except (StreamConsumedError, StreamClosedError): pass map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -954,7 +975,7 @@ def filter_blobs( where: Optional[str] = None, marker: Optional[str] = None, maxresults: Optional[int] = None, - include: Optional[List[Union[str, _models.FilterBlobsIncludeItem]]] = None, + include: Optional[list[Union[str, _models.FilterBlobsIncludeItem]]] = None, **kwargs: Any ) -> _models.FilterBlobSegment: """The Filter Blobs operation enables callers to list blobs across all containers whose tags match @@ -1032,7 +1053,10 @@ def filter_blobs( if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} diff --git a/sdk/storage/azure-storage-blob/azure/storage/blob/aio/_blob_client_async.py b/sdk/storage/azure-storage-blob/azure/storage/blob/aio/_blob_client_async.py index b449b26d3c2c..3c194d5b40e6 100644 --- a/sdk/storage/azure-storage-blob/azure/storage/blob/aio/_blob_client_async.py +++ b/sdk/storage/azure-storage-blob/azure/storage/blob/aio/_blob_client_async.py @@ -975,6 +975,18 @@ async def delete_blob(self, delete_snapshots: Optional[str] = None, **kwargs: An .. versionadded:: 12.4.0 + :keyword ~datetime.datetime access_tier_if_modified_since: + A DateTime value. Azure expects the date value passed in to be UTC. + If timezone is included, any non-UTC datetimes will be converted to UTC. + If a date is passed in without timezone info, it is assumed to be UTC. + Specify this header to perform the operation only if + the access-tier has been modified since the specified date/time. + :keyword ~datetime.datetime access_tier_if_unmodified_since: + A DateTime value. Azure expects the date value passed in to be UTC. + If timezone is included, any non-UTC datetimes will be converted to UTC. + If a date is passed in without timezone info, it is assumed to be UTC. + Specify this header to perform the operation only if + the access-tier has been modified since the specified date/time. :keyword int timeout: Sets the server-side timeout for the operation in seconds. For more details see https://learn.microsoft.com/rest/api/storageservices/setting-timeouts-for-blob-service-operations. @@ -997,7 +1009,8 @@ async def delete_blob(self, delete_snapshots: Optional[str] = None, **kwargs: An snapshot=self.snapshot, version_id=get_version_id(self.version_id, kwargs), delete_snapshots=delete_snapshots, - **kwargs) + **kwargs + ) try: await self._client.blob.delete(**options) except HttpResponseError as error: diff --git a/sdk/storage/azure-storage-blob/azure/storage/blob/aio/_blob_client_async.pyi b/sdk/storage/azure-storage-blob/azure/storage/blob/aio/_blob_client_async.pyi index 975740f6fb87..ec5998c19900 100644 --- a/sdk/storage/azure-storage-blob/azure/storage/blob/aio/_blob_client_async.pyi +++ b/sdk/storage/azure-storage-blob/azure/storage/blob/aio/_blob_client_async.pyi @@ -269,6 +269,8 @@ class BlobClient( # type: ignore[misc] etag: Optional[str] = None, match_condition: Optional[MatchConditions] = None, if_tags_match_condition: Optional[str] = None, + access_tier_if_modified_since: Optional[datetime] = None, + access_tier_if_unmodified_since: Optional[datetime] = None, timeout: Optional[int] = None, **kwargs: Any ) -> None: ...