diff --git a/CHANGELOG.md b/CHANGELOG.md index 92342065c..766bbabe3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,14 @@ [1]: https://pypi.org/project/google-cloud-storage/#history +## [3.3.1](https://github.com/googleapis/python-storage/compare/v3.3.0...v3.3.1) (2025-08-25) + + +### Bug Fixes + +* Provide option to user to set entire object checksum at "initiate a resumable upload session" and send the same ([#1525](https://github.com/googleapis/python-storage/issues/1525)) ([a8109e0](https://github.com/googleapis/python-storage/commit/a8109e0d02c62542f1bea20373b53864fb776caa)) +* Send part's checksum for XML MPU part upload ([#1529](https://github.com/googleapis/python-storage/issues/1529)) ([2ad77c7](https://github.com/googleapis/python-storage/commit/2ad77c7d949e84c515c051a0fd4b37b822788dd8)) + ## [3.3.0](https://github.com/googleapis/python-storage/compare/v3.2.0...v3.3.0) (2025-08-05) diff --git a/google/cloud/storage/version.py b/google/cloud/storage/version.py index 2279c3674..a5a77c35d 100644 --- a/google/cloud/storage/version.py +++ b/google/cloud/storage/version.py @@ -12,4 +12,4 @@ # See the License for the specific language governing permissions and # limitations under the License. -__version__ = "3.3.0" +__version__ = "3.3.1" diff --git a/tests/system/test__signing.py b/tests/system/test__signing.py index ed5a0c09a..6ad417de1 100644 --- a/tests/system/test__signing.py +++ b/tests/system/test__signing.py @@ -59,9 +59,7 @@ def _create_signed_list_blobs_url_helper( :Response headers end." -def test_create_signed_list_blobs_url_v2( - storage_client, signing_bucket, no_mtls -): +def test_create_signed_list_blobs_url_v2(storage_client, signing_bucket, no_mtls): _create_signed_list_blobs_url_helper( storage_client, signing_bucket, @@ -83,9 +81,7 @@ def test_create_signed_list_blobs_url_v2_w_expiration( ) -def test_create_signed_list_blobs_url_v4( - storage_client, signing_bucket, no_mtls -): +def test_create_signed_list_blobs_url_v4(storage_client, signing_bucket, no_mtls): _create_signed_list_blobs_url_helper( storage_client, signing_bucket, @@ -229,9 +225,7 @@ def test_create_signed_read_url_v4_w_non_ascii_name( ) -def test_create_signed_read_url_v2_w_csek( - storage_client, signing_bucket, no_mtls -): +def test_create_signed_read_url_v2_w_csek(storage_client, signing_bucket, no_mtls): encryption_key = os.urandom(32) _create_signed_read_url_helper( storage_client, @@ -242,9 +236,7 @@ def test_create_signed_read_url_v2_w_csek( ) -def test_create_signed_read_url_v4_w_csek( - storage_client, signing_bucket, no_mtls -): +def test_create_signed_read_url_v4_w_csek(storage_client, signing_bucket, no_mtls): encryption_key = os.urandom(32) _create_signed_read_url_helper( storage_client, @@ -327,9 +319,7 @@ def test_create_signed_read_url_v4_w_access_token_universe_domain( "https://www.googleapis.com/auth/devstorage.read_write", "https://www.googleapis.com/auth/iam", ] - response = universe_domain_iam_client.generate_access_token( - name=name, scope=scope - ) + response = universe_domain_iam_client.generate_access_token(name=name, scope=scope) _create_signed_read_url_helper( universe_domain_client, @@ -340,9 +330,7 @@ def test_create_signed_read_url_v4_w_access_token_universe_domain( ) -def _create_signed_delete_url_helper( - client, bucket, version="v2", expiration=None -): +def _create_signed_delete_url_helper(client, bucket, version="v2", expiration=None): expiration = _morph_expiration(version, expiration) blob = bucket.blob("DELETE_ME.txt") @@ -372,9 +360,7 @@ def test_create_signed_delete_url_v2(storage_client, signing_bucket, no_mtls): def test_create_signed_delete_url_v4(storage_client, signing_bucket, no_mtls): - _create_signed_delete_url_helper( - storage_client, signing_bucket, version="v4" - ) + _create_signed_delete_url_helper(storage_client, signing_bucket, version="v4") def _create_signed_resumable_upload_url_helper( @@ -393,9 +379,7 @@ def _create_signed_resumable_upload_url_helper( ) post_headers = {"x-goog-resumable": "start"} - post_response = requests.post( - signed_resumable_upload_url, headers=post_headers - ) + post_response = requests.post(signed_resumable_upload_url, headers=post_headers) assert ( post_response.status_code == 201 ), f"Response content start: {post_response.content} \ @@ -445,9 +429,7 @@ def _create_signed_resumable_upload_url_helper( :Response headers end." -def test_create_signed_resumable_upload_url_v2( - storage_client, signing_bucket, no_mtls -): +def test_create_signed_resumable_upload_url_v2(storage_client, signing_bucket, no_mtls): _create_signed_resumable_upload_url_helper( storage_client, signing_bucket, @@ -455,9 +437,7 @@ def test_create_signed_resumable_upload_url_v2( ) -def test_create_signed_resumable_upload_url_v4( - storage_client, signing_bucket, no_mtls -): +def test_create_signed_resumable_upload_url_v4(storage_client, signing_bucket, no_mtls): _create_signed_resumable_upload_url_helper( storage_client, signing_bucket, @@ -494,9 +474,7 @@ def test_generate_signed_post_policy_v4( ) with open(blob_name, "r") as f: files = {"file": (blob_name, f)} - response = requests.post( - policy["url"], data=policy["fields"], files=files - ) + response = requests.post(policy["url"], data=policy["fields"], files=files) os.remove(blob_name) assert ( @@ -549,9 +527,7 @@ def test_generate_signed_post_policy_v4_access_token_sa_email( ) with open(blob_name, "r") as f: files = {"file": (blob_name, f)} - response = requests.post( - policy["url"], data=policy["fields"], files=files - ) + response = requests.post(policy["url"], data=policy["fields"], files=files) os.remove(blob_name) assert ( @@ -591,9 +567,7 @@ def test_generate_signed_post_policy_v4_invalid_field( ) with open(blob_name, "r") as f: files = {"file": (blob_name, f)} - response = requests.post( - policy["url"], data=policy["fields"], files=files - ) + response = requests.post(policy["url"], data=policy["fields"], files=files) os.remove(blob_name) assert ( diff --git a/tests/system/test_bucket.py b/tests/system/test_bucket.py index 3b05e8483..602e407cc 100644 --- a/tests/system/test_bucket.py +++ b/tests/system/test_bucket.py @@ -1338,6 +1338,7 @@ def test_bucket_ip_filter_patch(storage_client, buckets_to_delete): ] assert len(reloaded_filter.vpc_network_sources) == 1 + def test_list_buckets_with_ip_filter(storage_client, buckets_to_delete): """Test that listing buckets returns a summarized IP filter.""" bucket_name = _helpers.unique_name("ip-filter-list") @@ -1366,4 +1367,3 @@ def test_list_buckets_with_ip_filter(storage_client, buckets_to_delete): # Check that the summarized filter does not include full details. assert summarized_filter.public_network_source is None assert summarized_filter.vpc_network_sources == [] -