Remove pypy 3.9 from azure-storage-extensions build matrix #47062
Build #20260521.4 had test failures
Details
- Failed: 132 (0.66%, 132 new, 0 recurring)
- Passed: 19,248 (96.13%)
- Other: 642 (3.21%)
- Total: 20,022
Annotations
Check failure on line 8049 in Build log
azure-pipelines / python - storage - tests
Build log #L8049
PowerShell exited with code '1'.
Check failure on line 7981 in Build log
azure-pipelines / python - storage - tests
Build log #L7981
PowerShell exited with code '1'.
Check failure on line 19 in Build log
azure-pipelines / python - storage - tests
Build log #L19
There are one or more test failures detected in result files. Detailed summary of published test results can be viewed in the Tests tab.
Check failure on line 20 in Build log
azure-pipelines / python - storage - tests
Build log #L20
There are one or more test failures detected in result files. Detailed summary of published test results can be viewed in the Tests tab.
Check failure on line 1 in test_data_lake_tags
azure-pipelines / python - storage - tests
test_data_lake_tags
azure.core.exceptions.HttpResponseError: A required feature for this operation is not enabled on the account.
RequestId:1e197c96-a01e-00c2-4466-e9e566000000
Time:2026-05-21T21:12:03.5542485Z
ErrorCode:FeatureNotEnabled
featurename:BlobIndexForHns
Content: <?xml version="1.0" encoding="utf-8"?>
<Error><Code>FeatureNotEnabled</Code><Message>A required feature for this operation is not enabled on the account.
RequestId:1e197c96-a01e-00c2-4466-e9e566000000
Time:2026-05-21T21:12:03.5542485Z</Message><FeatureName>BlobIndexForHns</FeatureName></Error>
Raw output
args = (<test_file.TestFile object at 0x107f74b10>,)
kwargs = {'__aggregate_cache_key': ('EnvironmentVariableLoader',), 'datalake_storage_account_key': <devtools_testutils.envvaria..._lake_soft_delete_account_key': <devtools_testutils.envvariable_loader.EnvironmentVariable object at 0x109d6f710>, ...}
trimmed_kwargs = {'__aggregate_cache_key': ('EnvironmentVariableLoader',), 'datalake_storage_account_key': <devtools_testutils.envvaria..._lake_soft_delete_account_key': <devtools_testutils.envvariable_loader.EnvironmentVariable object at 0x109d6f710>, ...}
def record_wrap(*args, **kwargs):
# ---- your existing trimming/early-exit logic ----
trimmed_kwargs = {k: v for k, v in kwargs.items()}
trim_kwargs_from_test_function(test_func, trimmed_kwargs)
if is_live_and_not_recording():
> return test_func(*args, **trimmed_kwargs)
../../../.venv/azure-storage-file-datalake/.venv_whl/lib/python3.11/site-packages/devtools_testutils/proxy_testcase.py:306:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
tests/test_file.py:1926: in test_data_lake_tags
file_client.set_tags(first_tags, if_modified_since=early)
../../../.venv/azure-storage-file-datalake/.venv_whl/lib/python3.11/site-packages/azure/core/tracing/decorator.py:119: in wrapper_use_tracer
return func(*args, **kwargs)
../../../.venv/azure-storage-file-datalake/.venv_whl/lib/python3.11/site-packages/azure/storage/filedatalake/_path_client.py:1021: in set_tags
return self._blob_client.set_blob_tags(tags, **kwargs)
../../../.venv/azure-storage-file-datalake/.venv_whl/lib/python3.11/site-packages/azure/core/tracing/decorator.py:119: in wrapper_use_tracer
return func(*args, **kwargs)
../../../.venv/azure-storage-file-datalake/.venv_whl/lib/python3.11/site-packages/azure/storage/blob/_blob_client.py:2406: in set_blob_tags
process_storage_error(error)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
storage_error = None
def process_storage_error(storage_error) -> NoReturn: # type: ignore [misc] # pylint:disable=too-many-statements, too-many-branches
raise_error = HttpResponseError
serialized = False
if isinstance(storage_error, AzureSigningError):
storage_error.message = (
storage_error.message
+ ". This is likely due to an invalid shared key. Please check your shared key and try again."
)
if not storage_error.response or storage_error.response.status_code in [200, 204]:
raise storage_error
# If it is one of those three then it has been serialized prior by the generated layer.
if isinstance(
storage_error,
(PartialBatchErrorException, ClientAuthenticationError, ResourceNotFoundError, ResourceExistsError),
):
serialized = True
error_code = storage_error.response.headers.get("x-ms-error-code")
error_message = storage_error.message
additional_data = {}
error_dict = {}
try:
error_body = ContentDecodePolicy.deserialize_from_http_generics(storage_error.response)
try:
if error_body is None or len(error_body) == 0:
error_body = storage_error.response.reason
except AttributeError:
error_body = ""
# If it is an XML response
if isinstance(error_body, Element):
error_dict = {child.tag.lower(): child.text for child in error_body}
# If it is a JSON response
elif isinstance(error_body, dict):
error_dict = error_body.get("error", {})
elif not error_code:
_LOGGER.warning(
"Unexpected return
... [The stack trace has been truncated as it exceeded the maximum allowed size. Please refer to the complete log available in the Test Run attachments for full details.]
Check failure on line 1 in test_data_lake_tags
azure-pipelines / python - storage - tests
test_data_lake_tags
azure.core.exceptions.HttpResponseError: A required feature for this operation is not enabled on the account.
RequestId:4ffed254-801e-0101-3366-e90231000000
Time:2026-05-21T21:12:50.8556158Z
ErrorCode:FeatureNotEnabled
featurename:BlobIndexForHns
Content: <?xml version="1.0" encoding="utf-8"?>
<Error><Code>FeatureNotEnabled</Code><Message>A required feature for this operation is not enabled on the account.
RequestId:4ffed254-801e-0101-3366-e90231000000
Time:2026-05-21T21:12:50.8556158Z</Message><FeatureName>BlobIndexForHns</FeatureName></Error>
Raw output
args = (<test_file_async.TestFileAsync object at 0x1079e89d0>,)
kwargs = {'__aggregate_cache_key': ('EnvironmentVariableLoader',), 'datalake_storage_account_key': <devtools_testutils.envvaria..._lake_soft_delete_account_key': <devtools_testutils.envvariable_loader.EnvironmentVariable object at 0x109fd7e90>, ...}
trimmed_kwargs = {'__aggregate_cache_key': ('EnvironmentVariableLoader',), 'datalake_storage_account_key': <devtools_testutils.envvaria..._lake_soft_delete_account_key': <devtools_testutils.envvariable_loader.EnvironmentVariable object at 0x109fd7e90>, ...}
async def record_wrap(*args, **kwargs):
# ---- your existing trimming/early-exit logic ----
trimmed_kwargs = {k: v for k, v in kwargs.items()}
trim_kwargs_from_test_function(test_func, trimmed_kwargs)
if is_live_and_not_recording():
> return await test_func(*args, **trimmed_kwargs)
../../../.venv/azure-storage-file-datalake/.venv_whl/lib/python3.11/site-packages/devtools_testutils/aio/proxy_testcase_async.py:107:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
tests/test_file_async.py:1824: in test_data_lake_tags
await file_client.set_tags(first_tags, if_modified_since=early)
../../../.venv/azure-storage-file-datalake/.venv_whl/lib/python3.11/site-packages/azure/core/tracing/decorator_async.py:119: in wrapper_use_tracer
return await func(*args, **kwargs)
../../../.venv/azure-storage-file-datalake/.venv_whl/lib/python3.11/site-packages/azure/storage/filedatalake/aio/_path_client_async.py:1019: in set_tags
return await self._blob_client.set_blob_tags(tags, **kwargs)
../../../.venv/azure-storage-file-datalake/.venv_whl/lib/python3.11/site-packages/azure/core/tracing/decorator_async.py:119: in wrapper_use_tracer
return await func(*args, **kwargs)
../../../.venv/azure-storage-file-datalake/.venv_whl/lib/python3.11/site-packages/azure/storage/blob/aio/_blob_client_async.py:2452: in set_blob_tags
process_storage_error(error)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
storage_error = None
def process_storage_error(storage_error) -> NoReturn: # type: ignore [misc] # pylint:disable=too-many-statements, too-many-branches
raise_error = HttpResponseError
serialized = False
if isinstance(storage_error, AzureSigningError):
storage_error.message = (
storage_error.message
+ ". This is likely due to an invalid shared key. Please check your shared key and try again."
)
if not storage_error.response or storage_error.response.status_code in [200, 204]:
raise storage_error
# If it is one of those three then it has been serialized prior by the generated layer.
if isinstance(
storage_error,
(PartialBatchErrorException, ClientAuthenticationError, ResourceNotFoundError, ResourceExistsError),
):
serialized = True
error_code = storage_error.response.headers.get("x-ms-error-code")
error_message = storage_error.message
additional_data = {}
error_dict = {}
try:
error_body = ContentDecodePolicy.deserialize_from_http_generics(storage_error.response)
try:
if error_body is None or len(error_body) == 0:
error_body = storage_error.response.reason
except AttributeError:
error_body = ""
# If it is an XML response
if isinstance(error_body, Element):
error_dict = {child.tag.lower(): child.text for child in error_body}
# If it is a JSON response
elif isinstance(error_body, dict):
error_dict = error_body.get("error", {})
... [The stack trace has been truncated as it exceeded the maximum allowed size. Please refer to the complete log available in the Test Run attachments for full details.]
Check failure on line 1 in test_list_shares_leased_share
azure-pipelines / python - storage - tests
test_list_shares_leased_share
assert None == 'infinite'
+ where None = {'status': 'unlocked', 'state': 'available', 'duration': None}.duration
+ where {'status': 'unlocked', 'state': 'available', 'duration': None} = {'name': 'listshare060b33191', 'last_modified': datetime.datetime(2026, 5, 21, 21, 14, 26, tzinfo=datetime.timezone.utc), 'etag': '"0x8DEB77DF06BB847"', 'quota': 102400, 'access_tier': 'TransactionOptimized', 'next_allowed_quota_downgrade_time': None, 'metadata': None, 'snapshot': None, 'deleted': None, 'deleted_time': None, 'version': None, 'remaining_retention_days': None, 'provisioned_egress_mbps': None, 'provisioned_ingress_mbps': None, 'provisioned_iops': None, 'provisioned_bandwidth': None, 'lease': {'status': 'unlocked', 'state': 'available', 'duration': None}, 'protocols': None, 'root_squash': None, 'enable_snapshot_virtual_directory_access': None, 'paid_bursting_enabled': None, 'paid_bursting_bandwidth_mibps': None, 'paid_bursting_iops': None, 'included_burst_iops': None, 'max_burst_credits_for_iops': None, 'next_provisioned_iops_downgrade': None, 'next_provisioned_bandwidth_downgrade': None}.lease
Raw output
args = (<test_share_async.TestStorageShareAsync object at 0x7f81ebb1c7f0>,)
kwargs = {'__aggregate_cache_key': ('EnvironmentVariableLoader',), 'premium_storage_file_account_key': <devtools_testutils.envv...ondary_storage_account_key': <devtools_testutils.envvariable_loader.EnvironmentVariable object at 0x7f81e3d131f0>, ...}
trimmed_kwargs = {'__aggregate_cache_key': ('EnvironmentVariableLoader',), 'premium_storage_file_account_key': <devtools_testutils.envv...ondary_storage_account_key': <devtools_testutils.envvariable_loader.EnvironmentVariable object at 0x7f81e3d131f0>, ...}
async def record_wrap(*args, **kwargs):
# ---- your existing trimming/early-exit logic ----
trimmed_kwargs = {k: v for k, v in kwargs.items()}
trim_kwargs_from_test_function(test_func, trimmed_kwargs)
if is_live_and_not_recording():
> return await test_func(*args, **trimmed_kwargs)
../../../.venv/azure-storage-file-share/.venv_whl/lib/python3.10/site-packages/devtools_testutils/aio/proxy_testcase_async.py:107:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <test_share_async.TestStorageShareAsync object at 0x7f81ebb1c7f0>
kwargs = {'__aggregate_cache_key': ('EnvironmentVariableLoader',), 'premium_storage_file_account_key': <devtools_testutils.envv...ondary_storage_account_key': <devtools_testutils.envvariable_loader.EnvironmentVariable object at 0x7f81e3d131f0>, ...}
storage_account_name = 'primtcf7d6009b6a54c2b'
storage_account_key = <devtools_testutils.envvariable_loader.EnvironmentVariable object at 0x7f81e3d13850>
share = <azure.storage.fileshare.aio._share_client_async.ShareClient object at 0x7f81e3fecdf0>
lease = <azure.storage.fileshare.aio._lease_async.ShareLeaseClient object at 0x7f81e3fef520>
resp = [{'name': 'listshare060b33191', 'last_modified': datetime.datetime(2026, 5, 21, 21, 14, 26, tzinfo=datetime.timezone.u...t_credits_for_iops': None, 'next_provisioned_iops_downgrade': None, 'next_provisioned_bandwidth_downgrade': None}, ...]
s = {'name': 'utshareffc33c06', 'last_modified': datetime.datetime(2026, 5, 21, 21, 8, 36, tzinfo=datetime.timezone.utc), ...x_burst_credits_for_iops': None, 'next_provisioned_iops_downgrade': None, 'next_provisioned_bandwidth_downgrade': None}
@py_assert2 = {'status': 'unlocked', 'state': 'available', 'duration': None}
@FileSharePreparer()
@recorded_by_proxy_async
async def test_list_shares_leased_share(self, **kwargs):
storage_account_name = kwargs.pop("storage_account_name")
storage_account_key = kwargs.pop("storage_account_key")
self._setup(storage_account_name, storage_account_key)
share = await self._create_share()
# Act
lease = await share.acquire_lease(lease_id='00000000-1111-2222-3333-444444444444')
resp = []
async for s in self.fsc.list_shares():
resp.append(s)
# Assert
assert resp is not None
assert len(resp) >= 1
assert resp[0] is not None
> assert resp[0].lease.duration == 'infinite'
E assert None == 'infinite'
E + where None = {'status': 'unlocked', 'state': 'available', 'duration': None}.duration
E + where {'status': 'unlocked', 'state': 'available', 'duration': None} = {'name': 'listshare060b33191', 'last_modified': datetime.datetime(2026, 5, 21, 21, 14, 26, tzinfo=datetime.timezone.utc), 'etag': '"0x8DEB77DF06BB847"', 'quota': 102400, 'access_tier': 'TransactionOptimized', 'next_allowed_quota_downgrade_time': None, 'metadata': None, 'snapshot': None, 'deleted': None, 'deleted_time': None, 'version': None, 'remaining_retention_days': None, 'provisioned_egress_mbps': None, 'provisioned_ingress_mbps': None, 'provisioned_iops': None, 'provisioned_bandwidth': None, 'lease': {'s
... [The stack trace has been truncated as it exceeded the maximum allowed size. Please refer to the complete log available in the Test Run attachments for full details.]
Check failure on line 1 in test_list_shares_with_num_results_and_marker
azure-pipelines / python - storage - tests
test_list_shares_with_num_results_and_marker
Failed: 'listshare1a88e360c' not found in ['{\'name\': \'listshare060b33191\', \'last_modified\': datetime.datetime(2026, 5, 21, 21, 14, 26, tzinfo=datetime.timezone.utc), \'etag\': \'"0x8DEB77DF06BB847"\', \'quota\': 102400, \'access_tier\': \'TransactionOptimized\', \'next_allowed_quota_downgrade_time\': None, \'metadata\': None, \'snapshot\': None, \'deleted\': None, \'deleted_time\': None, \'version\': None, \'remaining_retention_days\': None, \'provisioned_egress_mbps\': None, \'provisioned_ingress_mbps\': None, \'provisioned_iops\': None, \'provisioned_bandwidth\': None, \'lease\': {\'status\': \'unlocked\', \'state\': \'available\', \'duration\': None}, \'protocols\': None, \'root_squash\': None, \'enable_snapshot_virtual_directory_access\': None, \'paid_bursting_enabled\': None, \'paid_bursting_bandwidth_mibps\': None, \'paid_bursting_iops\': None, \'included_burst_iops\': None, \'max_burst_credits_for_iops\': None, \'next_provisioned_iops_downgrade\': None, \'next_provisioned_bandwidth_downgrade\': None}', '{\'name\': \'listshare0a88e360c\', \'last_modified\': datetime.datetime(2026, 5, 21, 21, 16, 35, tzinfo=datetime.timezone.utc), \'etag\': \'"0x8DEB77E3D4F1044"\', \'quota\': 102400, \'access_tier\': \'TransactionOptimized\', \'next_allowed_quota_downgrade_time\': None, \'metadata\': None, \'snapshot\': None, \'deleted\': None, \'deleted_time\': None, \'version\': None, \'remaining_retention_days\': None, \'provisioned_egress_mbps\': None, \'provisioned_ingress_mbps\': None, \'provisioned_iops\': None, \'provisioned_bandwidth\': None, \'lease\': {\'status\': \'unlocked\', \'state\': \'available\', \'duration\': None}, \'protocols\': None, \'root_squash\': None, \'enable_snapshot_virtual_directory_access\': None, \'paid_bursting_enabled\': None, \'paid_bursting_bandwidth_mibps\': None, \'paid_bursting_iops\': None, \'included_burst_iops\': None, \'max_burst_credits_for_iops\': None, \'next_provisioned_iops_downgrade\': None, \'next_provisioned_bandwidth_downgrade\': None}']
Raw output
args = (<test_share_async.TestStorageShareAsync object at 0x7f81eb2d5a20>,)
kwargs = {'__aggregate_cache_key': ('EnvironmentVariableLoader',), 'premium_storage_file_account_key': <devtools_testutils.envv...ondary_storage_account_key': <devtools_testutils.envvariable_loader.EnvironmentVariable object at 0x7f81e3dd5390>, ...}
trimmed_kwargs = {'__aggregate_cache_key': ('EnvironmentVariableLoader',), 'premium_storage_file_account_key': <devtools_testutils.envv...ondary_storage_account_key': <devtools_testutils.envvariable_loader.EnvironmentVariable object at 0x7f81e3dd5390>, ...}
async def record_wrap(*args, **kwargs):
# ---- your existing trimming/early-exit logic ----
trimmed_kwargs = {k: v for k, v in kwargs.items()}
trim_kwargs_from_test_function(test_func, trimmed_kwargs)
if is_live_and_not_recording():
> return await test_func(*args, **trimmed_kwargs)
../../../.venv/azure-storage-file-share/.venv_whl/lib/python3.10/site-packages/devtools_testutils/aio/proxy_testcase_async.py:107:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
tests/test_share_async.py:971: in test_list_shares_with_num_results_and_marker
self.assertNamedItemInContainer(shares1, share_names[1])
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <test_share_async.TestStorageShareAsync object at 0x7f81eb2d5a20>
container = [{'name': 'listshare060b33191', 'last_modified': datetime.datetime(2026, 5, 21, 21, 14, 26, tzinfo=datetime.timezone.u..._burst_credits_for_iops': None, 'next_provisioned_iops_downgrade': None, 'next_provisioned_bandwidth_downgrade': None}]
item_name = 'listshare1a88e360c', msg = None
def assertNamedItemInContainer(self, container, item_name, msg=None):
def _is_string(obj):
return isinstance(obj, str)
for item in container:
if _is_string(item):
if item == item_name:
return
elif isinstance(item, dict):
if item_name == item["name"]:
return
elif item.name == item_name:
return
elif hasattr(item, "snapshot") and item.snapshot == item_name:
return
error_message = f"{repr(item_name)} not found in {[str(c) for c in container]}"
> pytest.fail(error_message)
E Failed: 'listshare1a88e360c' not found in ['{\'name\': \'listshare060b33191\', \'last_modified\': datetime.datetime(2026, 5, 21, 21, 14, 26, tzinfo=datetime.timezone.utc), \'etag\': \'"0x8DEB77DF06BB847"\', \'quota\': 102400, \'access_tier\': \'TransactionOptimized\', \'next_allowed_quota_downgrade_time\': None, \'metadata\': None, \'snapshot\': None, \'deleted\': None, \'deleted_time\': None, \'version\': None, \'remaining_retention_days\': None, \'provisioned_egress_mbps\': None, \'provisioned_ingress_mbps\': None, \'provisioned_iops\': None, \'provisioned_bandwidth\': None, \'lease\': {\'status\': \'unlocked\', \'state\': \'available\', \'duration\': None}, \'protocols\': None, \'root_squash\': None, \'enable_snapshot_virtual_directory_access\': None, \'paid_bursting_enabled\': None, \'paid_bursting_bandwidth_mibps\': None, \'paid_bursting_iops\': None, \'included_burst_iops\': None, \'max_burst_credits_for_iops\': None, \'next_provisioned_iops_downgrade\': None, \'next_provisioned_bandwidth_downgrade\': None}', '{\'name\': \'listshare0a88e360c\', \'last_modified\': datetime.datetime(2026, 5, 21, 21, 16, 35, tzinfo=datetime.timezone.utc), \'etag\': \'"0x8DEB77E3D4F1044"\', \'quota\': 102400, \'access_tier\': \'TransactionOptimized\', \'next_allowed_quota_downgrade_time\': None, \'metadata\': None, \'snapshot\': None, \'deleted\': None, \'deleted_time\': None, \'version\': None, \'remaini
... [The stack trace has been truncated as it exceeded the maximum allowed size. Please refer to the complete log available in the Test Run attachments for full details.]