diff --git a/packages/google-cloud-storage/google/cloud/storage/asyncio/async_multi_range_downloader.py b/packages/google-cloud-storage/google/cloud/storage/asyncio/async_multi_range_downloader.py index 6d3f5e2fab4b..400e73128433 100644 --- a/packages/google-cloud-storage/google/cloud/storage/asyncio/async_multi_range_downloader.py +++ b/packages/google-cloud-storage/google/cloud/storage/asyncio/async_multi_range_downloader.py @@ -577,3 +577,9 @@ async def close(self): @property def is_stream_open(self) -> bool: return self._is_stream_open + + @property + def object_metadata(self) -> Optional[_storage_v2.Object]: + """The metadata of the object being downloaded.""" + stream = getattr(self, "read_obj_str", None) + return stream.object_metadata if stream else None diff --git a/packages/google-cloud-storage/tests/unit/asyncio/test_async_multi_range_downloader.py b/packages/google-cloud-storage/tests/unit/asyncio/test_async_multi_range_downloader.py index 6ead8d8964e9..24196d317ab6 100644 --- a/packages/google-cloud-storage/tests/unit/asyncio/test_async_multi_range_downloader.py +++ b/packages/google-cloud-storage/tests/unit/asyncio/test_async_multi_range_downloader.py @@ -60,6 +60,7 @@ async def _make_mock_mrd( mock_stream.generation_number = _TEST_GENERATION_NUMBER mock_stream.persisted_size = _TEST_OBJECT_SIZE mock_stream.read_handle = _TEST_READ_HANDLE + mock_stream.object_metadata = mock.Mock() mrd = await AsyncMultiRangeDownloader.create_mrd( mock_client, bucket_name, object_name, generation, read_handle @@ -93,6 +94,7 @@ async def test_create_mrd(self, mock_cls_async_read_object_stream): assert mrd.read_handle == _TEST_READ_HANDLE assert mrd.persisted_size == _TEST_OBJECT_SIZE assert mrd.is_stream_open + assert mrd.object_metadata == mrd.read_obj_str.object_metadata assert mrd._open_retries == 0 @mock.patch( @@ -275,6 +277,7 @@ async def test_close_mrd(self, mock_cls_async_read_object_stream): # Assert assert not mrd.is_stream_open + assert mrd.object_metadata is None @pytest.mark.asyncio async def test_close_mrd_not_opened_should_throw_error(self):