From 8abc27be84d6a7566dbb259da5bcdb0bdbe046d9 Mon Sep 17 00:00:00 2001 From: IlyaFaer Date: Mon, 13 Jan 2020 16:14:01 +0300 Subject: [PATCH 1/2] fix(storage): blob metadata to None regression --- storage/google/cloud/storage/blob.py | 3 ++- storage/tests/unit/test_blob.py | 10 ++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/storage/google/cloud/storage/blob.py b/storage/google/cloud/storage/blob.py index bc97120e8790..8d8ff6ecc152 100644 --- a/storage/google/cloud/storage/blob.py +++ b/storage/google/cloud/storage/blob.py @@ -1910,7 +1910,8 @@ def metadata(self, value): :type value: dict :param value: (Optional) The blob metadata to set. """ - value = {k: str(v) for k, v in value.items()} + if value is not None: + value = {k: str(v) for k, v in value.items()} self._patch_property("metadata", value) @property diff --git a/storage/tests/unit/test_blob.py b/storage/tests/unit/test_blob.py index 2609d546ef49..ee58d1e4ee28 100644 --- a/storage/tests/unit/test_blob.py +++ b/storage/tests/unit/test_blob.py @@ -1198,6 +1198,16 @@ def test__get_writable_metadata_unwritable_field(self): expected = {"name": name} self.assertEqual(object_metadata, expected) + def test__set_metadata_to_none(self): + name = u"blob-name" + blob = self._make_one(name, bucket=None) + blob.storage_class = "NEARLINE" + blob.cache_control = "max-age=3600" + + with mock.patch("google.cloud.storage.blob.Blob._patch_property") as patch_prop: + blob.metadata = None + patch_prop.assert_called_once_with("metadata", None) + def test__get_upload_arguments(self): name = u"blob-name" key = b"[pXw@,p@@AfBfrR3x-2b2SCHR,.?YwRO" From 9cefd0a34f9b78be2db74b889e441533134fa273 Mon Sep 17 00:00:00 2001 From: IlyaFaer Date: Tue, 14 Jan 2020 11:08:11 +0300 Subject: [PATCH 2/2] Fix Blob.metadata() docs. --- storage/google/cloud/storage/blob.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/storage/google/cloud/storage/blob.py b/storage/google/cloud/storage/blob.py index 8d8ff6ecc152..0fdfbd327fa4 100644 --- a/storage/google/cloud/storage/blob.py +++ b/storage/google/cloud/storage/blob.py @@ -1908,7 +1908,7 @@ def metadata(self, value): See https://cloud.google.com/storage/docs/json_api/v1/objects :type value: dict - :param value: (Optional) The blob metadata to set. + :param value: The blob metadata to set. """ if value is not None: value = {k: str(v) for k, v in value.items()}