-
Notifications
You must be signed in to change notification settings - Fork 3.3k
Description
Describe the bug
When attempting to download-batch from blob storage with a glob pattern an error occurs in v2.77. If downloading a single file (no glob) there's no error, or when using a previous version with glob it also works
Related command
az storage blob download-batch -s files --pattern 'path/*' --account-name staccount --auth-mode key -d .Errors
The command failed with an unexpected error. Here is the traceback:
cannot use a string pattern on a bytes-like object
Traceback (most recent call last):
File "/opt/az/lib/python3.13/site-packages/knack/cli.py", line 233, in invoke
cmd_result = self.invocation.execute(args)
File "/opt/az/lib/python3.13/site-packages/azure/cli/core/commands/__init__.py", line 666, in execute
raise ex
File "/opt/az/lib/python3.13/site-packages/azure/cli/core/commands/__init__.py", line 734, in _run_jobs_serially
results.append(self._run_job(expanded_arg, cmd_copy))
~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/az/lib/python3.13/site-packages/azure/cli/core/commands/__init__.py", line 726, in _run_job
return cmd_copy.exception_handler(ex)
~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^
File "/opt/az/lib/python3.13/site-packages/azure/cli/command_modules/storage/__init__.py", line 358, in new_handler
first(ex)
~~~~~^^^^
File "/opt/az/lib/python3.13/site-packages/azure/cli/command_modules/storage/__init__.py", line 358, in new_handler
first(ex)
~~~~~^^^^
File "/opt/az/lib/python3.13/site-packages/azure/cli/command_modules/storage/_exception_handler.py", line 17, in file_related_exception_handler
raise ex
File "/opt/az/lib/python3.13/site-packages/azure/cli/core/commands/__init__.py", line 703, in _run_job
result = cmd_copy(params)
File "/opt/az/lib/python3.13/site-packages/azure/cli/core/commands/__init__.py", line 336, in __call__
return self.handler(*args, **kwargs)
~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
File "/opt/az/lib/python3.13/site-packages/azure/cli/core/commands/command_operation.py", line 120, in handler
return op(**command_args)
File "/opt/az/lib/python3.13/site-packages/azure/cli/command_modules/storage/operations/blob.py", line 417, in storage_blob_download_batch
source_blobs = collect_blobs(client, source_container_name, pattern)
File "/opt/az/lib/python3.13/site-packages/azure/cli/command_modules/storage/util.py", line 16, in collect_blobs
return [name for (name, _) in collect_blob_objects(blob_service, container, pattern)]
~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/az/lib/python3.13/site-packages/azure/cli/command_modules/storage/util.py", line 52, in collect_blob_objects
if not pattern or _match_path(blob_name, pattern):
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^
File "/opt/az/lib/python3.13/site-packages/azure/cli/command_modules/storage/util.py", line 199, in _match_path
return fnmatch(path, pattern)
File "/opt/az/lib/python3.13/fnmatch.py", line 36, in fnmatch
return fnmatchcase(name, pat)
File "/opt/az/lib/python3.13/fnmatch.py", line 71, in fnmatchcase
return match(name) is not None
~~~~~^^^^^^
TypeError: cannot use a string pattern on a bytes-like object
Issue script & Debug output
urllib3.connectionpool: https://staccount.blob.core.windows.net:443 "GET /files?restype=container&comp=list&prefix=path%2F HTTP/1.1" 200 None
cli.azure.cli.core.azclierror: Traceback (most recent call last):
File "/opt/az/lib/python3.13/site-packages/knack/cli.py", line 233, in invoke
cmd_result = self.invocation.execute(args)
File "/opt/az/lib/python3.13/site-packages/azure/cli/core/commands/__init__.py", line 666, in execute
raise ex
File "/opt/az/lib/python3.13/site-packages/azure/cli/core/commands/__init__.py", line 734, in _run_jobs_serially
results.append(self._run_job(expanded_arg, cmd_copy))
~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/az/lib/python3.13/site-packages/azure/cli/core/commands/__init__.py", line 726, in _run_job
return cmd_copy.exception_handler(ex)
~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^
File "/opt/az/lib/python3.13/site-packages/azure/cli/command_modules/storage/__init__.py", line 358, in new_handler
first(ex)
~~~~~^^^^
File "/opt/az/lib/python3.13/site-packages/azure/cli/command_modules/storage/__init__.py", line 358, in new_handler
first(ex)
~~~~~^^^^
File "/opt/az/lib/python3.13/site-packages/azure/cli/command_modules/storage/_exception_handler.py", line 17, in file_related_exception_handler
raise ex
File "/opt/az/lib/python3.13/site-packages/azure/cli/core/commands/__init__.py", line 703, in _run_job
result = cmd_copy(params)
File "/opt/az/lib/python3.13/site-packages/azure/cli/core/commands/__init__.py", line 336, in __call__
return self.handler(*args, **kwargs)
~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
File "/opt/az/lib/python3.13/site-packages/azure/cli/core/commands/command_operation.py", line 120, in handler
return op(**command_args)
File "/opt/az/lib/python3.13/site-packages/azure/cli/command_modules/storage/operations/blob.py", line 417, in storage_blob_download_batch
source_blobs = collect_blobs(client, source_container_name, pattern)
File "/opt/az/lib/python3.13/site-packages/azure/cli/command_modules/storage/util.py", line 16, in collect_blobs
return [name for (name, _) in collect_blob_objects(blob_service, container, pattern)]
~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/az/lib/python3.13/site-packages/azure/cli/command_modules/storage/util.py", line 52, in collect_blob_objects
if not pattern or _match_path(blob_name, pattern):
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^
File "/opt/az/lib/python3.13/site-packages/azure/cli/command_modules/storage/util.py", line 199, in _match_path
return fnmatch(path, pattern)
File "/opt/az/lib/python3.13/fnmatch.py", line 36, in fnmatch
return fnmatchcase(name, pat)
File "/opt/az/lib/python3.13/fnmatch.py", line 71, in fnmatchcase
return match(name) is not None
~~~~~^^^^^^
TypeError: cannot use a string pattern on a bytes-like object
cli.azure.cli.core.azclierror: The command failed with an unexpected error. Here is the traceback:
az_command_data_logger: The command failed with an unexpected error. Here is the traceback:
cli.azure.cli.core.azclierror: cannot use a string pattern on a bytes-like object
Traceback (most recent call last):
File "/opt/az/lib/python3.13/site-packages/knack/cli.py", line 233, in invoke
cmd_result = self.invocation.execute(args)
File "/opt/az/lib/python3.13/site-packages/azure/cli/core/commands/__init__.py", line 666, in execute
raise ex
File "/opt/az/lib/python3.13/site-packages/azure/cli/core/commands/__init__.py", line 734, in _run_jobs_serially
results.append(self._run_job(expanded_arg, cmd_copy))
~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/az/lib/python3.13/site-packages/azure/cli/core/commands/__init__.py", line 726, in _run_job
return cmd_copy.exception_handler(ex)
~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^
File "/opt/az/lib/python3.13/site-packages/azure/cli/command_modules/storage/__init__.py", line 358, in new_handler
first(ex)
~~~~~^^^^
File "/opt/az/lib/python3.13/site-packages/azure/cli/command_modules/storage/__init__.py", line 358, in new_handler
first(ex)
~~~~~^^^^
File "/opt/az/lib/python3.13/site-packages/azure/cli/command_modules/storage/_exception_handler.py", line 17, in file_related_exception_handler
raise ex
File "/opt/az/lib/python3.13/site-packages/azure/cli/core/commands/__init__.py", line 703, in _run_job
result = cmd_copy(params)
File "/opt/az/lib/python3.13/site-packages/azure/cli/core/commands/__init__.py", line 336, in __call__
return self.handler(*args, **kwargs)
~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
File "/opt/az/lib/python3.13/site-packages/azure/cli/core/commands/command_operation.py", line 120, in handler
return op(**command_args)
File "/opt/az/lib/python3.13/site-packages/azure/cli/command_modules/storage/operations/blob.py", line 417, in storage_blob_download_batch
source_blobs = collect_blobs(client, source_container_name, pattern)
File "/opt/az/lib/python3.13/site-packages/azure/cli/command_modules/storage/util.py", line 16, in collect_blobs
return [name for (name, _) in collect_blob_objects(blob_service, container, pattern)]
~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/az/lib/python3.13/site-packages/azure/cli/command_modules/storage/util.py", line 52, in collect_blob_objects
if not pattern or _match_path(blob_name, pattern):
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^
File "/opt/az/lib/python3.13/site-packages/azure/cli/command_modules/storage/util.py", line 199, in _match_path
return fnmatch(path, pattern)
File "/opt/az/lib/python3.13/fnmatch.py", line 36, in fnmatch
return fnmatchcase(name, pat)
File "/opt/az/lib/python3.13/fnmatch.py", line 71, in fnmatchcase
return match(name) is not None
~~~~~^^^^^^
TypeError: cannot use a string pattern on a bytes-like object
az_command_data_logger: cannot use a string pattern on a bytes-like object
Traceback (most recent call last):
File "/opt/az/lib/python3.13/site-packages/knack/cli.py", line 233, in invoke
cmd_result = self.invocation.execute(args)
File "/opt/az/lib/python3.13/site-packages/azure/cli/core/commands/__init__.py", line 666, in execute
raise ex
File "/opt/az/lib/python3.13/site-packages/azure/cli/core/commands/__init__.py", line 734, in _run_jobs_serially
results.append(self._run_job(expanded_arg, cmd_copy))
~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/az/lib/python3.13/site-packages/azure/cli/core/commands/__init__.py", line 726, in _run_job
return cmd_copy.exception_handler(ex)
~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^
File "/opt/az/lib/python3.13/site-packages/azure/cli/command_modules/storage/__init__.py", line 358, in new_handler
first(ex)
~~~~~^^^^
File "/opt/az/lib/python3.13/site-packages/azure/cli/command_modules/storage/__init__.py", line 358, in new_handler
first(ex)
~~~~~^^^^
File "/opt/az/lib/python3.13/site-packages/azure/cli/command_modules/storage/_exception_handler.py", line 17, in file_related_exception_handler
raise ex
File "/opt/az/lib/python3.13/site-packages/azure/cli/core/commands/__init__.py", line 703, in _run_job
result = cmd_copy(params)
File "/opt/az/lib/python3.13/site-packages/azure/cli/core/commands/__init__.py", line 336, in __call__
return self.handler(*args, **kwargs)
~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
File "/opt/az/lib/python3.13/site-packages/azure/cli/core/commands/command_operation.py", line 120, in handler
return op(**command_args)
File "/opt/az/lib/python3.13/site-packages/azure/cli/command_modules/storage/operations/blob.py", line 417, in storage_blob_download_batch
source_blobs = collect_blobs(client, source_container_name, pattern)
File "/opt/az/lib/python3.13/site-packages/azure/cli/command_modules/storage/util.py", line 16, in collect_blobs
return [name for (name, _) in collect_blob_objects(blob_service, container, pattern)]
~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/az/lib/python3.13/site-packages/azure/cli/command_modules/storage/util.py", line 52, in collect_blob_objects
if not pattern or _match_path(blob_name, pattern):
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^
File "/opt/az/lib/python3.13/site-packages/azure/cli/command_modules/storage/util.py", line 199, in _match_path
return fnmatch(path, pattern)
File "/opt/az/lib/python3.13/fnmatch.py", line 36, in fnmatch
return fnmatchcase(name, pat)
File "/opt/az/lib/python3.13/fnmatch.py", line 71, in fnmatchcase
return match(name) is not None
~~~~~^^^^^^
TypeError: cannot use a string pattern on a bytes-like object
To check existing issues, please visit: https://github.com/Azure/azure-cli/issues
Expected behavior
Files to be downloaded correctly like in v2.76
Environment Summary
azure-cli 2.77.0
core 2.77.0
telemetry 1.1.0
Extensions:
account 0.2.5
appservice-kube 0.1.9
azure-devops 1.0.2
bastion 0.3.0
connectedmachine 1.0.0b2
front-door 1.0.16
import-export 0.1.1
managementpartner 0.1.3
providerhub 1.0.0b2
resource-graph 2.1.0
ssh 1.0.0
Dependencies:
msal 1.34.0b1
azure-mgmt-resource 23.3.0
Additional context
Also happens in container version, previous versions have no issue