@@ -467,20 +467,25 @@ def _validate_content_response(
467467 # Raises exception if missing
468468 content_length = int (response .http_response .headers [CONTENT_LENGTH_HEADER ])
469469
470- # Patch response to return response iterator wrapped in structured message decoder
471- original_iter_bytes = response .http_response .iter_bytes
472-
473- def wrapped_iter_bytes (* args , ** kwargs ):
474- iterator = original_iter_bytes (* args , ** kwargs )
475- decoder = decoder_cls (iterator , content_length , block_size = DATA_BLOCK_SIZE )
476- # Only set request/response if present on iterator
477- if hasattr (iterator , "request" ):
478- decoder .request = iterator .request # type: ignore
479- if hasattr (iterator , "response" ):
480- decoder .response = iterator .response # type: ignore
481- return decoder
482-
483- response .http_response .iter_bytes = wrapped_iter_bytes
470+ def _make_wrapper (original ):
471+ def wrapped (* args , ** kwargs ):
472+ iterator = original (* args , ** kwargs )
473+ decoder = decoder_cls (iterator , content_length , block_size = DATA_BLOCK_SIZE )
474+ if hasattr (iterator , "request" ):
475+ decoder .request = iterator .request # type: ignore
476+ if hasattr (iterator , "response" ):
477+ decoder .response = iterator .response # type: ignore
478+ return decoder
479+ return wrapped
480+
481+ # Patch response to return response iterator wrapped in structured message decoder.
482+ # TypeSpec-generated code calls iter_bytes()/iter_raw() instead of stream_download().
483+ if hasattr (response .http_response , "iter_bytes" ):
484+ response .http_response .iter_bytes = _make_wrapper (response .http_response .iter_bytes )
485+ if hasattr (response .http_response , "iter_raw" ):
486+ response .http_response .iter_raw = _make_wrapper (response .http_response .iter_raw )
487+ if hasattr (response .http_response , "stream_download" ):
488+ response .http_response .stream_download = _make_wrapper (response .http_response .stream_download )
484489
485490
486491class StorageContentValidation (SansIOHTTPPolicy ):
0 commit comments