From 606fc89361f2f621b75108db9ecb09d8d4887eab0804821a6adbd3e579240da9 Mon Sep 17 00:00:00 2001 From: Robert Schweikert Date: Wed, 4 Mar 2026 13:45:13 +0000 Subject: [PATCH] - Update to 3.9.0 * add get_object method for async grpc client (#1735) * expose `DELETE_OBJECT` in `AsyncGrpcClient` (#1718) * update generation for MRD (#1730) * Move Zonal Buckets features of `_experimental` (#1728) * add default user agent for grpc (#1726) * expose finalized_time in blob.py applicable for GET_OBJECT in ZB (#1719) * add context manager to mrd (#1724) * integrate writes strategy and appendable object writer (#1695) * Add support for opening via `write_handle` and fix `write_handle` type (#1715) * Add micro-benchmarks for writes comparing standard (regional) vs rapid (zonal) buckets. (#1707) * Add micro-benchmarks for reads comparing standard (regional) vs rapid (zonal) buckets. (#1697) * send `user_agent` to grpc channel (#1712) * add samples for appendable objects writes and reads (#1705) * add samples for appendable objects writes and reads * add support for `generation=0` to avoid overwriting existing objects and add `is_stream_open` support (#1709) * add support for `generation=0` to prevent overwriting existing objects * add `is_stream_open` property to AsyncAppendableObjectWriter for stream status check * receive eof while closing reads stream (#1733) * Change contructors of MRD and AAOW AsyncGrpcClient.grpc_client to AsyncGrpcClient (#1727) * instance grpc client once per process in benchmarks (#1725) * update write handle on every recv() (#1716) * Fix formatting in setup.py dependencies list (#1713) * implement requests_done method to signal end of requests in async streams. Gracefully close streams. (#1700) * implement requests_done method to signal end of requests in async streams. Gracefully close streams. OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:google/python-google-cloud-storage?expand=0&rev=23 --- .gitattributes | 24 + .gitignore | 4 + _multibuild | 3 + demock.patch | 333 +++++++++++++ google_cloud_storage-3.8.0.tar.gz | 3 + google_cloud_storage-3.9.0.tar.gz | 3 + python-google-cloud-storage.changes | 721 ++++++++++++++++++++++++++++ python-google-cloud-storage.spec | 142 ++++++ 8 files changed, 1233 insertions(+) create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 _multibuild create mode 100644 demock.patch create mode 100644 google_cloud_storage-3.8.0.tar.gz create mode 100644 google_cloud_storage-3.9.0.tar.gz create mode 100644 python-google-cloud-storage.changes create mode 100644 python-google-cloud-storage.spec diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..37a8eaa --- /dev/null +++ b/.gitattributes @@ -0,0 +1,24 @@ +*.changes merge=merge-changes +*.7z filter=lfs diff=lfs merge=lfs -text +*.bsp filter=lfs diff=lfs merge=lfs -text +*.bz2 filter=lfs diff=lfs merge=lfs -text +*.gem filter=lfs diff=lfs merge=lfs -text +*.gz filter=lfs diff=lfs merge=lfs -text +*.jar filter=lfs diff=lfs merge=lfs -text +*.lz filter=lfs diff=lfs merge=lfs -text +*.lzma filter=lfs diff=lfs merge=lfs -text +*.obscpio filter=lfs diff=lfs merge=lfs -text +*.oxt filter=lfs diff=lfs merge=lfs -text +*.pdf filter=lfs diff=lfs merge=lfs -text +*.png filter=lfs diff=lfs merge=lfs -text +*.rpm filter=lfs diff=lfs merge=lfs -text +*.tar filter=lfs diff=lfs merge=lfs -text +*.tbz filter=lfs diff=lfs merge=lfs -text +*.tbz2 filter=lfs diff=lfs merge=lfs -text +*.tgz filter=lfs diff=lfs merge=lfs -text +*.ttf filter=lfs diff=lfs merge=lfs -text +*.txz filter=lfs diff=lfs merge=lfs -text +*.whl filter=lfs diff=lfs merge=lfs -text +*.xz filter=lfs diff=lfs merge=lfs -text +*.zip filter=lfs diff=lfs merge=lfs -text +*.zst filter=lfs diff=lfs merge=lfs -text diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..8b731c3 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +*.obscpio +*.osc +_build.* +.pbuild diff --git a/_multibuild b/_multibuild new file mode 100644 index 0000000..fcc7b97 --- /dev/null +++ b/_multibuild @@ -0,0 +1,3 @@ + + test + diff --git a/demock.patch b/demock.patch new file mode 100644 index 0000000..91a32b7 --- /dev/null +++ b/demock.patch @@ -0,0 +1,333 @@ +diff -Nru google_cloud_storage-3.8.0.orig/google/cloud/storage/_media/requests/__init__.py google_cloud_storage-3.8.0/google/cloud/storage/_media/requests/__init__.py +--- google_cloud_storage-3.8.0.orig/google/cloud/storage/_media/requests/__init__.py 2026-01-14 01:41:56.000000000 +0100 ++++ google_cloud_storage-3.8.0/google/cloud/storage/_media/requests/__init__.py 2026-01-16 10:59:54.646351819 +0100 +@@ -32,7 +32,7 @@ + + import google.auth + import google.auth.credentials as creds_mod +- import mock ++ from unittest import mock + + def mock_default(scopes=None): + credentials = mock.Mock(spec=creds_mod.Credentials) +@@ -68,7 +68,7 @@ + + .. testsetup:: basic-download + +- import mock ++ from unittest import mock + import requests + import http.client + +@@ -111,7 +111,7 @@ + + .. testsetup:: basic-download-with-slice + +- import mock ++ from unittest import mock + import requests + import http.client + +@@ -170,7 +170,7 @@ + + import io + +- import mock ++ from unittest import mock + import requests + import http.client + +@@ -230,7 +230,7 @@ + + .. testsetup:: chunked-download-end + +- import mock ++ from unittest import mock + import requests + import http.client + +@@ -303,7 +303,7 @@ + + import json + +- import mock ++ from unittest import mock + import requests + import http.client + +@@ -363,7 +363,7 @@ + + import time + +- import mock ++ from unittest import mock + import requests + import http.client + +@@ -438,7 +438,7 @@ + + import json + +- import mock ++ from unittest import mock + import requests + import http.client + +@@ -524,7 +524,7 @@ + + import io + +- import mock ++ from unittest import mock + import requests + import http.client + +@@ -585,7 +585,7 @@ + import io + import json + +- import mock ++ from unittest import mock + import requests + import http.client + +diff -Nru google_cloud_storage-3.8.0.orig/google/cloud/storage/_media/requests/upload.py google_cloud_storage-3.8.0/google/cloud/storage/_media/requests/upload.py +--- google_cloud_storage-3.8.0.orig/google/cloud/storage/_media/requests/upload.py 2026-01-14 01:41:56.000000000 +0100 ++++ google_cloud_storage-3.8.0/google/cloud/storage/_media/requests/upload.py 2026-01-16 10:59:54.644082466 +0100 +@@ -198,7 +198,7 @@ + import os + import tempfile + +- import mock ++ from unittest import mock + import requests + import http.client + +@@ -255,7 +255,7 @@ + + import io + +- import mock ++ from unittest import mock + import requests + import http.client + +@@ -296,7 +296,7 @@ + + import io + +- import mock ++ from unittest import mock + import requests + import http.client + +@@ -457,7 +457,7 @@ + + import io + +- import mock ++ from unittest import mock + import requests + import http.client + +diff -Nru google_cloud_storage-3.8.0.orig/tests/system/test_blob.py google_cloud_storage-3.8.0/tests/system/test_blob.py +--- google_cloud_storage-3.8.0.orig/tests/system/test_blob.py 2026-01-14 01:41:56.000000000 +0100 ++++ google_cloud_storage-3.8.0/tests/system/test_blob.py 2026-01-16 10:59:54.678155512 +0100 +@@ -21,7 +21,7 @@ + import warnings + + import pytest +-import mock ++from unittest import mock + + from google.cloud.storage.exceptions import DataCorruption + from google.api_core import exceptions +diff -Nru google_cloud_storage-3.8.0.orig/tests/unit/gapic/storage_v2/test_storage.py google_cloud_storage-3.8.0/tests/unit/gapic/storage_v2/test_storage.py +--- google_cloud_storage-3.8.0.orig/tests/unit/gapic/storage_v2/test_storage.py 2026-01-14 01:41:56.000000000 +0100 ++++ google_cloud_storage-3.8.0/tests/unit/gapic/storage_v2/test_storage.py 2026-01-16 10:59:54.757161041 +0100 +@@ -20,7 +20,7 @@ + from unittest import mock + from unittest.mock import AsyncMock # pragma: NO COVER + except ImportError: # pragma: NO COVER +- import mock ++ from unittest import mock + + import grpc + from grpc.experimental import aio +diff -Nru google_cloud_storage-3.8.0.orig/tests/unit/test_acl.py google_cloud_storage-3.8.0/tests/unit/test_acl.py +--- google_cloud_storage-3.8.0.orig/tests/unit/test_acl.py 2026-01-14 01:41:56.000000000 +0100 ++++ google_cloud_storage-3.8.0/tests/unit/test_acl.py 2026-01-16 10:59:54.769161251 +0100 +@@ -14,7 +14,7 @@ + + import unittest + +-import mock ++from unittest import mock + + from google.cloud.storage.retry import ( + DEFAULT_RETRY, +diff -Nru google_cloud_storage-3.8.0.orig/tests/unit/test_batch.py google_cloud_storage-3.8.0/tests/unit/test_batch.py +--- google_cloud_storage-3.8.0.orig/tests/unit/test_batch.py 2026-01-14 01:41:56.000000000 +0100 ++++ google_cloud_storage-3.8.0/tests/unit/test_batch.py 2026-01-16 10:59:54.723595781 +0100 +@@ -17,7 +17,7 @@ + from http.client import NO_CONTENT + import unittest + +-import mock ++from unittest import mock + import requests + + from google.cloud.storage._helpers import _DEFAULT_UNIVERSE_DOMAIN +diff -Nru google_cloud_storage-3.8.0.orig/tests/unit/test_blob.py google_cloud_storage-3.8.0/tests/unit/test_blob.py +--- google_cloud_storage-3.8.0.orig/tests/unit/test_blob.py 2026-01-14 01:41:56.000000000 +0100 ++++ google_cloud_storage-3.8.0/tests/unit/test_blob.py 2026-01-16 10:59:54.711160236 +0100 +@@ -24,7 +24,7 @@ + from unittest.mock import patch + from urllib.parse import urlencode + +-import mock ++from unittest import mock + import pytest + + from google.cloud.exceptions import NotFound +diff -Nru google_cloud_storage-3.8.0.orig/tests/unit/test_bucket.py google_cloud_storage-3.8.0/tests/unit/test_bucket.py +--- google_cloud_storage-3.8.0.orig/tests/unit/test_bucket.py 2026-01-14 01:41:56.000000000 +0100 ++++ google_cloud_storage-3.8.0/tests/unit/test_bucket.py 2026-01-16 10:59:54.767161216 +0100 +@@ -15,7 +15,7 @@ + import datetime + import unittest + +-import mock ++from unittest import mock + import pytest + + from google.cloud.storage.blob import _quote +diff -Nru google_cloud_storage-3.8.0.orig/tests/unit/test_client.py google_cloud_storage-3.8.0/tests/unit/test_client.py +--- google_cloud_storage-3.8.0.orig/tests/unit/test_client.py 2026-01-14 01:41:56.000000000 +0100 ++++ google_cloud_storage-3.8.0/tests/unit/test_client.py 2026-01-16 10:59:54.720694818 +0100 +@@ -17,7 +17,7 @@ + import io + import json + from unittest.mock import patch +-import mock ++from unittest import mock + import pytest + import re + import requests +diff -Nru google_cloud_storage-3.8.0.orig/tests/unit/test_fileio.py google_cloud_storage-3.8.0/tests/unit/test_fileio.py +--- google_cloud_storage-3.8.0.orig/tests/unit/test_fileio.py 2026-01-14 01:41:56.000000000 +0100 ++++ google_cloud_storage-3.8.0/tests/unit/test_fileio.py 2026-01-16 10:59:54.718626447 +0100 +@@ -18,7 +18,7 @@ + import io + import string + +-import mock ++from unittest import mock + + from google.api_core.exceptions import RequestRangeNotSatisfiable + from google.cloud.storage.fileio import CHUNK_SIZE_MULTIPLE +diff -Nru google_cloud_storage-3.8.0.orig/tests/unit/test__helpers.py google_cloud_storage-3.8.0/tests/unit/test__helpers.py +--- google_cloud_storage-3.8.0.orig/tests/unit/test__helpers.py 2026-01-14 01:41:56.000000000 +0100 ++++ google_cloud_storage-3.8.0/tests/unit/test__helpers.py 2026-01-16 10:59:54.716578054 +0100 +@@ -14,7 +14,7 @@ + + import unittest + +-import mock ++from unittest import mock + + from google.cloud.storage.retry import DEFAULT_RETRY + from google.cloud.storage.retry import DEFAULT_RETRY_IF_METAGENERATION_SPECIFIED +@@ -586,7 +586,7 @@ + self.assertEqual(SIGNED_CONTENT, b"kBiQqOnIz21aGlQrIp/r/w==") + + def test_it_with_stubs(self): +- import mock ++ from unittest import mock + + class _Buffer(object): + def __init__(self, return_vals): +diff -Nru google_cloud_storage-3.8.0.orig/tests/unit/test_hmac_key.py google_cloud_storage-3.8.0/tests/unit/test_hmac_key.py +--- google_cloud_storage-3.8.0.orig/tests/unit/test_hmac_key.py 2026-01-14 01:41:56.000000000 +0100 ++++ google_cloud_storage-3.8.0/tests/unit/test_hmac_key.py 2026-01-16 10:59:54.764429205 +0100 +@@ -14,7 +14,7 @@ + + import unittest + +-import mock ++from unittest import mock + + from google.cloud.storage.retry import DEFAULT_RETRY + from google.cloud.storage.retry import DEFAULT_RETRY_IF_ETAG_IN_JSON +diff -Nru google_cloud_storage-3.8.0.orig/tests/unit/test__http.py google_cloud_storage-3.8.0/tests/unit/test__http.py +--- google_cloud_storage-3.8.0.orig/tests/unit/test__http.py 2026-01-14 01:41:56.000000000 +0100 ++++ google_cloud_storage-3.8.0/tests/unit/test__http.py 2026-01-16 10:59:54.704689771 +0100 +@@ -15,7 +15,7 @@ + import unittest + from unittest.mock import patch + +-import mock ++from unittest import mock + + from google.cloud.storage import _helpers + +diff -Nru google_cloud_storage-3.8.0.orig/tests/unit/test_notification.py google_cloud_storage-3.8.0/tests/unit/test_notification.py +--- google_cloud_storage-3.8.0.orig/tests/unit/test_notification.py 2026-01-14 01:41:56.000000000 +0100 ++++ google_cloud_storage-3.8.0/tests/unit/test_notification.py 2026-01-16 10:59:54.706550807 +0100 +@@ -14,7 +14,7 @@ + + import unittest + +-import mock ++from unittest import mock + + from google.cloud.storage.retry import DEFAULT_RETRY + +diff -Nru google_cloud_storage-3.8.0.orig/tests/unit/test__opentelemetry_tracing.py google_cloud_storage-3.8.0/tests/unit/test__opentelemetry_tracing.py +--- google_cloud_storage-3.8.0.orig/tests/unit/test__opentelemetry_tracing.py 2026-01-14 01:41:56.000000000 +0100 ++++ google_cloud_storage-3.8.0/tests/unit/test__opentelemetry_tracing.py 2026-01-16 10:59:54.708494391 +0100 +@@ -17,7 +17,7 @@ + import pytest + import sys + +-import mock ++from unittest import mock + from google.api_core.exceptions import GoogleAPICallError + from google.cloud.storage import __version__ + from google.cloud.storage import _opentelemetry_tracing +diff -Nru google_cloud_storage-3.8.0.orig/tests/unit/test_retry.py google_cloud_storage-3.8.0/tests/unit/test_retry.py +--- google_cloud_storage-3.8.0.orig/tests/unit/test_retry.py 2026-01-14 01:41:56.000000000 +0100 ++++ google_cloud_storage-3.8.0/tests/unit/test_retry.py 2026-01-16 10:59:54.746717083 +0100 +@@ -17,7 +17,7 @@ + from google.cloud.storage import _helpers + from google.cloud.storage.exceptions import InvalidResponse + +-import mock ++from unittest import mock + + + class Test_should_retry(unittest.TestCase): +diff -Nru google_cloud_storage-3.8.0.orig/tests/unit/test__signing.py google_cloud_storage-3.8.0/tests/unit/test__signing.py +--- google_cloud_storage-3.8.0.orig/tests/unit/test__signing.py 2026-01-14 01:41:56.000000000 +0100 ++++ google_cloud_storage-3.8.0/tests/unit/test__signing.py 2026-01-16 10:59:54.714434821 +0100 +@@ -23,7 +23,7 @@ + import unittest + import urllib.parse + +-import mock ++from unittest import mock + import pytest + + from google.cloud.storage._helpers import _UTC +diff -Nru google_cloud_storage-3.8.0.orig/tests/unit/test_transfer_manager.py google_cloud_storage-3.8.0/tests/unit/test_transfer_manager.py +--- google_cloud_storage-3.8.0.orig/tests/unit/test_transfer_manager.py 2026-01-14 01:41:56.000000000 +0100 ++++ google_cloud_storage-3.8.0/tests/unit/test_transfer_manager.py 2026-01-16 10:59:54.744589019 +0100 +@@ -25,7 +25,7 @@ + + import os + import tempfile +-import mock ++from unittest import mock + import pickle + + BLOB_TOKEN_STRING = "blob token" diff --git a/google_cloud_storage-3.8.0.tar.gz b/google_cloud_storage-3.8.0.tar.gz new file mode 100644 index 0000000..7fb0411 --- /dev/null +++ b/google_cloud_storage-3.8.0.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cc67952dce84ebc9d44970e24647a58260630b7b64d72360cedaf422d6727f28 +size 17273792 diff --git a/google_cloud_storage-3.9.0.tar.gz b/google_cloud_storage-3.9.0.tar.gz new file mode 100644 index 0000000..ecb2f6a --- /dev/null +++ b/google_cloud_storage-3.9.0.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f2d8ca7db2f652be757e92573b2196e10fbc09649b5c016f8b422ad593c641cc +size 17298544 diff --git a/python-google-cloud-storage.changes b/python-google-cloud-storage.changes new file mode 100644 index 0000000..2ec2922 --- /dev/null +++ b/python-google-cloud-storage.changes @@ -0,0 +1,721 @@ +------------------------------------------------------------------- +Wed Mar 4 10:17:25 UTC 2026 - John Paul Adrian Glaubitz + +- Update to 3.9.0 + * add get_object method for async grpc client (#1735) + * expose `DELETE_OBJECT` in `AsyncGrpcClient` (#1718) + * update generation for MRD (#1730) + * Move Zonal Buckets features of `_experimental` (#1728) + * add default user agent for grpc (#1726) + * expose finalized_time in blob.py applicable for GET_OBJECT in ZB (#1719) + * add context manager to mrd (#1724) + * integrate writes strategy and appendable object writer (#1695) + * Add support for opening via `write_handle` and fix `write_handle` type (#1715) + * Add micro-benchmarks for writes comparing standard (regional) vs rapid (zonal) buckets. (#1707) + * Add micro-benchmarks for reads comparing standard (regional) vs rapid (zonal) buckets. (#1697) + * send `user_agent` to grpc channel (#1712) + * add samples for appendable objects writes and reads (#1705) + * add samples for appendable objects writes and reads + * add support for `generation=0` to avoid overwriting existing + objects and add `is_stream_open` support (#1709) + * add support for `generation=0` to prevent overwriting existing objects + * add `is_stream_open` property to AsyncAppendableObjectWriter for stream status check + * receive eof while closing reads stream (#1733) + * Change contructors of MRD and AAOW AsyncGrpcClient.grpc_client to AsyncGrpcClient (#1727) + * instance grpc client once per process in benchmarks (#1725) + * update write handle on every recv() (#1716) + * Fix formatting in setup.py dependencies list (#1713) + * implement requests_done method to signal end of requests in async streams. + Gracefully close streams. (#1700) + * implement requests_done method to signal end of requests in async streams. + Gracefully close streams. + +------------------------------------------------------------------- +Fri Jan 16 13:44:36 UTC 2026 - John Paul Adrian Glaubitz + +- Fix incorrect Python package names in Requires + +------------------------------------------------------------------- +Fri Jan 16 13:04:01 UTC 2026 - John Paul Adrian Glaubitz + +- Update to 3.8.0 + * flush the last chunk in append method (#1699) + * add write resumption strategy (#1663) + * add bidi stream retry manager. (#1632) + * implement "append_from_file" (#1686) + * make flush size configurable (#1677) + * compute chunk wise checksum for bidi_writes (#1675) + * expose persisted size in mrd (#1671) + * add system test for opening with read_handle (#1672) + * no state lookup while opening bidi-write stream (#1636) + * close write object stream always (#1661) +- from version 3.7.0 + * Auto enable mTLS when supported certificates are detected (#1637) + * Send entire object checksum in the final api call of resumable upload (#1654) + * Support urllib3 >= 2.6.0 (#1658) + * Fix for move_blob failure when the new blob name contains characters that + need to be url encoded (#1605) +- from version 3.6.0 + * Add support for partial list buckets (#1606) + * Make return_partial_success and unreachable fields public for list Bucket (#1601) + * **zb-experimental:** Add async write object stream + * **zb-experimental:** Add async write object stream (#1612) + * Dont pass credentials to StorageClient (#1608) +- from version 3.5.0 + * **experimental:** Add base resumption strategy for bidi streams (#1594) + * **experimental:** Add checksum for bidi reads operation (#1566) + * **experimental:** Add read resumption strategy (#1599) + * **experimental:** Handle BidiReadObjectRedirectedError for bidi reads (#1600) + * Indicate that md5 is used as a CRC (#1522) + * Provide option to update user_agent (#1596) + * Deprecate credentials_file argument + * Flaky system tests for resumable_media (#1592) + * Make `download_ranges` compatible with `asyncio.create_task(..)` (#1591) + * Make `download_ranges` compatible with `asyncio.create_task(..)` (#1591) + * Redact sensitive data from OTEL traces and fix env var parsing (#1553) + * Redact sensitive data from OTEL traces and fix env var parsing (#1553) + * Use separate header object for each upload in Transfer Manager MPU (#1595) +- Refresh demock.patch +- Update BuildRequires and Requires from setup.py + +------------------------------------------------------------------- +Mon Oct 20 09:09:39 UTC 2025 - John Paul Adrian Glaubitz + +- Update to 3.4.1 + * Fixes (#1561) by adding an option to specify the entire object checksum + for resumable uploads via the `upload_from_string`, `upload_from_file`, + and `upload_from_filename` methods. +- from version 3.4.0 + * **experimental:** Add async grpc client (#1537) + * **experimental:** Add grpc client (#1533) + * GAPIC generation failed with 'Directory not empty' (#1542) +- Adjust python folder names in %files section + +------------------------------------------------------------------- +Fri Sep 5 10:06:05 UTC 2025 - John Paul Adrian Glaubitz + +- Update to 3.3.1 + * Provide option to user to set entire object checksum at "initiate + a resumable upload session" and send the same (#1525) + * Send part's checksum for XML MPU part upload (#1529) +- from version 3.3.0 + * Add support for bucket IP filter (#1516) + * Add logs on AssertionError for issue (#1512) + * Update the documentation of move_blob function (#1507) +- from version 3.2.0 + * Adding support of single shot download (#1493) +- from version 3.1.1 + * Add a check for partial response data (#1487) + * Add trove classifier for Python 3.13 (0100916) + * **deps:** Require google-crc32c >= 1.1.3 (0100916) + * **deps:** Require protobuf >= 3.20.2, < 7.0.0 (0100916) + * **deps:** Require requests >= 2.22.0 (0100916) + * Remove setup.cfg configuration for creating universal wheels (#1448) + * Resolve issue where pre-release versions of dependencies are installed (0100916) + * Segmentation fault in tink while writing data (#1490) + * Move quickstart to top of readme (#1451) + * Update README to break infinite redirect loop (#1450) +- Add %{python_sitelib}/google/cloud/storage_v2 in %files section +- Update BuildRequires and Requires from setup.py + +------------------------------------------------------------------- +Sat Apr 26 09:45:06 UTC 2025 - John Paul Adrian Glaubitz + +- Update to 3.1.0 + * Add api_key argument to Client constructor (#1441) + * Add Bucket.move_blob() for HNS-enabled buckets (#1431) +- from version 3.0.0 + * The default checksum strategy for uploads has changed from None to "auto" (#1383) + * The default checksum strategy for downloads has changed from "md5" to "auto" (#1383) + * Deprecated positional argument "num_retries" has been removed (#1377) + * Deprecated argument "text_mode" has been removed (#1379) + * Blob.download_to_filename() now deletes the empty destination file on a 404 (#1394) + * Media operations now use the same retry backoff, timeout and custom predicate system + as non-media operations, which may slightly impact default retry behavior (#1385) + * Retries are now enabled by default for uploads, blob deletes and blob metadata updates (#1400) + * Add "auto" checksum option and make default ([1383) + * Blob.download_to_filename() deletes the empty destination file on a 404 (#1394) + * Enable custom predicates for media operations (#1385) + * Integrate google-resumable-media (#1283) + * Retry by default for uploads, blob deletes, metadata updates (#1400) + * Cancel upload when BlobWriter exits with exception (#1243) + * Changed name of methods `Blob.from_string()` and `Bucket.from_string()` to `from_uri()` (#1335) + * Correctly calculate starting offset for retries of ranged reads (#1376) + * Filter download_kwargs in BlobReader (#1411) + * Remove deprecated num_retries argument (#1377) + * Remove deprecated text_mode argument (#1379) + * Correct formatting and update README.rst (#1427) + * Fix issue with exceptions.py documentation (#1328) +- Refresh demock.patch +- Update BuildRequires and Requires from setup.py + +------------------------------------------------------------------- +Thu Dec 5 08:59:33 UTC 2024 - Matej Cepl + +- Update to 2.19.0: + - Features + - Add integration test for universe domain + - Add restore_bucket and handling for soft-deleted buckets + - Add support for restore token + - IAM signBlob retry and universe domain support + - Bug Fixes + - Allow signed post policy v4 with service account and token + - Do not spam the log with checksum related INFO messages + when downloading using transfer_manager +- Update to 2.18.2: + - Bug Fixes + - Add regression test for range read retry issue and bump + dependency to fix +- Update to 2.18.1: + - Bug Fixes + - Properly escape URL construction for XML MPU API +- Update to 2.18.0: + - Features + - Add OpenTelemetry Tracing support as a preview feature + - Bug Fixes + - Allow Protobuf 5.x + - Correct notification error message +- Update to 2.17.0: + - Features + - Support HNS enablement in bucket metadata + - Support page_size in bucket.list_blobs + - Bug Fixes + - Remove deprecated methods in samples and tests + - Documentation + - Reference Storage Control in readme + - Update DEFAULT_RETRY_IF_GENERATION_SPECIFIED docstrings +- Update to 2.16.0: + - Features + - Add support for soft delete + - Support includeFoldersAsPrefixes +- Update to 2.15.0: + - Features + - Support custom universe domains/TPC + - Bug Fixes + - Add "updated" as property for Bucket + - Remove utcnow usage + +------------------------------------------------------------------- +Tue Mar 5 20:27:04 UTC 2024 - Robert Schweikert + +- Obsolete Python 3.6 build for SLE 15 SP4 and openSUSE Leap 15.4 and later + +------------------------------------------------------------------- +Mon Feb 26 23:54:23 UTC 2024 - Robert Schweikert + +- Version update in SLE 15 SP4 and later (jsc#PED-6697) + +------------------------------------------------------------------- +Tue Dec 19 17:05:18 UTC 2023 - Daniel Garcia + +- Fix tests, setting GOOGLE_CLOUD_PROJECT environment variable. +- Add fake default credentials to fix tests + +------------------------------------------------------------------- +Sat Dec 16 19:22:43 UTC 2023 - Dirk Müller + +- update to 2.14.0: + * Add support for Python 3.12 + * Support object retention lock + * Clarify error message and docstrings in Blob class method + * Propagate timeout in BlobWriter + * Use native namespace to avoid pkg_resources warnings + +------------------------------------------------------------------- +Fri Nov 24 13:54:17 UTC 2023 - John Paul Adrian Glaubitz + +- Update to 2.13.0 + * Add Autoclass v2.1 support (#1117) + * Add support for custom headers (#1121) + * Blob.from_string parse storage uri with regex (#1170) + * Bucket.delete(force=True) now works with version-enabled buckets (#1172) + * Fix typo in Bucket.clear_lifecycle_rules() (#1169) + * Fix exception field in tm reference docs (#1164) +- from version 2.12.0 + * Add additional_blob_attributes to upload_many_from_filenames (#1162) + * Add crc32c_checksum argument to download_chunks_concurrently (#1138) + * Add skip_if_exists to download_many (#1161) + * Launch transfer manager to GA (#1159) + * Bump python-auth version to fix issue and remove workaround (#1158) + * Mark _deprecate_threads_param as a wrapper to unblock introspection and docs (#1122) + * Add snippets for upload_chunks_concurrently and add chunk_size (#1135) + * Update formatting and wording in transfer_manager docstrings (#1163) +- from version 2.11.0 + * Add gccl-gcs-cmd field to X-Goog-API-Client header for Transfer Manager calls (#1119) + * Add transfer_manager.upload_chunks_concurrently using the XML MPU API (#1115) + * Support configurable retries in upload_chunks_concurrently (#1120) + * Split retention period tests due to caching change (#1068) + * Add Transfer Manager documentation in c.g.c (#1109) +- Refresh patches for new version + * demock.patch +- Update BuildRequires and Require from setup.py + +------------------------------------------------------------------- +Wed Jun 28 12:25:01 UTC 2023 - John Paul Adrian Glaubitz + +- Update to 2.10.0 + * Add matchGlob parameter to list_blobs (#1055) + * Allow exceptions to be included in batch responses (#1043) + * Extend wait for bucket metadata consistency in system tests (#1053) + * Add clarification to batch module (#1045) + +------------------------------------------------------------------- +Wed May 10 09:15:20 UTC 2023 - Matej Cepl + +- Update to 2.9.0: + - Un-deprecate blob.download_to_file(), bucket.create(), and bucket.list_blobs() + - Avoid pickling processed credentials + - Improve test error message for missing credentials + - Add sample and sample test for transfer manager + - Remove threads in transfer manager samples + +------------------------------------------------------------------- +Thu Mar 30 10:04:38 UTC 2023 - John Paul Adrian Glaubitz + +- Update to 2.8.0 + * Add multiprocessing and chunked downloading to transfer manager (#1002) + * Add trove classifier for python 3.11 (#971) + * Remove use of deprecated cgi module (#1006) + * Add clarifications to read timeout (#873) + * Fix c.g.c structure (#982) + * Update c.g.c docs and guides (#994) +- Refresh patches for new upstream version + * demock.patch + +------------------------------------------------------------------- +Fri Jan 6 10:59:03 UTC 2023 - John Paul Adrian Glaubitz + +- Update to 2.7.0 + * Add "transfer_manager" module for concurrent uploads and + downloads, as a preview feature (#943) + * Add use_auth_w_custom_endpoint support (#941) + * Implement closed property on fileio.py classes (#907) + +------------------------------------------------------------------- +Wed Nov 16 15:38:28 UTC 2022 - John Paul Adrian Glaubitz + +- Update to 2.6.0 + Features + * Add Autoclass support and samples (#791), closes (#797) + * Add predefined_acl to create_resumable_upload_session (#878) + * Enable delete_blobs() to preserve generation (#840), closes (#814) + * Make tests run against environments other than prod (#883) + Bug Fixes + * Align bucket bound hostname url builder consistency (#875) + * BlobWriter.close() will do nothing if already closed (#887) + * Remove client side validations (#868) + Documentation + * Update comments in list_blobs sample (#866) + * Clarify prefixes entity in list_blobs usage (#837) + * Streamline docs for migration (#876) + * Update docstring for lifecycle_rules to match generator behavior (#841) + +------------------------------------------------------------------- +Tue Sep 13 09:50:40 UTC 2022 - John Paul Adrian Glaubitz + +- Update to 2.5.0 + * Custom Placement Config Dual Region Support (#819) + * open file-like objects in byte mode for uploads (#824) + +------------------------------------------------------------------- +Thu Jun 9 10:17:20 UTC 2022 - pgajdos@suse.com + +- version update to 2.4.0 + Features + * add AbortIncompleteMultipartUpload lifecycle rule (#765) (b2e5150) + * support OLM Prefix/Suffix (#773) (187cf50) + Bug Fixes + * fix rewrite object in CMEK enabled bucket (#807) (9b3cbf3) + Documentation + * fix changelog header to consistent size (#802) (4dd0907) + * samples: Update the Recovery Point Objective (RPO) sample output (#725) (b0bf411) + * Update generation_metageneration.rst with a missing space (#798) (1e7cdb6) + * update retry docs (#808) (c365d5b) +- test in _multibuild +- modified patches + % demock.patch (rebased) +- deleted patches + - no-relative-imports.patch (upstreamed) +- added sources + + _multibuild + +------------------------------------------------------------------- +Sat Apr 23 09:49:04 UTC 2022 - Matej Cepl + +- Limit %files list a bit tighter. + +------------------------------------------------------------------- +Fri Apr 15 08:55:20 UTC 2022 - Matej Cepl + +- Update to 2.3.0: + - add dual region bucket support and sample + - track invocation id for retry metrics + - deps: drop pkg_resources + - fix links in blob module +- Add patches: + - no-relative-imports.patch to allow running the test suite + with pytest (gh#googleapis/python-storage#772) + - demock.patch to remove dependency on the external package + mock (gh#googleapis/python-storage#770) + +------------------------------------------------------------------- +Wed Apr 13 10:13:58 UTC 2022 - John Paul Adrian Glaubitz + +- Update to 2.2.1 + Bug Fixes + * remove py.typed marker file for PEP 561 (#735), closes (#734) +- from version 2.2.0 + Features + * allow no project in client methods using storage emulator (#703) + Bug Fixes + * add user agent in python-storage when calling resumable media (c7bf615) + * **deps:** require google-api-core>=1.31.5, >=2.3.2 (#722) (e9aab38) + * Fix BlobReader handling of interleaved reads and seeks (#721) (5d1cfd2) + * retry client side requests timeout (#727) (e0b3b35) + Documentation + * fixed download_blob_to_file example (#704) (2c94d98) +- from 2.1.0 + Features + * add turbo replication support and samples (#622) (4dafc81) + * avoid authentication with storage emulator (#679) (8789afa) + * remove python 3.6 support (#689) (8aa4130) +- from version 2.0.0 + BREAKING CHANGES + * Remove Python 2 support (#657) + Features + * Remove Python 2 support (#657) (b611670) +- from version 1.44.0 + Features + * add raw_download kwarg to BlobReader (#668) (10cdad6) + Documentation + * Describe code sample more specifically (#660) (0459cb4) + * refresh readme instructions (#667) (ceb9314) + * This is just a simple PR to better describe what the code + is doing in the comments. (0459cb4) + * use writeable streamin example for 'download_blob_to_file' (#676) (96092d4) +- from version 1.43.0 + Features + * add ignore_flush parameter to BlobWriter (#644) (af9c9dc) + * add support for Python 3.10 (#615) (f81a2d0) + Bug Fixes + * raise a ValueError in BucketNotification.create() if a topic + name is not set (#617) (9dd78df) + Documentation + * add contributing and authoring guides under samples/ (#633) (420591a) + * add links to samples and how to guides (#641) (49f78b0) + * add README to samples subdirectory (#639) (58af882) + * update samples readme with cli args (#651) (75dda81) +- from 1.42.3 + Bug Fixes + * changeover unspecified to inherited (#603) (283a419) + * check response code in batch.finish (#609) (318a286) + * skip tests that use unspecified pap until we get the change in (#600) (38b9b55) +- from version 1.42.2 + Bug Fixes + * add preconditions and retry config support to ACL patch operationss (#586) (4333caf) + * add unpinned protobuf for python3 (#592) (53f7ad0) + * pin six as a required dependency (#589) (9ca97bf) +- from version 1.42.1 + Bug Fixes + * do not append duplicates to user agent string (#570) (57cf3a1) + Documentation + * pass explicit 'client' in '{Blob.Bucket}.from_string' examples (#545) (6eff22d) +- from version 1.42.0 + Features + * add 'page_size' parameter to 'Bucket.list_blobs, list_buckets (#520) (c5f4ad8) + Bug Fixes + * **deps:** add explicit ranges for 'google-api-core' and 'google-auth' (#530) (310f207) + * downloading no longer marks metadata fields as 'changed' (#523) (160d1ec) + * make 'requests.exceptions.ChunkedEncodingError retryable by default (#526) (4abb403) + Documentation + * update supported / removed Python versions in README (#519) (1f1b138) +- from version 1.41.1 + Bug Fixes + * **deps:** pin `{api,cloud}-core`, `auth` to allow 2.x versions on Python 3 (#512) (4d7500e) + * remove trailing commas from error message constants (#505) (d4a86ce) + Documentation + * replace usage of deprecated function `download_as_string` in docs (#508) (8dfa4d4) +- from version 1.41.0 + Features + * add support for Etag headers on reads (#489) (741d3fd) + Bug Fixes + * **deps:** update minimum dependency versions to pick up bugfixes (#496) (92251a5) + * populate etag / generation / metageneration properties during download (#488) (49ba14c) + * revise and rename is_etag_in_json(data) (#483) (0a52546) +- from version 1.40.0 + Features + * add preconditions and retry configuration to blob.create_resumable_upload_session (#484) (0ae35ee) + * add public access prevention to bucket IAM configuration (#304) (e3e57a9) + Bug Fixes + * replace default retry for upload operations (#480) (c027ccf) +- from version 1.39.0 + Features + * media operation retries can be configured using the same interface + as with non-media operation (#447) (0dbbb8a) + Bug Fixes + * add ConnectionError to default retry (#445) (8344253) + * apply idempotency policies for ACLs (#458) (2232f38) + * replace python lifecycle action parsing ValueError with warning (#437) (2532d50) + * revise blob.compose query parameters `if_generation_match` (#454) (70d19e7) + Documentation + * streamline 'timeout' / 'retry' docs in docstrings (#461) (78b2eba) + * streamline docstrings for conditional parmas (#464) (6999370) +- Drop patches for issues fixed upstream + * no-network.patch + * no-sic.patch +- Refresh patches for new upstream version + * no-relative-imports.patch +- Update BuildRequires and Require from setup.py + +------------------------------------------------------------------- +Thu Sep 30 09:19:18 UTC 2021 - Matej Cepl + +- Add no-relative-imports.patch to fix relative imports. + +------------------------------------------------------------------- +Thu Sep 30 09:04:12 UTC 2021 - Steve Kowalik + +- Copy the testsuite before we run it to avoid import problems. +- Remove horrible workarounds creating __init__.py and then removing them. +- Drop Requires on python-google-filesystem. + +------------------------------------------------------------------- +Tue Jun 22 06:34:36 UTC 2021 - Steve Kowalik + +- Correct Requires to googleapis-common-protos. +- Add Requires on python-google-filesystem, and stop including a file it + now ships. + +------------------------------------------------------------------- +Fri Jun 4 07:09:47 UTC 2021 - Matej Cepl + +- Update to 1.38.0: + - add getters and setters for encryption_key and kms_key_name + - retry auth.TransportError errors + - revise docstrings for generate_signed_url + - Ensure consistency check in test runs even if expected error + occurs + - silence expected errors for routine operations on BlobReader + - add blob.open() for file-like I/O + - update user_project usage and documentation in bucket/client + class methods + - update batch connection to request api endpoint info from + client + - allow metadata keys to be cleared + - allow signed url version v4 without signed credentials + - correctly encode bytes for V2 signature + - add mtls support + - correctly decode times without microseconds + - expose num_retries parameter for blob upload methods + - pass the unused parameter + - set custom_time on uploads + - address incorrect usage of request preconditions + - Amend default retry behavior for bucket operations on client + - support ConnectionError retries for media operations + - make retry parameter public and added in other methods + - avoid triggering global logging config + - fall back to 'charset' of 'content_type' in + 'download_as_text' + - fix conditional retry handling of camelCase query params + - retry uploads only conditionally + - update 'custom_time' setter to record change + - add testing support for Python 3.9, drop Python 3.5 + - use passed-in client within Blob.from_string and helpers + - preserve metadata value when uploading new file content + - retry API calls with exponential backoff + - field policy return string + - self-upload files for Unicode system test + - use version.py for versioning, avoid issues with discovering + version via get_distribution + - preserve existing blob hashes when 'X-Goog-Hash header' is + not present + - blob: base64 includes additional characters + - add configurable checksumming for blob uploads and downloads + - add support for 'Blob.custom_time' and lifecycle rules + - error message return from api + - storage: add support of daysSinceNoncurrentTime and + noncurrentTimeBefore + - pass 'client_options' to base class ctor + - rename 'Blob.download_as_{string,bytes}', add + 'Blob.download_as_text' + - change datetime.now to utcnow + - extract hashes correctly during download + - add timeouts to Blob methods where missing + - auto-populate standard headers for non-chunked downloads + - migrate to Service Account Credentials API + - add multiprocessing.rst to synthool excludes +- Fix URL to the correct https://github.com/googleapis/python-storage +- Add no-network.patch marking tests requiring network access + (gh#googleapis/python-storage#457). +- Add no-sic.patch to work even with old setuptools and packaging + packages. + +------------------------------------------------------------------- +Tue Apr 13 19:30:16 UTC 2021 - Robert Schweikert + +- Skip Python 2 build as dependencies are no longer built for Python 2 either + +------------------------------------------------------------------- +Mon Jun 29 19:15:38 UTC 2020 - Sean Marlow + +- Update to 1.23.0: + * Move create_bucket implementation from Bucket to Client. + * Add opt-in raw download support. + * Fix query-string order dependent assert. + * Normalize VPCSC configuration in system tests. +- Update to 1.22.0: + * Add UBLA attrs to IAMConfiguration. +- Update to 1.21.0: + * Add gcloud-python header to user agent. + * Don't report a gapic version for storage. + * Update storage endpoint from www.googleapis.com to + storage.googleapis.com. + * Call anonymous client method to remove dependency of google + application credentials. + * Enable CSEK w/ V4 signed URLs. + * Support predefined ACLs in Bucket.create. +- Update to 1.20.0: + * Add user_project param to HMAC-related methods. + * Add Blob.from_string and Bucket.from_string factories. + * Add support for STORAGE_EMULATOR_HOST; add benchwrapper script. + +------------------------------------------------------------------- +Mon Jun 29 15:55:00 UTC 2020 - Sean Marlow + +- Update version requirement for mock package. + + The tests require at least version 3.0.0. + +------------------------------------------------------------------- +Thu Jun 18 10:41:05 UTC 2020 - John Paul Adrian Glaubitz + +- Update to 1.29.0 + + Features + * add *generation*match args into Blob.compose() (#122) + * add Bucket.reload() and Bucket.update() wrappers to restrict + generation match args (#153), closes (#127) + * add helper for bucket bound hostname URLs (#137), closes (#121) + * add if*generation*match support for Bucket.rename_blob() (#141) + * add if*generation*Match support, pt1 (#123) + * add offset and includeTrailingPrefix options to list_blobs (#125) + * Create CODEOWNERS (#135) + + Bug Fixes + * **storage:** add documentaion of list_blobs with user project (#147) + * **storage:** add projection parameter to blob.reload method (#146) + * **storage:** add unused variables to method generation match (#152) + * **storage:** change the method names in snippets file (#161) + * **storage:** fix upload object with bucket cmek enabled (#158) + * set default POST policy scheme to "http" (#172) +- from version 1.28.0 + + Bug Fixes + * **storage:** anonymous credentials for private bucket (#107) + * add bucket name into POST policy conditions (#118) + +------------------------------------------------------------------- +Tue Apr 28 07:48:26 UTC 2020 - Tomáš Chvátal + +- Update to 1.28.0: + * Many various bugfixes all around + * Updated dependency requirements + +------------------------------------------------------------------- +Thu Sep 26 13:51:51 UTC 2019 - Tomáš Chvátal + +- Update to 1.19.1: + * Minor bugfix over previous release + +------------------------------------------------------------------- +Thu Sep 12 10:18:12 UTC 2019 - Tomáš Chvátal + +- Update to 1.19.0: + * Huge range of updates and tweaks, mostly bugfixing + +------------------------------------------------------------------- +Thu May 16 23:24:53 UTC 2019 - Guang Yee + +- Update to version 1.15.1 + * Widen range for 'google-cloud-core' + +- Update to version 1.15.0 + * New Features + - Add support for V4 signed URLs + - Add generation arguments to bucket / blob methods + * Implementation Changes + - Remove classifier for Python 3.4 for end-of-life + - Ensure that 'Blob.reload' passes encryption headers + * Documentation + - Update client library documentation URLs + * Iternal / Testing Changes + - Fix failing system tests + - Increase number of retries for 429 errors + - Un-flake KMS integration tests expecting empty bucket + +------------------------------------------------------------------- +Mon Feb 18 08:05:01 UTC 2019 - John Vandenberg + +- Activate test suite +- Increase minimum versions: + * google-api-core >= 0.6.1 + * google-cloud-core >= 0.29.0 +- Adds new dependency google-cloud-kms +- Update to version 1.14.0 + * New Features + - Add 'Bucket.iam_configuration' property, enabling Bucket-Policy-Only. + * Documentation + - Improve docs for 'generate_signed_url' +- from 1.13.2 + * Implementation Changes + - Update Blob.update_storage_class to support rewrite tokens. + * Internal / Testing Changes + - Skip signing tests for insufficient credentials + - Document Python 2 deprecation + - Normalize docs for page_size / max_results / page_token. +- from 1.13.1 + * Implementation Changes + - Import iam.policy from google.api_core. + - Accomodate new back-end restriction on retention period. + - Avoid deleting a blob renamed to itself + * Dependencies + - Update dependency to google-cloud-core + - Bump minimum api_core version for all GAPIC libs to 1.4.1. + * Documentation + - Normalize use of support level badges + * Internal / Testing Changes + - Blacken libraries + - Add templates for flake8, coveragerc, noxfile, and black. + - Harden teardown in system tests. + - Harden create_bucket call in systests vs. 429 TooManyRequests. + - Skip public bucket test in VPC Service Controls + - Fix lint failure. + - Disable test running in VPC Service Controls restricted environment + - Use new Nox +- from 1.13.0 + * New Features + - Add support for bucket retention policies + - Allow destination.content_type to be None in Blob.compose. + * Implementation Changes + - Ensure that method for Blob.generate_signed_url is uppercase. + * Documentation + - Clarify GCS URL signing limitations on GCE + - Redirect renamed 'usage.html'/'client.html' -> 'index.html'. +- from 1.12.0 + * New Features + - Add support for Python 3.7, drop support for Python 3.4. + - Add lifecycle rules helpers to bucket. + * Implementation Changes + - Add 'stacklevel=2' to deprecation warnings. + * Documentation + - Storage docs: fix typos. + - Prep storage docs for repo split. + * Internal / Testing Changes + - Harden systest teardown further. + - Nox: use inplace installs + +------------------------------------------------------------------- +Tue Dec 4 12:48:39 UTC 2018 - Matej Cepl + +- Remove superfluous devel dependency for noarch package + +------------------------------------------------------------------- +Fri May 18 04:42:37 UTC 2018 - tbechtold@suse.com + +- Initial packaging (version 1.11.0) diff --git a/python-google-cloud-storage.spec b/python-google-cloud-storage.spec new file mode 100644 index 0000000..260b1a1 --- /dev/null +++ b/python-google-cloud-storage.spec @@ -0,0 +1,142 @@ +# +# spec file for package python-google-cloud-storage +# +# Copyright (c) 2026 SUSE LLC and contributors +# +# All modifications and additions to the file contributed by third parties +# remain the property of their copyright owners, unless otherwise agreed +# upon. The license for this file, and modifications and additions to the +# file, is the same license as for the pristine package itself (unless the +# license for the pristine package is not an Open Source License, in which +# case the license is the MIT License). An "Open Source License" is a +# license that conforms to the Open Source Definition (Version 1.9) +# published by the Open Source Initiative. + +# Please submit bugfixes or comments via https://bugs.opensuse.org/ +# + + +%define skip_python2 1 +%global flavor @BUILD_FLAVOR@%{nil} +%if "%{flavor}" == "test" +%define test 1 +%define pkg_suffix -test +%bcond_without test +%else +%define pkg_suffix %{nil} +%bcond_with test +%endif +%{?sle15_python_module_pythons} +Name: python-google-cloud-storage%{pkg_suffix} +Version: 3.9.0 +Release: 0 +Summary: Google Cloud Storage API python client library +License: Apache-2.0 +URL: https://github.com/googleapis/python-storage +Source: https://files.pythonhosted.org/packages/source/g/google-cloud-storage/google_cloud_storage-%{version}.tar.gz +# PATCH-FIX-UPSTREAM demock.patch gh#googleapis/python-storage#770 mcepl@suse.com +# Don’t use external mock package +Patch1: demock.patch +BuildRequires: %{python_module grpcio >= 1.33.2 if %python-base < 3.14} +BuildRequires: %{python_module grpcio >= 1.75.1 if %python-base >= 3.14} +BuildRequires: %{python_module pip} +BuildRequires: %{python_module proto-plus >= 1.22.3 if %python-base < 3.13} +BuildRequires: %{python_module proto-plus >= 1.25.0 if %python-base >= 3.13} +BuildRequires: %{python_module setuptools} +BuildRequires: %{python_module wheel} +BuildRequires: fdupes +BuildRequires: python-rpm-macros +%if %python_version_nodots < 314 +Requires: python-grpcio >= 1.33.2 +%else +Requires: python-grpcio >= 1.75.1 +%endif +%if %python_version_nodots < 313 +Requires: python-proto-plus >= 1.22.3 +%else +Requires: python-proto-plus >= 1.25.0 +%endif +Requires: python-google-api-core >= 2.27.0 +Requires: python-google-auth >= 2.26.1 +Requires: python-google-cloud-core >= 2.4.2 +Requires: python-google-crc32c >= 1.1.3 +Requires: python-google-resumable-media >= 2.7.2 +Requires: python-googleapis-common-protos +Requires: python-requests >= 2.22.0 +BuildArch: noarch +%if 0%{?sle_version} >= 150400 +Obsoletes: python3-google-cloud-storage < %{version} +%endif +# SECTION test requirements +%if %{with test} +BuildRequires: %{python_module google-api-core >= 2.27.0} +BuildRequires: %{python_module google-auth >= 2.26.1} +BuildRequires: %{python_module google-cloud-core >= 2.4.2} +BuildRequires: %{python_module google-cloud-iam >= 0.14.0} +BuildRequires: %{python_module google-cloud-storage} +BuildRequires: %{python_module google-crc32c >= 1.1.3} +BuildRequires: %{python_module google-resumable-media >= 2.7.2} +BuildRequires: %{python_module packaging} +BuildRequires: %{python_module pip} +BuildRequires: %{python_module pytest-asyncio} +BuildRequires: %{python_module pytest} +BuildRequires: %{python_module requests >= 2.22.0} +%endif +# /SECTION +%python_subpackages + +%description +Google Cloud Storage allows you to store data on Google +infrastructure with very high reliability, performance and +availability, and can be used to distribute large data objects +to users via direct download. This package provides client to it. + +%prep +%autosetup -p1 -n google_cloud_storage-%{version} + +%if !%{with test} +%build +%pyproject_wheel +%endif + +%if !%{with test} +%install +%pyproject_install +%python_expand %fdupes %{buildroot}%{$python_sitelib} +%endif + +%if %{with test} +%check +# Set Fake default credentials for tests +mkdir -p $HOME/.config/gcloud +cat > $HOME/.config/gcloud/application_default_credentials.json <