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):

Reply via email to