Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-google-api-core for
openSUSE:Factory checked in at 2026-02-24 17:45:32
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-google-api-core (Old)
and /work/SRC/openSUSE:Factory/.python-google-api-core.new.1977 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-google-api-core"
Tue Feb 24 17:45:32 2026 rev:46 rq:1334762 version:2.30.0
Changes:
--------
---
/work/SRC/openSUSE:Factory/python-google-api-core/python-google-api-core.changes
2026-01-19 18:42:45.941628758 +0100
+++
/work/SRC/openSUSE:Factory/.python-google-api-core.new.1977/python-google-api-core.changes
2026-02-24 17:45:34.390264842 +0100
@@ -1,0 +2,8 @@
+Tue Feb 24 13:53:15 UTC 2026 - John Paul Adrian Glaubitz
<[email protected]>
+
+- Update to 2.30.0
+ * preserve exception cause
+ * require Python ≥ 3.9, protobuf ≥ 4.25.8
+- Update BuildRequires from pyproject.toml
+
+-------------------------------------------------------------------
Old:
----
google_api_core-2.29.0.tar.gz
New:
----
google_api_core-2.30.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-google-api-core.spec ++++++
--- /var/tmp/diff_new_pack.ZCixCl/_old 2026-02-24 17:45:35.110294713 +0100
+++ /var/tmp/diff_new_pack.ZCixCl/_new 2026-02-24 17:45:35.114294879 +0100
@@ -26,7 +26,7 @@
%endif
%{?sle15_python_module_pythons}
Name: python-google-api-core
-Version: 2.29.0
+Version: 2.30.0
Release: 0
Summary: Google API client core library
License: Apache-2.0
@@ -55,7 +55,7 @@
Requires: python-grpcio-status >= 1.49.1
Requires: python-requests >= 2.18.0
Requires: (python-proto-plus >= 1.25.0 with python-proto-plus < 2.0.0)
-Requires: (python-protobuf >= 3.19.5 with python-protobuf < 7.0.0)
+Requires: (python-protobuf >= 4.25.8 with python-protobuf < 7.0.0)
BuildArch: noarch
%python_subpackages
++++++ google_api_core-2.29.0.tar.gz -> google_api_core-2.30.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/google_api_core-2.29.0/PKG-INFO
new/google_api_core-2.30.0/PKG-INFO
--- old/google_api_core-2.29.0/PKG-INFO 2026-01-08 23:09:05.462095700 +0100
+++ new/google_api_core-2.30.0/PKG-INFO 2026-02-18 21:24:58.692862000 +0100
@@ -1,18 +1,17 @@
Metadata-Version: 2.4
Name: google-api-core
-Version: 2.29.0
+Version: 2.30.0
Summary: Google API client core library
Author-email: Google LLC <[email protected]>
License: Apache 2.0
+Project-URL: Homepage,
https://github.com/googleapis/google-cloud-python/tree/main/packages/google-api-core
Project-URL: Documentation,
https://googleapis.dev/python/google-api-core/latest/
-Project-URL: Repository, https://github.com/googleapis/python-api-core
+Project-URL: Repository, https://github.com/googleapis/google-cloud-python
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
-Classifier: Programming Language :: Python :: 3.7
-Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
@@ -21,16 +20,15 @@
Classifier: Programming Language :: Python :: 3.14
Classifier: Operating System :: OS Independent
Classifier: Topic :: Internet
-Requires-Python: >=3.7
+Requires-Python: >=3.9
Description-Content-Type: text/x-rst
License-File: LICENSE
-Requires-Dist: googleapis-common-protos<2.0.0,>=1.56.2
-Requires-Dist:
protobuf!=3.20.0,!=3.20.1,!=4.21.0,!=4.21.1,!=4.21.2,!=4.21.3,!=4.21.4,!=4.21.5,<7.0.0,>=3.19.5
+Requires-Dist: googleapis-common-protos<2.0.0,>=1.56.3
+Requires-Dist: protobuf<7.0.0,>=4.25.8
Requires-Dist: proto-plus<2.0.0,>=1.22.3
Requires-Dist: proto-plus<2.0.0,>=1.25.0; python_version >= "3.13"
Requires-Dist: google-auth<3.0.0,>=2.14.1
-Requires-Dist: requests<3.0.0,>=2.18.0
-Requires-Dist: importlib_metadata>=1.4; python_version < "3.8"
+Requires-Dist: requests<3.0.0,>=2.20.0
Provides-Extra: async-rest
Requires-Dist: google-auth[aiohttp]<3.0.0,>=2.35.0; extra == "async-rest"
Provides-Extra: grpc
@@ -40,10 +38,6 @@
Requires-Dist: grpcio-status<2.0.0,>=1.33.2; extra == "grpc"
Requires-Dist: grpcio-status<2.0.0,>=1.49.1; python_version >= "3.11" and
extra == "grpc"
Requires-Dist: grpcio-status<2.0.0,>=1.75.1; python_version >= "3.14" and
extra == "grpc"
-Provides-Extra: grpcgcp
-Requires-Dist: grpcio-gcp<1.0.0,>=0.2.2; extra == "grpcgcp"
-Provides-Extra: grpcio-gcp
-Requires-Dist: grpcio-gcp<1.0.0,>=0.2.2; extra == "grpcio-gcp"
Dynamic: license-file
Core Library for Google Client Libraries
@@ -64,16 +58,19 @@
Supported Python Versions
-------------------------
-Python >= 3.7
+Python >= 3.9
Unsupported Python Versions
---------------------------
-Python == 2.7, Python == 3.5, Python == 3.6.
+Python == 2.7, Python == 3.5, Python == 3.6, Python == 3.7, Python == 3.8.
The last version of this library compatible with Python 2.7 and 3.5 is
`google-api-core==1.31.1`.
The last version of this library compatible with Python 3.6 is
`google-api-core==2.8.2`.
+
+The last version of this library compatible with Python 3.7 and 3.8 is
+`google-api-core==2.29.0`.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/google_api_core-2.29.0/README.rst
new/google_api_core-2.30.0/README.rst
--- old/google_api_core-2.29.0/README.rst 2026-01-08 23:08:42.000000000
+0100
+++ new/google_api_core-2.30.0/README.rst 2026-02-18 21:23:37.000000000
+0100
@@ -16,16 +16,19 @@
Supported Python Versions
-------------------------
-Python >= 3.7
+Python >= 3.9
Unsupported Python Versions
---------------------------
-Python == 2.7, Python == 3.5, Python == 3.6.
+Python == 2.7, Python == 3.5, Python == 3.6, Python == 3.7, Python == 3.8.
The last version of this library compatible with Python 2.7 and 3.5 is
`google-api-core==1.31.1`.
The last version of this library compatible with Python 3.6 is
`google-api-core==2.8.2`.
+
+The last version of this library compatible with Python 3.7 and 3.8 is
+`google-api-core==2.29.0`.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/google_api_core-2.29.0/google/api_core/_python_package_support.py
new/google_api_core-2.30.0/google/api_core/_python_package_support.py
--- old/google_api_core-2.29.0/google/api_core/_python_package_support.py
2026-01-08 23:08:42.000000000 +0100
+++ new/google_api_core-2.30.0/google/api_core/_python_package_support.py
2026-02-18 21:23:37.000000000 +0100
@@ -15,7 +15,6 @@
"""Code to check versions of dependencies used by Google Cloud Client
Libraries."""
import warnings
-import sys
from typing import Optional, Tuple
from collections import namedtuple
@@ -25,12 +24,7 @@
_get_distribution_and_import_packages,
)
-if sys.version_info >= (3, 8):
- from importlib import metadata
-else:
- # TODO(https://github.com/googleapis/python-api-core/issues/835): Remove
- # this code path once we drop support for Python 3.7
- import importlib_metadata as metadata
+from importlib import metadata
ParsedVersion = Tuple[int, ...]
@@ -85,8 +79,7 @@
"""Get the parsed version of an installed package dependency.
This function checks for an installed package and returns its version
- as a comparable tuple of integers object for safe comparison. It handles
- both modern (Python 3.8+) and legacy (Python 3.7) environments.
+ as a comparable tuple of integers object for safe comparison.
Args:
dependency_name: The distribution name of the package (e.g.,
'requests').
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/google_api_core-2.29.0/google/api_core/gapic_v1/method.py
new/google_api_core-2.30.0/google/api_core/gapic_v1/method.py
--- old/google_api_core-2.29.0/google/api_core/gapic_v1/method.py
2026-01-08 23:08:42.000000000 +0100
+++ new/google_api_core-2.30.0/google/api_core/gapic_v1/method.py
2026-02-18 21:23:34.000000000 +0100
@@ -31,9 +31,6 @@
class _MethodDefault(enum.Enum):
# Uses enum so that pytype/mypy knows that this is the only possible value.
# https://stackoverflow.com/a/60605919/101923
- #
- # Literal[_DEFAULT_VALUE] is an alternative, but only added in Python 3.8.
- # https://docs.python.org/3/library/typing.html#typing.Literal
_DEFAULT_VALUE = object()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/google_api_core-2.29.0/google/api_core/grpc_helpers.py
new/google_api_core-2.30.0/google/api_core/grpc_helpers.py
--- old/google_api_core-2.29.0/google/api_core/grpc_helpers.py 2026-01-08
23:08:42.000000000 +0100
+++ new/google_api_core-2.30.0/google/api_core/grpc_helpers.py 2026-02-18
21:23:35.000000000 +0100
@@ -27,26 +27,6 @@
from google.api_core import exceptions, general_helpers
-PROTOBUF_VERSION = google.protobuf.__version__
-
-# The grpcio-gcp package only has support for protobuf < 4
-if PROTOBUF_VERSION[0:2] == "3.": # pragma: NO COVER
- try:
- import grpc_gcp
-
- warnings.warn(
- """Support for grpcio-gcp is deprecated. This feature will be
- removed from `google-api-core` after January 1, 2024. If you need
to
- continue to use this feature, please pin to a specific version of
- `google-api-core`.""",
- DeprecationWarning,
- )
- HAS_GRPC_GCP = True
- except ImportError:
- HAS_GRPC_GCP = False
-else:
- HAS_GRPC_GCP = False
-
# The list of gRPC Callable interfaces that return iterators.
_STREAM_WRAP_CLASSES = (grpc.UnaryStreamMultiCallable,
grpc.StreamStreamMultiCallable)
@@ -366,8 +346,7 @@
result in `ValueError` as this combination is not yet supported.
kwargs: Additional key-word args passed to
- :func:`grpc_gcp.secure_channel` or :func:`grpc.secure_channel`.
- Note: `grpc_gcp` is only supported in environments with protobuf <
4.0.0.
+ :func:`grpc.secure_channel`.
Returns:
grpc.Channel: The created channel.
@@ -393,20 +372,6 @@
default_host=default_host,
)
- # Note that grpcio-gcp is deprecated
- if HAS_GRPC_GCP: # pragma: NO COVER
- if compression is not None and compression !=
grpc.Compression.NoCompression:
- warnings.warn(
- "The `compression` argument is ignored for
grpc_gcp.secure_channel creation.",
- DeprecationWarning,
- )
- if attempt_direct_path:
- warnings.warn(
- """The `attempt_direct_path` argument is ignored for
grpc_gcp.secure_channel creation.""",
- DeprecationWarning,
- )
- return grpc_gcp.secure_channel(target, composite_credentials, **kwargs)
-
if attempt_direct_path:
target = _modify_target_for_direct_path(target)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/google_api_core-2.29.0/google/api_core/retry/retry_base.py
new/google_api_core-2.30.0/google/api_core/retry/retry_base.py
--- old/google_api_core-2.29.0/google/api_core/retry/retry_base.py
2026-01-08 23:08:42.000000000 +0100
+++ new/google_api_core-2.30.0/google/api_core/retry/retry_base.py
2026-02-18 21:23:37.000000000 +0100
@@ -164,8 +164,10 @@
src_exc,
)
elif exc_list:
- # return most recent exception encountered
- return exc_list[-1], None
+ # return most recent exception encountered and its cause
+ final_exc = exc_list[-1]
+ cause = getattr(final_exc, "__cause__", None)
+ return final_exc, cause
else:
# no exceptions were given in exc_list. Raise generic RetryError
return exceptions.RetryError("Unknown error", None), None
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/google_api_core-2.29.0/google/api_core/version.py
new/google_api_core-2.30.0/google/api_core/version.py
--- old/google_api_core-2.29.0/google/api_core/version.py 2026-01-08
23:08:42.000000000 +0100
+++ new/google_api_core-2.30.0/google/api_core/version.py 2026-02-18
21:23:38.000000000 +0100
@@ -12,4 +12,4 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-__version__ = "2.29.0"
+__version__ = "2.30.0"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/google_api_core-2.29.0/google_api_core.egg-info/PKG-INFO
new/google_api_core-2.30.0/google_api_core.egg-info/PKG-INFO
--- old/google_api_core-2.29.0/google_api_core.egg-info/PKG-INFO
2026-01-08 23:09:05.000000000 +0100
+++ new/google_api_core-2.30.0/google_api_core.egg-info/PKG-INFO
2026-02-18 21:24:58.000000000 +0100
@@ -1,18 +1,17 @@
Metadata-Version: 2.4
Name: google-api-core
-Version: 2.29.0
+Version: 2.30.0
Summary: Google API client core library
Author-email: Google LLC <[email protected]>
License: Apache 2.0
+Project-URL: Homepage,
https://github.com/googleapis/google-cloud-python/tree/main/packages/google-api-core
Project-URL: Documentation,
https://googleapis.dev/python/google-api-core/latest/
-Project-URL: Repository, https://github.com/googleapis/python-api-core
+Project-URL: Repository, https://github.com/googleapis/google-cloud-python
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
-Classifier: Programming Language :: Python :: 3.7
-Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
@@ -21,16 +20,15 @@
Classifier: Programming Language :: Python :: 3.14
Classifier: Operating System :: OS Independent
Classifier: Topic :: Internet
-Requires-Python: >=3.7
+Requires-Python: >=3.9
Description-Content-Type: text/x-rst
License-File: LICENSE
-Requires-Dist: googleapis-common-protos<2.0.0,>=1.56.2
-Requires-Dist:
protobuf!=3.20.0,!=3.20.1,!=4.21.0,!=4.21.1,!=4.21.2,!=4.21.3,!=4.21.4,!=4.21.5,<7.0.0,>=3.19.5
+Requires-Dist: googleapis-common-protos<2.0.0,>=1.56.3
+Requires-Dist: protobuf<7.0.0,>=4.25.8
Requires-Dist: proto-plus<2.0.0,>=1.22.3
Requires-Dist: proto-plus<2.0.0,>=1.25.0; python_version >= "3.13"
Requires-Dist: google-auth<3.0.0,>=2.14.1
-Requires-Dist: requests<3.0.0,>=2.18.0
-Requires-Dist: importlib_metadata>=1.4; python_version < "3.8"
+Requires-Dist: requests<3.0.0,>=2.20.0
Provides-Extra: async-rest
Requires-Dist: google-auth[aiohttp]<3.0.0,>=2.35.0; extra == "async-rest"
Provides-Extra: grpc
@@ -40,10 +38,6 @@
Requires-Dist: grpcio-status<2.0.0,>=1.33.2; extra == "grpc"
Requires-Dist: grpcio-status<2.0.0,>=1.49.1; python_version >= "3.11" and
extra == "grpc"
Requires-Dist: grpcio-status<2.0.0,>=1.75.1; python_version >= "3.14" and
extra == "grpc"
-Provides-Extra: grpcgcp
-Requires-Dist: grpcio-gcp<1.0.0,>=0.2.2; extra == "grpcgcp"
-Provides-Extra: grpcio-gcp
-Requires-Dist: grpcio-gcp<1.0.0,>=0.2.2; extra == "grpcio-gcp"
Dynamic: license-file
Core Library for Google Client Libraries
@@ -64,16 +58,19 @@
Supported Python Versions
-------------------------
-Python >= 3.7
+Python >= 3.9
Unsupported Python Versions
---------------------------
-Python == 2.7, Python == 3.5, Python == 3.6.
+Python == 2.7, Python == 3.5, Python == 3.6, Python == 3.7, Python == 3.8.
The last version of this library compatible with Python 2.7 and 3.5 is
`google-api-core==1.31.1`.
The last version of this library compatible with Python 3.6 is
`google-api-core==2.8.2`.
+
+The last version of this library compatible with Python 3.7 and 3.8 is
+`google-api-core==2.29.0`.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/google_api_core-2.29.0/google_api_core.egg-info/requires.txt
new/google_api_core-2.30.0/google_api_core.egg-info/requires.txt
--- old/google_api_core-2.29.0/google_api_core.egg-info/requires.txt
2026-01-08 23:09:05.000000000 +0100
+++ new/google_api_core-2.30.0/google_api_core.egg-info/requires.txt
2026-02-18 21:24:58.000000000 +0100
@@ -1,11 +1,8 @@
-googleapis-common-protos<2.0.0,>=1.56.2
-protobuf!=3.20.0,!=3.20.1,!=4.21.0,!=4.21.1,!=4.21.2,!=4.21.3,!=4.21.4,!=4.21.5,<7.0.0,>=3.19.5
+googleapis-common-protos<2.0.0,>=1.56.3
+protobuf<7.0.0,>=4.25.8
proto-plus<2.0.0,>=1.22.3
google-auth<3.0.0,>=2.14.1
-requests<3.0.0,>=2.18.0
-
-[:python_version < "3.8"]
-importlib_metadata>=1.4
+requests<3.0.0,>=2.20.0
[:python_version >= "3.13"]
proto-plus<2.0.0,>=1.25.0
@@ -24,9 +21,3 @@
[grpc:python_version >= "3.14"]
grpcio<2.0.0,>=1.75.1
grpcio-status<2.0.0,>=1.75.1
-
-[grpcgcp]
-grpcio-gcp<1.0.0,>=0.2.2
-
-[grpcio-gcp]
-grpcio-gcp<1.0.0,>=0.2.2
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/google_api_core-2.29.0/pyproject.toml
new/google_api_core-2.30.0/pyproject.toml
--- old/google_api_core-2.29.0/pyproject.toml 2026-01-08 23:08:42.000000000
+0100
+++ new/google_api_core-2.30.0/pyproject.toml 2026-02-18 21:23:37.000000000
+0100
@@ -20,7 +20,7 @@
name = "google-api-core"
authors = [{ name = "Google LLC", email = "[email protected]" }]
license = { text = "Apache 2.0" }
-requires-python = ">=3.7"
+requires-python = ">=3.9"
readme = "README.rst"
description = "Google API client core library"
classifiers = [
@@ -33,8 +33,7 @@
"License :: OSI Approved :: Apache Software License",
"Programming Language :: Python",
"Programming Language :: Python :: 3",
- "Programming Language :: Python :: 3.7",
- "Programming Language :: Python :: 3.8",
+
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
@@ -45,21 +44,19 @@
"Topic :: Internet",
]
dependencies = [
- "googleapis-common-protos >= 1.56.2, < 2.0.0",
- "protobuf >= 3.19.5, < 7.0.0, != 3.20.0, != 3.20.1, != 4.21.0, != 4.21.1, !=
4.21.2, != 4.21.3, != 4.21.4, != 4.21.5",
+ "googleapis-common-protos >= 1.56.3, < 2.0.0",
+ "protobuf >= 4.25.8, < 7.0.0",
"proto-plus >= 1.22.3, < 2.0.0",
"proto-plus >= 1.25.0, < 2.0.0; python_version >= '3.13'",
"google-auth >= 2.14.1, < 3.0.0",
- "requests >= 2.18.0, < 3.0.0",
- # TODO(https://github.com/googleapis/python-api-core/issues/835): Remove
- # `importlib_metadata` once we drop support for Python 3.7
- "importlib_metadata>=1.4; python_version<'3.8'",
+ "requests >= 2.20.0, < 3.0.0",
]
dynamic = ["version"]
[project.urls]
+Homepage =
"https://github.com/googleapis/google-cloud-python/tree/main/packages/google-api-core"
Documentation = "https://googleapis.dev/python/google-api-core/latest/"
-Repository = "https://github.com/googleapis/python-api-core"
+Repository = "https://github.com/googleapis/google-cloud-python"
[project.optional-dependencies]
async_rest = ["google-auth[aiohttp] >= 2.35.0, < 3.0.0"]
@@ -71,8 +68,7 @@
"grpcio-status >= 1.49.1, < 2.0.0; python_version >= '3.11'",
"grpcio-status >= 1.75.1, < 2.0.0; python_version >= '3.14'",
]
-grpcgcp = ["grpcio-gcp >= 0.2.2, < 1.0.0"]
-grpcio-gcp = ["grpcio-gcp >= 0.2.2, < 1.0.0"]
+
[tool.setuptools.dynamic]
version = { attr = "google.api_core.version.__version__" }
@@ -97,19 +93,12 @@
"ignore:.*The --rsyncdir command line argument and rsyncdirs config variable
are deprecated:DeprecationWarning",
# Remove once https://github.com/protocolbuffers/protobuf/issues/12186 is
fixed
"ignore:.*custom tp_new.*in Python 3.14:DeprecationWarning",
- # Remove once support for python 3.7 is dropped
- # This warning only appears when using python 3.7
- "ignore:.*Using or importing the ABCs from.*collections:DeprecationWarning",
- # Remove once support for grpcio-gcp is deprecated
- # See
https://github.com/googleapis/python-api-core/blob/42e8b6e6f426cab749b34906529e8aaf3f133d75/google/api_core/grpc_helpers.py#L39-L45
- "ignore:.*Support for grpcio-gcp is deprecated:DeprecationWarning",
- "ignore: The `compression` argument is ignored for grpc_gcp.secure_channel
creation:DeprecationWarning",
- "ignore:The `attempt_direct_path` argument is ignored for
grpc_gcp.secure_channel creation:DeprecationWarning",
+
+
# Remove once the minimum supported version of googleapis-common-protos is
1.62.0
"ignore:.*pkg_resources.declare_namespace:DeprecationWarning",
"ignore:.*pkg_resources is deprecated as an API:DeprecationWarning",
# Remove once https://github.com/grpc/grpc/issues/35086 is fixed (and
version newer than 1.60.0 is published)
"ignore:There is no current event loop:DeprecationWarning",
- # Remove after support for Python 3.7 is dropped
- "ignore:After January 1, 2024, new releases of this library will drop
support for Python 3.7:DeprecationWarning",
+
]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/google_api_core-2.29.0/tests/asyncio/test_operation_async.py
new/google_api_core-2.30.0/tests/asyncio/test_operation_async.py
--- old/google_api_core-2.29.0/tests/asyncio/test_operation_async.py
2026-01-08 23:08:42.000000000 +0100
+++ new/google_api_core-2.30.0/tests/asyncio/test_operation_async.py
2026-02-18 21:23:38.000000000 +0100
@@ -181,7 +181,7 @@
async def test_from_gapic():
operation_proto = make_operation_proto(done=True)
operations_client = mock.create_autospec(
- operations_v1.OperationsClient, instance=True
+ operations_v1.OperationsAsyncClient, instance=True
)
future = operation_async.from_gapic(
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/google_api_core-2.29.0/tests/unit/retry/test_retry_base.py
new/google_api_core-2.30.0/tests/unit/retry/test_retry_base.py
--- old/google_api_core-2.29.0/tests/unit/retry/test_retry_base.py
2026-01-08 23:08:42.000000000 +0100
+++ new/google_api_core-2.30.0/tests/unit/retry/test_retry_base.py
2026-02-18 21:23:34.000000000 +0100
@@ -74,6 +74,26 @@
assert src.message == "Unknown error"
+def test_build_retry_error_preserves_cause():
+ """
+ build_retry_error should preserve __cause__ from chained exceptions.
+ """
+ from google.api_core.retry import build_retry_error
+ from google.api_core.retry import RetryFailureReason
+
+ # Create an exception with explicit cause
+ cause = ValueError("root cause")
+ exc = RuntimeError("wrapper")
+ exc.__cause__ = cause
+
+ src, found_cause = build_retry_error(
+ [exc], RetryFailureReason.NON_RETRYABLE_ERROR, None
+ )
+
+ assert src is exc
+ assert found_cause is cause
+
+
def test_build_retry_error_timeout_message():
"""
should provide helpful error message when timeout is reached
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/google_api_core-2.29.0/tests/unit/test_grpc_helpers.py
new/google_api_core-2.30.0/tests/unit/test_grpc_helpers.py
--- old/google_api_core-2.29.0/tests/unit/test_grpc_helpers.py 2026-01-08
23:08:42.000000000 +0100
+++ new/google_api_core-2.30.0/tests/unit/test_grpc_helpers.py 2026-02-18
21:23:36.000000000 +0100
@@ -404,16 +404,9 @@
google_auth_default.assert_called_once_with(scopes=None,
default_scopes=None)
- if grpc_helpers.HAS_GRPC_GCP: # pragma: NO COVER
- # The original target is the expected target
- expected_target = target
- grpc_secure_channel.assert_called_once_with(
- expected_target, composite_creds, None
- )
- else:
- grpc_secure_channel.assert_called_once_with(
- expected_target, composite_creds, compression=grpc.Compression.Gzip
- )
+ grpc_secure_channel.assert_called_once_with(
+ expected_target, composite_creds, compression=grpc.Compression.Gzip
+ )
@pytest.mark.parametrize(
@@ -463,16 +456,9 @@
mock.sentinel.credentials, mock.sentinel.Request,
default_host=default_host
)
- if grpc_helpers.HAS_GRPC_GCP: # pragma: NO COVER
- # The original target is the expected target
- expected_target = target
- grpc_secure_channel.assert_called_once_with(
- expected_target, composite_creds, None
- )
- else:
- grpc_secure_channel.assert_called_once_with(
- expected_target, composite_creds, compression=None
- )
+ grpc_secure_channel.assert_called_once_with(
+ expected_target, composite_creds, compression=None
+ )
@pytest.mark.parametrize(
@@ -505,12 +491,9 @@
composite_creds_call.assert_called_once_with(ssl_creds, mock.ANY)
composite_creds = composite_creds_call.return_value
- if grpc_helpers.HAS_GRPC_GCP: # pragma: NO COVER
- grpc_secure_channel.assert_called_once_with(target, composite_creds,
None)
- else:
- grpc_secure_channel.assert_called_once_with(
- target, composite_creds, compression=None
- )
+ grpc_secure_channel.assert_called_once_with(
+ target, composite_creds, compression=None
+ )
def test_create_channel_implicit_with_ssl_creds_attempt_direct_path_true():
@@ -543,12 +526,9 @@
default.assert_called_once_with(scopes=["one", "two"], default_scopes=None)
- if grpc_helpers.HAS_GRPC_GCP: # pragma: NO COVER
- grpc_secure_channel.assert_called_once_with(target, composite_creds,
None)
- else:
- grpc_secure_channel.assert_called_once_with(
- target, composite_creds, compression=None
- )
+ grpc_secure_channel.assert_called_once_with(
+ target, composite_creds, compression=None
+ )
@mock.patch("grpc.compute_engine_channel_credentials")
@@ -570,12 +550,9 @@
default.assert_called_once_with(scopes=None, default_scopes=["three",
"four"])
- if grpc_helpers.HAS_GRPC_GCP: # pragma: NO COVER
- grpc_secure_channel.assert_called_once_with(target, composite_creds,
None)
- else:
- grpc_secure_channel.assert_called_once_with(
- target, composite_creds, compression=None
- )
+ grpc_secure_channel.assert_called_once_with(
+ target, composite_creds, compression=None
+ )
def test_create_channel_explicit_with_duplicate_credentials():
@@ -605,12 +582,9 @@
assert channel is grpc_secure_channel.return_value
- if grpc_helpers.HAS_GRPC_GCP: # pragma: NO COVER
- grpc_secure_channel.assert_called_once_with(target, composite_creds,
None)
- else:
- grpc_secure_channel.assert_called_once_with(
- target, composite_creds, compression=None
- )
+ grpc_secure_channel.assert_called_once_with(
+ target, composite_creds, compression=None
+ )
@mock.patch("grpc.compute_engine_channel_credentials")
@@ -631,12 +605,9 @@
assert channel is grpc_secure_channel.return_value
- if grpc_helpers.HAS_GRPC_GCP: # pragma: NO COVER
- grpc_secure_channel.assert_called_once_with(target, composite_creds,
None)
- else:
- grpc_secure_channel.assert_called_once_with(
- target, composite_creds, compression=None
- )
+ grpc_secure_channel.assert_called_once_with(
+ target, composite_creds, compression=None
+ )
@mock.patch("grpc.compute_engine_channel_credentials")
@@ -661,12 +632,9 @@
assert channel is grpc_secure_channel.return_value
- if grpc_helpers.HAS_GRPC_GCP: # pragma: NO COVER
- grpc_secure_channel.assert_called_once_with(target, composite_creds,
None)
- else:
- grpc_secure_channel.assert_called_once_with(
- target, composite_creds, compression=None
- )
+ grpc_secure_channel.assert_called_once_with(
+ target, composite_creds, compression=None
+ )
@mock.patch("grpc.compute_engine_channel_credentials")
@@ -689,12 +657,9 @@
assert channel is grpc_secure_channel.return_value
- if grpc_helpers.HAS_GRPC_GCP: # pragma: NO COVER
- grpc_secure_channel.assert_called_once_with(target, composite_creds,
None)
- else:
- grpc_secure_channel.assert_called_once_with(
- target, composite_creds, compression=None
- )
+ grpc_secure_channel.assert_called_once_with(
+ target, composite_creds, compression=None
+ )
@mock.patch("grpc.compute_engine_channel_credentials")
@@ -721,12 +686,9 @@
assert channel is grpc_secure_channel.return_value
- if grpc_helpers.HAS_GRPC_GCP: # pragma: NO COVER
- grpc_secure_channel.assert_called_once_with(target, composite_creds,
None)
- else:
- grpc_secure_channel.assert_called_once_with(
- target, composite_creds, compression=None
- )
+ grpc_secure_channel.assert_called_once_with(
+ target, composite_creds, compression=None
+ )
@mock.patch("grpc.compute_engine_channel_credentials")
@@ -756,12 +718,9 @@
assert channel is grpc_secure_channel.return_value
- if grpc_helpers.HAS_GRPC_GCP: # pragma: NO COVER
- grpc_secure_channel.assert_called_once_with(target, composite_creds,
None)
- else:
- grpc_secure_channel.assert_called_once_with(
- target, composite_creds, compression=None
- )
+ grpc_secure_channel.assert_called_once_with(
+ target, composite_creds, compression=None
+ )
@mock.patch("grpc.compute_engine_channel_credentials")
@@ -791,32 +750,11 @@
assert channel is grpc_secure_channel.return_value
- if grpc_helpers.HAS_GRPC_GCP: # pragma: NO COVER
- grpc_secure_channel.assert_called_once_with(target, composite_creds,
None)
- else:
- grpc_secure_channel.assert_called_once_with(
- target, composite_creds, compression=None
- )
-
-
[email protected](
- not grpc_helpers.HAS_GRPC_GCP, reason="grpc_gcp module not available"
-)
[email protected]("grpc_gcp.secure_channel")
-def test_create_channel_with_grpc_gcp(grpc_gcp_secure_channel): # pragma: NO
COVER
- target = "example.com:443"
- scopes = ["test_scope"]
-
- credentials = mock.create_autospec(google.auth.credentials.Scoped,
instance=True)
- credentials.requires_scopes = True
-
- grpc_helpers.create_channel(target, credentials=credentials, scopes=scopes)
- grpc_gcp_secure_channel.assert_called()
-
- credentials.with_scopes.assert_called_once_with(scopes,
default_scopes=None)
+ grpc_secure_channel.assert_called_once_with(
+ target, composite_creds, compression=None
+ )
[email protected](grpc_helpers.HAS_GRPC_GCP, reason="grpc_gcp module not
available")
@mock.patch("grpc.secure_channel")
def test_create_channel_without_grpc_gcp(grpc_secure_channel):
target = "example.com:443"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/google_api_core-2.29.0/tests/unit/test_python_package_support.py
new/google_api_core-2.30.0/tests/unit/test_python_package_support.py
--- old/google_api_core-2.29.0/tests/unit/test_python_package_support.py
2026-01-08 23:08:42.000000000 +0100
+++ new/google_api_core-2.30.0/tests/unit/test_python_package_support.py
2026-02-18 21:23:37.000000000 +0100
@@ -12,7 +12,6 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-import sys
import warnings
from unittest.mock import patch
@@ -31,16 +30,9 @@
@pytest.mark.parametrize("version_string_to_test", ["1.2.3", "1.2.3b1"])
def test_get_dependency_version(mocker, version_string_to_test):
"""Test get_dependency_version."""
- if sys.version_info >= (3, 8):
- mock_importlib = mocker.patch(
- "importlib.metadata.version", return_value=version_string_to_test
- )
- else:
- # TODO(https://github.com/googleapis/python-api-core/issues/835):
Remove
- # `importlib_metadata` once we drop support for Python 3.7
- mock_importlib = mocker.patch(
- "importlib_metadata.version", return_value=version_string_to_test
- )
+ mock_importlib = mocker.patch(
+ "importlib.metadata.version", return_value=version_string_to_test
+ )
expected = DependencyVersion(
parse_version_to_tuple(version_string_to_test), version_string_to_test
)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/google_api_core-2.29.0/tests/unit/test_timeout.py
new/google_api_core-2.30.0/tests/unit/test_timeout.py
--- old/google_api_core-2.29.0/tests/unit/test_timeout.py 2026-01-08
23:08:42.000000000 +0100
+++ new/google_api_core-2.30.0/tests/unit/test_timeout.py 2026-02-18
21:23:35.000000000 +0100
@@ -130,7 +130,7 @@
assert actual_arg_0 == 1
assert actual_arg_1 == 2
assert actual_arg_meep == "moop"
- assert actual_arg_timeuut == pytest.approx(42.0, abs=0.01)
+ assert actual_arg_timeuut == pytest.approx(42.0, abs=0.02)
class TestConstantTimeout(object):