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.