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 2025-10-10 17:09:29
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-google-api-core (Old)
 and      /work/SRC/openSUSE:Factory/.python-google-api-core.new.5300 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-google-api-core"

Fri Oct 10 17:09:29 2025 rev:43 rq:1310031 version:2.26.0

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/python-google-api-core/python-google-api-core.changes
    2025-07-23 16:42:07.521023262 +0200
+++ 
/work/SRC/openSUSE:Factory/.python-google-api-core.new.5300/python-google-api-core.changes
  2025-10-10 17:10:31.316203231 +0200
@@ -1,0 +2,9 @@
+Thu Oct  9 14:23:45 UTC 2025 - John Paul Adrian Glaubitz 
<[email protected]>
+
+- Update to 2.26.0
+  * Add trove classifier for Python 3.14 (#842)
+- from version 2.25.2
+  * Deprecate credentials_file argument (#841)
+  * Fix async tests and round-off error in test expectations (#837)
+
+-------------------------------------------------------------------

Old:
----
  google_api_core-2.25.1.tar.gz

New:
----
  google_api_core-2.26.0.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-google-api-core.spec ++++++
--- /var/tmp/diff_new_pack.SSdh7a/_old  2025-10-10 17:10:31.912228253 +0200
+++ /var/tmp/diff_new_pack.SSdh7a/_new  2025-10-10 17:10:31.912228253 +0200
@@ -26,7 +26,7 @@
 %endif
 %{?sle15_python_module_pythons}
 Name:           python-google-api-core
-Version:        2.25.1
+Version:        2.26.0
 Release:        0
 Summary:        Google API client core library
 License:        Apache-2.0

++++++ google_api_core-2.25.1.tar.gz -> google_api_core-2.26.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/google_api_core-2.25.1/PKG-INFO 
new/google_api_core-2.26.0/PKG-INFO
--- old/google_api_core-2.25.1/PKG-INFO 2025-06-12 22:48:07.623568300 +0200
+++ new/google_api_core-2.26.0/PKG-INFO 2025-10-08 23:33:49.954912200 +0200
@@ -1,6 +1,6 @@
 Metadata-Version: 2.4
 Name: google-api-core
-Version: 2.25.1
+Version: 2.26.0
 Summary: Google API client core library
 Author-email: Google LLC <[email protected]>
 License: Apache 2.0
@@ -18,6 +18,7 @@
 Classifier: Programming Language :: Python :: 3.11
 Classifier: Programming Language :: Python :: 3.12
 Classifier: Programming Language :: Python :: 3.13
+Classifier: Programming Language :: Python :: 3.14
 Classifier: Operating System :: OS Independent
 Classifier: Topic :: Internet
 Requires-Python: >=3.7
@@ -34,8 +35,10 @@
 Provides-Extra: grpc
 Requires-Dist: grpcio<2.0.0,>=1.33.2; extra == "grpc"
 Requires-Dist: grpcio<2.0.0,>=1.49.1; python_version >= "3.11" and extra == 
"grpc"
+Requires-Dist: grpcio<2.0.0,>=1.75.1; python_version >= "3.14" and extra == 
"grpc"
 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
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/google_api_core-2.25.1/google/api_core/client_options.py 
new/google_api_core-2.26.0/google/api_core/client_options.py
--- old/google_api_core-2.25.1/google/api_core/client_options.py        
2025-06-12 22:47:36.000000000 +0200
+++ new/google_api_core-2.26.0/google/api_core/client_options.py        
2025-10-08 23:33:17.000000000 +0200
@@ -49,6 +49,9 @@
 """
 
 from typing import Callable, Mapping, Optional, Sequence, Tuple
+import warnings
+
+from google.api_core import general_helpers
 
 
 class ClientOptions(object):
@@ -67,8 +70,9 @@
             and ``client_encrypted_cert_source`` are mutually exclusive.
         quota_project_id (Optional[str]): A project name that a client's
             quota belongs to.
-        credentials_file (Optional[str]): A path to a file storing credentials.
-            ``credentials_file` and ``api_key`` are mutually exclusive.
+        credentials_file (Optional[str]): Deprecated. A path to a file storing 
credentials.
+            ``credentials_file` and ``api_key`` are mutually exclusive. This 
argument will be
+            removed in the next major version of `google-api-core`.
 
             .. warning::
                 Important: If you accept a credential configuration 
(credential JSON/File/Stream)
@@ -114,6 +118,9 @@
         api_audience: Optional[str] = None,
         universe_domain: Optional[str] = None,
     ):
+        if credentials_file is not None:
+            warnings.warn(general_helpers._CREDENTIALS_FILE_WARNING, 
DeprecationWarning)
+
         if client_cert_source and client_encrypted_cert_source:
             raise ValueError(
                 "client_cert_source and client_encrypted_cert_source are 
mutually exclusive"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/google_api_core-2.25.1/google/api_core/general_helpers.py 
new/google_api_core-2.26.0/google/api_core/general_helpers.py
--- old/google_api_core-2.25.1/google/api_core/general_helpers.py       
2025-06-12 22:47:37.000000000 +0200
+++ new/google_api_core-2.26.0/google/api_core/general_helpers.py       
2025-10-08 23:33:17.000000000 +0200
@@ -14,3 +14,39 @@
 
 # This import for backward compatibility only.
 from functools import wraps  # noqa: F401 pragma: NO COVER
+
+_CREDENTIALS_FILE_WARNING = """\
+The `credentials_file` argument is deprecated because of a potential security 
risk.
+
+The `google.auth.load_credentials_from_file` method does not validate the 
credential
+configuration. The security risk occurs when a credential configuration is 
accepted
+from a source that is not under your control and used without validation on 
your side.
+
+If you know that you will be loading credential configurations of a
+specific type, it is recommended to use a credential-type-specific
+load method.
+
+This will ensure that an unexpected credential type with potential for
+malicious intent is not loaded unintentionally. You might still have to do
+validation for certain credential types. Please follow the recommendations
+for that method. For example, if you want to load only service accounts,
+you can create the service account credentials explicitly:
+
+```
+from google.cloud.vision_v1 import ImageAnnotatorClient
+from google.oauth2 import service_account
+
+credentials = service_account.Credentials.from_service_account_file(filename)
+client = ImageAnnotatorClient(credentials=credentials)
+```
+
+If you are loading your credential configuration from an untrusted source and 
have
+not mitigated the risks (e.g. by validating the configuration yourself), make
+these changes as soon as possible to prevent security risks to your 
environment.
+
+Regardless of the method used, it is always your responsibility to validate
+configurations received from external sources.
+
+Refer to 
https://cloud.google.com/docs/authentication/external/externally-sourced-credentials
+for more details.
+"""
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/google_api_core-2.25.1/google/api_core/grpc_helpers.py 
new/google_api_core-2.26.0/google/api_core/grpc_helpers.py
--- old/google_api_core-2.25.1/google/api_core/grpc_helpers.py  2025-06-12 
22:47:37.000000000 +0200
+++ new/google_api_core-2.26.0/google/api_core/grpc_helpers.py  2025-10-08 
23:33:17.000000000 +0200
@@ -13,20 +13,19 @@
 # limitations under the License.
 
 """Helpers for :mod:`grpc`."""
-from typing import Generic, Iterator, Optional, TypeVar
-
 import collections
 import functools
+from typing import Generic, Iterator, Optional, TypeVar
 import warnings
 
-import grpc
-
-from google.api_core import exceptions
 import google.auth
 import google.auth.credentials
 import google.auth.transport.grpc
 import google.auth.transport.requests
 import google.protobuf
+import grpc
+
+from google.api_core import exceptions, general_helpers
 
 PROTOBUF_VERSION = google.protobuf.__version__
 
@@ -213,9 +212,10 @@
         credentials (google.auth.credentials.Credentials): The credentials. If
             not specified, then this function will attempt to ascertain the
             credentials from the environment using :func:`google.auth.default`.
-        credentials_file (str): A file with credentials that can be loaded with
+        credentials_file (str): Deprecated. A file with credentials that can 
be loaded with
             :func:`google.auth.load_credentials_from_file`. This argument is
-            mutually exclusive with credentials.
+            mutually exclusive with credentials. This argument will be
+            removed in the next major version of `google-api-core`.
 
             .. warning::
                 Important: If you accept a credential configuration 
(credential JSON/File/Stream)
@@ -245,6 +245,9 @@
     Raises:
         google.api_core.DuplicateCredentialArgs: If both a credentials object 
and credentials_file are passed.
     """
+    if credentials_file is not None:
+        warnings.warn(general_helpers._CREDENTIALS_FILE_WARNING, 
DeprecationWarning)
+
     if credentials and credentials_file:
         raise exceptions.DuplicateCredentialArgs(
             "'credentials' and 'credentials_file' are mutually exclusive."
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/google_api_core-2.25.1/google/api_core/grpc_helpers_async.py 
new/google_api_core-2.26.0/google/api_core/grpc_helpers_async.py
--- old/google_api_core-2.25.1/google/api_core/grpc_helpers_async.py    
2025-06-12 22:47:37.000000000 +0200
+++ new/google_api_core-2.26.0/google/api_core/grpc_helpers_async.py    
2025-10-08 23:33:17.000000000 +0200
@@ -20,13 +20,14 @@
 
 import asyncio
 import functools
+import warnings
 
 from typing import AsyncGenerator, Generic, Iterator, Optional, TypeVar
 
 import grpc
 from grpc import aio
 
-from google.api_core import exceptions, grpc_helpers
+from google.api_core import exceptions, general_helpers, grpc_helpers
 
 # denotes the proto response type for grpc calls
 P = TypeVar("P")
@@ -233,9 +234,10 @@
             are passed to :func:`google.auth.default`.
         ssl_credentials (grpc.ChannelCredentials): Optional SSL channel
             credentials. This can be used to specify different certificates.
-        credentials_file (str): A file with credentials that can be loaded with
+        credentials_file (str): Deprecated. A file with credentials that can 
be loaded with
             :func:`google.auth.load_credentials_from_file`. This argument is
-            mutually exclusive with credentials.
+            mutually exclusive with credentials. This argument will be
+            removed in the next major version of `google-api-core`.
 
             .. warning::
                 Important: If you accept a credential configuration 
(credential JSON/File/Stream)
@@ -280,6 +282,9 @@
         ValueError: If `ssl_credentials` is set and `attempt_direct_path` is 
set to `True`.
     """
 
+    if credentials_file is not None:
+        warnings.warn(general_helpers._CREDENTIALS_FILE_WARNING, 
DeprecationWarning)
+
     # If `ssl_credentials` is set and `attempt_direct_path` is set to `True`,
     # raise ValueError as this is not yet supported.
     # See https://github.com/googleapis/python-api-core/issues/590
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/google_api_core-2.25.1/google/api_core/operations_v1/transports/base.py 
new/google_api_core-2.26.0/google/api_core/operations_v1/transports/base.py
--- old/google_api_core-2.25.1/google/api_core/operations_v1/transports/base.py 
2025-06-12 22:47:37.000000000 +0200
+++ new/google_api_core-2.26.0/google/api_core/operations_v1/transports/base.py 
2025-10-08 23:33:17.000000000 +0200
@@ -16,12 +16,8 @@
 import abc
 import re
 from typing import Awaitable, Callable, Optional, Sequence, Union
+import warnings
 
-import google.api_core  # type: ignore
-from google.api_core import exceptions as core_exceptions  # type: ignore
-from google.api_core import gapic_v1  # type: ignore
-from google.api_core import retry as retries  # type: ignore
-from google.api_core import version
 import google.auth  # type: ignore
 from google.auth import credentials as ga_credentials  # type: ignore
 from google.longrunning import operations_pb2
@@ -30,6 +26,12 @@
 from google.protobuf import empty_pb2, json_format  # type: ignore
 from grpc import Compression
 
+import google.api_core  # type: ignore
+from google.api_core import exceptions as core_exceptions  # type: ignore
+from google.api_core import gapic_v1  # type: ignore
+from google.api_core import general_helpers
+from google.api_core import retry as retries  # type: ignore
+from google.api_core import version
 
 PROTOBUF_VERSION = google.protobuf.__version__
 
@@ -69,9 +71,10 @@
                 credentials identify the application to the service; if none
                 are specified, the client will attempt to ascertain the
                 credentials from the environment.
-            credentials_file (Optional[str]): A file with credentials that can
+            credentials_file (Optional[str]): Deprecated. A file with 
credentials that can
                 be loaded with :func:`google.auth.load_credentials_from_file`.
-                This argument is mutually exclusive with credentials.
+                This argument is mutually exclusive with credentials. This 
argument will be
+                removed in the next major version of `google-api-core`.
 
                 .. warning::
                     Important: If you accept a credential configuration 
(credential JSON/File/Stream)
@@ -98,6 +101,9 @@
                 "https", but for testing or local servers,
                 "http" can be specified.
         """
+        if credentials_file is not None:
+            warnings.warn(general_helpers._CREDENTIALS_FILE_WARNING, 
DeprecationWarning)
+
         maybe_url_match = re.match("^(?P<scheme>http(?:s)?://)?(?P<host>.*)$", 
host)
         if maybe_url_match is None:
             raise ValueError(
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/google_api_core-2.25.1/google/api_core/operations_v1/transports/rest.py 
new/google_api_core-2.26.0/google/api_core/operations_v1/transports/rest.py
--- old/google_api_core-2.25.1/google/api_core/operations_v1/transports/rest.py 
2025-06-12 22:47:37.000000000 +0200
+++ new/google_api_core-2.26.0/google/api_core/operations_v1/transports/rest.py 
2025-10-08 23:33:17.000000000 +0200
@@ -15,23 +15,26 @@
 #
 
 from typing import Callable, Dict, Optional, Sequence, Tuple, Union
+import warnings
 
+from google.auth import credentials as ga_credentials  # type: ignore
+from google.auth.transport.requests import AuthorizedSession  # type: ignore
+from google.longrunning import operations_pb2  # type: ignore
+import google.protobuf
+from google.protobuf import empty_pb2  # type: ignore
+from google.protobuf import json_format  # type: ignore
+import grpc
 from requests import __version__ as requests_version
 
 from google.api_core import exceptions as core_exceptions  # type: ignore
 from google.api_core import gapic_v1  # type: ignore
+from google.api_core import general_helpers
 from google.api_core import path_template  # type: ignore
 from google.api_core import rest_helpers  # type: ignore
 from google.api_core import retry as retries  # type: ignore
-from google.auth import credentials as ga_credentials  # type: ignore
-from google.auth.transport.requests import AuthorizedSession  # type: ignore
-from google.longrunning import operations_pb2  # type: ignore
-from google.protobuf import empty_pb2  # type: ignore
-from google.protobuf import json_format  # type: ignore
-import google.protobuf
 
-import grpc
-from .base import DEFAULT_CLIENT_INFO as BASE_DEFAULT_CLIENT_INFO, 
OperationsTransport
+from .base import DEFAULT_CLIENT_INFO as BASE_DEFAULT_CLIENT_INFO
+from .base import OperationsTransport
 
 PROTOBUF_VERSION = google.protobuf.__version__
 
@@ -91,9 +94,10 @@
                 are specified, the client will attempt to ascertain the
                 credentials from the environment.
 
-            credentials_file (Optional[str]): A file with credentials that can
+            credentials_file (Optional[str]): Deprecated. A file with 
credentials that can
                 be loaded with :func:`google.auth.load_credentials_from_file`.
-                This argument is ignored if ``channel`` is provided.
+                This argument is ignored if ``channel`` is provided. This 
argument will be
+                removed in the next major version of `google-api-core`.
 
                 .. warning::
                     Important: If you accept a credential configuration 
(credential JSON/File/Stream)
@@ -101,9 +105,9 @@
                     validate it before providing it to any Google API or 
client library. Providing an
                     unvalidated credential configuration to Google APIs or 
libraries can compromise
                     the security of your systems and data. For more 
information, refer to
-                    `Validate credential configurations from external 
sources`_.
+                    `Validate credential configuration from external sources`_.
 
-                .. _Validate credential configurations from external sources:
+                .. _Validate credential configuration from external sources:
 
                 
https://cloud.google.com/docs/authentication/external/externally-sourced-credentials
             scopes (Optional(Sequence[str])): A list of scopes. This argument 
is
@@ -130,6 +134,9 @@
                 "v1" by default.
 
         """
+        if credentials_file is not None:
+            warnings.warn(general_helpers._CREDENTIALS_FILE_WARNING, 
DeprecationWarning)
+
         # Run the base constructor
         # TODO(yon-mg): resolve other ctor params i.e. scopes, quota, etc.
         # TODO: When custom host (api_endpoint) is set, `scopes` must *also* 
be set on the
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/google_api_core-2.25.1/google/api_core/operations_v1/transports/rest_asyncio.py
 
new/google_api_core-2.26.0/google/api_core/operations_v1/transports/rest_asyncio.py
--- 
old/google_api_core-2.25.1/google/api_core/operations_v1/transports/rest_asyncio.py
 2025-06-12 22:47:38.000000000 +0200
+++ 
new/google_api_core-2.26.0/google/api_core/operations_v1/transports/rest_asyncio.py
 2025-10-08 23:33:17.000000000 +0200
@@ -16,6 +16,7 @@
 
 import json
 from typing import Any, Callable, Coroutine, Dict, Optional, Sequence, Tuple
+import warnings
 
 from google.auth import __version__ as auth_version
 
@@ -29,6 +30,7 @@
 
 from google.api_core import exceptions as core_exceptions  # type: ignore
 from google.api_core import gapic_v1  # type: ignore
+from google.api_core import general_helpers
 from google.api_core import path_template  # type: ignore
 from google.api_core import rest_helpers  # type: ignore
 from google.api_core import retry_async as retries_async  # type: ignore
@@ -96,6 +98,22 @@
                 credentials identify the application to the service; if none
                 are specified, the client will attempt to ascertain the
                 credentials from the environment.
+            credentials_file (Optional[str]): Deprecated. A file with 
credentials that can
+                be loaded with :func:`google.auth.load_credentials_from_file`.
+                This argument is ignored if ``channel`` is provided. This 
argument will be
+                removed in the next major version of `google-api-core`.
+
+                .. warning::
+                    Important: If you accept a credential configuration 
(credential JSON/File/Stream)
+                    from an external source for authentication to Google Cloud 
Platform, you must
+                    validate it before providing it to any Google API or 
client library. Providing an
+                    unvalidated credential configuration to Google APIs or 
libraries can compromise
+                    the security of your systems and data. For more 
information, refer to
+                    `Validate credential configurations from external 
sources`_.
+
+                .. _Validate credential configurations from external sources:
+
+                
https://cloud.google.com/docs/authentication/external/externally-sourced-credentials
             client_info (google.api_core.gapic_v1.client_info.ClientInfo):
                 The client info used to send a user-agent string along with
                 API requests. If ``None``, then default info will be used.
@@ -113,6 +131,9 @@
                 "v1" by default.
 
         """
+        if credentials_file is not None:
+            warnings.warn(general_helpers._CREDENTIALS_FILE_WARNING, 
DeprecationWarning)
+
         unsupported_params = {
             # TODO(https://github.com/googleapis/python-api-core/issues/715): 
Add support for `credentials_file` to async REST transport.
             "google.api_core.client_options.ClientOptions.credentials_file": 
credentials_file,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/google_api_core-2.25.1/google/api_core/version.py 
new/google_api_core-2.26.0/google/api_core/version.py
--- old/google_api_core-2.25.1/google/api_core/version.py       2025-06-12 
22:47:37.000000000 +0200
+++ new/google_api_core-2.26.0/google/api_core/version.py       2025-10-08 
23:33:17.000000000 +0200
@@ -12,4 +12,4 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-__version__ = "2.25.1"
+__version__ = "2.26.0"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/google_api_core-2.25.1/google_api_core.egg-info/PKG-INFO 
new/google_api_core-2.26.0/google_api_core.egg-info/PKG-INFO
--- old/google_api_core-2.25.1/google_api_core.egg-info/PKG-INFO        
2025-06-12 22:48:07.000000000 +0200
+++ new/google_api_core-2.26.0/google_api_core.egg-info/PKG-INFO        
2025-10-08 23:33:49.000000000 +0200
@@ -1,6 +1,6 @@
 Metadata-Version: 2.4
 Name: google-api-core
-Version: 2.25.1
+Version: 2.26.0
 Summary: Google API client core library
 Author-email: Google LLC <[email protected]>
 License: Apache 2.0
@@ -18,6 +18,7 @@
 Classifier: Programming Language :: Python :: 3.11
 Classifier: Programming Language :: Python :: 3.12
 Classifier: Programming Language :: Python :: 3.13
+Classifier: Programming Language :: Python :: 3.14
 Classifier: Operating System :: OS Independent
 Classifier: Topic :: Internet
 Requires-Python: >=3.7
@@ -34,8 +35,10 @@
 Provides-Extra: grpc
 Requires-Dist: grpcio<2.0.0,>=1.33.2; extra == "grpc"
 Requires-Dist: grpcio<2.0.0,>=1.49.1; python_version >= "3.11" and extra == 
"grpc"
+Requires-Dist: grpcio<2.0.0,>=1.75.1; python_version >= "3.14" and extra == 
"grpc"
 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
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/google_api_core-2.25.1/google_api_core.egg-info/requires.txt 
new/google_api_core-2.26.0/google_api_core.egg-info/requires.txt
--- old/google_api_core-2.25.1/google_api_core.egg-info/requires.txt    
2025-06-12 22:48:07.000000000 +0200
+++ new/google_api_core-2.26.0/google_api_core.egg-info/requires.txt    
2025-10-08 23:33:49.000000000 +0200
@@ -18,6 +18,10 @@
 grpcio<2.0.0,>=1.49.1
 grpcio-status<2.0.0,>=1.49.1
 
+[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
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/google_api_core-2.25.1/pyproject.toml 
new/google_api_core-2.26.0/pyproject.toml
--- old/google_api_core-2.25.1/pyproject.toml   2025-06-12 22:47:36.000000000 
+0200
+++ new/google_api_core-2.26.0/pyproject.toml   2025-10-08 23:33:17.000000000 
+0200
@@ -40,6 +40,7 @@
   "Programming Language :: Python :: 3.11",
   "Programming Language :: Python :: 3.12",
   "Programming Language :: Python :: 3.13",
+  "Programming Language :: Python :: 3.14",
   "Operating System :: OS Independent",
   "Topic :: Internet",
 ]
@@ -62,8 +63,10 @@
 grpc = [
   "grpcio >= 1.33.2, < 2.0.0",
   "grpcio >= 1.49.1, < 2.0.0; python_version >= '3.11'",
+  "grpcio >= 1.75.1, < 2.0.0; python_version >= '3.14'",
   "grpcio-status >= 1.33.2, < 2.0.0",
   "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"]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/google_api_core-2.25.1/tests/asyncio/gapic/test_method_async.py 
new/google_api_core-2.26.0/tests/asyncio/gapic/test_method_async.py
--- old/google_api_core-2.25.1/tests/asyncio/gapic/test_method_async.py 
2025-06-12 22:47:37.000000000 +0200
+++ new/google_api_core-2.26.0/tests/asyncio/gapic/test_method_async.py 
2025-10-08 23:33:17.000000000 +0200
@@ -256,7 +256,11 @@
     result = await wrapped_method(timeout=22)
 
     assert result == 42
-    method.assert_called_once_with(timeout=22, metadata=mock.ANY)
+
+    actual_timeout = method.call_args[1]["timeout"]
+    metadata = method.call_args[1]["metadata"]
+    assert metadata == mock.ANY
+    assert actual_timeout == pytest.approx(22, abs=0.01)
 
 
 @pytest.mark.asyncio
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/google_api_core-2.25.1/tests/asyncio/test_operation_async.py 
new/google_api_core-2.26.0/tests/asyncio/test_operation_async.py
--- old/google_api_core-2.25.1/tests/asyncio/test_operation_async.py    
2025-06-12 22:47:36.000000000 +0200
+++ new/google_api_core-2.26.0/tests/asyncio/test_operation_async.py    
2025-10-08 23:33:17.000000000 +0200
@@ -85,7 +85,7 @@
 
 
 @pytest.mark.asyncio
-def test_metadata():
+async def test_metadata():
     expected_metadata = struct_pb2.Struct()
     future, _, _ = make_operation_future(
         [make_operation_proto(metadata=expected_metadata)]
@@ -178,7 +178,7 @@
 
 
 @pytest.mark.asyncio
-def test_from_gapic():
+async def test_from_gapic():
     operation_proto = make_operation_proto(done=True)
     operations_client = mock.create_autospec(
         operations_v1.OperationsClient, instance=True
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/google_api_core-2.25.1/tests/unit/gapic/test_method.py 
new/google_api_core-2.26.0/tests/unit/gapic/test_method.py
--- old/google_api_core-2.25.1/tests/unit/gapic/test_method.py  2025-06-12 
22:47:37.000000000 +0200
+++ new/google_api_core-2.26.0/tests/unit/gapic/test_method.py  2025-10-08 
23:33:17.000000000 +0200
@@ -201,7 +201,11 @@
     result = wrapped_method(timeout=22)
 
     assert result == 42
-    method.assert_called_once_with(timeout=22, metadata=mock.ANY)
+
+    actual_timeout = method.call_args[1]["timeout"]
+    metadata = method.call_args[1]["metadata"]
+    assert metadata == mock.ANY
+    assert actual_timeout == pytest.approx(22, abs=0.01)
 
 
 def test_wrap_method_with_call():
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/google_api_core-2.25.1/tests/unit/operations_v1/test_operations_rest_client.py
 
new/google_api_core-2.26.0/tests/unit/operations_v1/test_operations_rest_client.py
--- 
old/google_api_core-2.25.1/tests/unit/operations_v1/test_operations_rest_client.py
  2025-06-12 22:47:37.000000000 +0200
+++ 
new/google_api_core-2.26.0/tests/unit/operations_v1/test_operations_rest_client.py
  2025-10-08 23:33:17.000000000 +0200
@@ -368,6 +368,22 @@
             always_use_jwt_access=True,
         )
 
+    # Check the case credentials_file is provided
+    options = client_options.ClientOptions(credentials_file="credentials.json")
+    with mock.patch.object(transport_class, "__init__") as patched:
+        patched.return_value = None
+        client = client_class(client_options=options, transport=transport_name)
+        patched.assert_called_once_with(
+            credentials=None,
+            credentials_file="credentials.json",
+            host=client.DEFAULT_ENDPOINT,
+            scopes=None,
+            client_cert_source_for_mtls=None,
+            quota_project_id=None,
+            client_info=transports.base.DEFAULT_CLIENT_INFO,
+            always_use_jwt_access=True,
+        )
+
 
 # TODO: Add support for mtls in async REST
 @pytest.mark.parametrize(
@@ -544,8 +560,23 @@
             )
 
 
-def test_list_operations_rest():
-    client = _get_operations_client(is_async=False)
[email protected](
+    "credentials_file",
+    [None, "credentials.json"],
+)
[email protected](
+    "google.auth.default",
+    autospec=True,
+    return_value=(mock.sentinel.credentials, mock.sentinel.project),
+)
+def test_list_operations_rest(google_auth_default, credentials_file):
+    sync_transport = transports.rest.OperationsRestTransport(
+        credentials_file=credentials_file,
+        http_options=HTTP_OPTIONS,
+    )
+
+    client = AbstractOperationsClient(transport=sync_transport)
+
     # Mock the http request call within the method and fake a response.
     with mock.patch.object(_get_session_type(is_async=False), "request") as 
req:
         # Designate an appropriate value for the returned response.

Reply via email to