Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-google-cloud-vpc-access for
openSUSE:Factory checked in at 2026-03-28 20:14:04
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-google-cloud-vpc-access (Old)
and /work/SRC/openSUSE:Factory/.python-google-cloud-vpc-access.new.8177
(New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-google-cloud-vpc-access"
Sat Mar 28 20:14:04 2026 rev:10 rq:1343222 version:1.16.0
Changes:
--------
---
/work/SRC/openSUSE:Factory/python-google-cloud-vpc-access/python-google-cloud-vpc-access.changes
2026-01-17 14:56:07.118607226 +0100
+++
/work/SRC/openSUSE:Factory/.python-google-cloud-vpc-access.new.8177/python-google-cloud-vpc-access.changes
2026-03-28 20:15:47.327459440 +0100
@@ -1,0 +2,11 @@
+Fri Mar 27 13:20:35 UTC 2026 - John Paul Adrian Glaubitz
<[email protected]>
+
+- Update to 1.16.0
+ * Allow Protobuf 7.x
+ * Update image
+ * Require Python 3.9
+ * Require google-api-core >= 2.11.0
+ * Improve type checking
+- Update BuildRequires and Requires from setup.py
+
+-------------------------------------------------------------------
Old:
----
google_cloud_vpc_access-1.15.0.tar.gz
New:
----
google_cloud_vpc_access-1.16.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-google-cloud-vpc-access.spec ++++++
--- /var/tmp/diff_new_pack.wVVaSA/_old 2026-03-28 20:15:47.763477435 +0100
+++ /var/tmp/diff_new_pack.wVVaSA/_new 2026-03-28 20:15:47.767477600 +0100
@@ -18,7 +18,7 @@
%{?sle15_python_module_pythons}
Name: python-google-cloud-vpc-access
-Version: 1.15.0
+Version: 1.16.0
Release: 0
Summary: Google Cloud Vpc Access API client library
License: Apache-2.0
@@ -31,9 +31,9 @@
BuildRequires: %{python_module wheel}
BuildRequires: python-rpm-macros
# SECTION test requirements
-BuildRequires: %{python_module google-api-core >= 1.34.1}
+BuildRequires: %{python_module google-api-core >= 2.11.0}
BuildRequires: %{python_module proto-plus >= 1.22.3}
-BuildRequires: %{python_module protobuf >= 3.20.2}
+BuildRequires: %{python_module protobuf >= 4.25.8}
BuildRequires: %{python_module pytest-asyncio}
BuildRequires: %{python_module pytest}
# /SECTION
@@ -43,10 +43,10 @@
%else
Requires: python-grpcio >= 1.75.1
%endif
-Requires: python-google-api-core >= 1.34.1
+Requires: python-google-api-core >= 2.11.0
Requires: python-google-auth
Requires: python-proto-plus >= 1.22.3
-Requires: python-protobuf >= 3.20.2
+Requires: python-protobuf >= 4.25.8
BuildArch: noarch
%python_subpackages
++++++ google_cloud_vpc_access-1.15.0.tar.gz ->
google_cloud_vpc_access-1.16.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/google_cloud_vpc_access-1.15.0/PKG-INFO
new/google_cloud_vpc_access-1.16.0/PKG-INFO
--- old/google_cloud_vpc_access-1.15.0/PKG-INFO 2026-01-15 13:47:58.930921600
+0100
+++ new/google_cloud_vpc_access-1.16.0/PKG-INFO 2026-03-26 22:48:28.858740800
+0100
@@ -1,6 +1,6 @@
Metadata-Version: 2.4
Name: google-cloud-vpc-access
-Version: 1.15.0
+Version: 1.16.0
Summary: Google Cloud Vpc Access API client library
Home-page:
https://github.com/googleapis/google-cloud-python/tree/main/packages/google-cloud-vpc-access
Author: Google LLC
@@ -12,8 +12,6 @@
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
@@ -22,15 +20,15 @@
Classifier: Programming Language :: Python :: 3.14
Classifier: Operating System :: OS Independent
Classifier: Topic :: Internet
-Requires-Python: >=3.7
+Requires-Python: >=3.9
License-File: LICENSE
-Requires-Dist:
google-api-core[grpc]!=2.0.*,!=2.1.*,!=2.10.*,!=2.2.*,!=2.3.*,!=2.4.*,!=2.5.*,!=2.6.*,!=2.7.*,!=2.8.*,!=2.9.*,<3.0.0,>=1.34.1
+Requires-Dist: google-api-core[grpc]<3.0.0,>=2.11.0
Requires-Dist: google-auth!=2.24.0,!=2.25.0,<3.0.0,>=2.14.1
Requires-Dist: grpcio<2.0.0,>=1.33.2
Requires-Dist: grpcio<2.0.0,>=1.75.1; python_version >= "3.14"
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:
protobuf!=4.21.0,!=4.21.1,!=4.21.2,!=4.21.3,!=4.21.4,!=4.21.5,<7.0.0,>=3.20.2
+Requires-Dist: protobuf<8.0.0,>=4.25.8
Dynamic: author
Dynamic: author-email
Dynamic: classifier
@@ -106,14 +104,14 @@
Our client libraries are compatible with all current `active`_ and
`maintenance`_ versions of
Python.
-Python >= 3.7, including 3.14
+Python >= 3.9, including 3.14
.. _active: https://devguide.python.org/devcycle/#in-development-main-branch
.. _maintenance: https://devguide.python.org/devcycle/#maintenance-branches
Unsupported Python Versions
^^^^^^^^^^^^^^^^^^^^^^^^^^^
-Python <= 3.6
+Python <= 3.8
If you are using an `end-of-life`_
version of Python, we recommend that you update as soon as possible to an
actively supported version.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/google_cloud_vpc_access-1.15.0/README.rst
new/google_cloud_vpc_access-1.16.0/README.rst
--- old/google_cloud_vpc_access-1.15.0/README.rst 2026-01-15
13:38:02.000000000 +0100
+++ new/google_cloud_vpc_access-1.16.0/README.rst 2026-03-26
22:38:06.000000000 +0100
@@ -61,14 +61,14 @@
Our client libraries are compatible with all current `active`_ and
`maintenance`_ versions of
Python.
-Python >= 3.7, including 3.14
+Python >= 3.9, including 3.14
.. _active: https://devguide.python.org/devcycle/#in-development-main-branch
.. _maintenance: https://devguide.python.org/devcycle/#maintenance-branches
Unsupported Python Versions
^^^^^^^^^^^^^^^^^^^^^^^^^^^
-Python <= 3.6
+Python <= 3.8
If you are using an `end-of-life`_
version of Python, we recommend that you update as soon as possible to an
actively supported version.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/google_cloud_vpc_access-1.15.0/google/cloud/vpcaccess/gapic_version.py
new/google_cloud_vpc_access-1.16.0/google/cloud/vpcaccess/gapic_version.py
--- old/google_cloud_vpc_access-1.15.0/google/cloud/vpcaccess/gapic_version.py
2026-01-15 13:38:02.000000000 +0100
+++ new/google_cloud_vpc_access-1.16.0/google/cloud/vpcaccess/gapic_version.py
2026-03-26 22:38:03.000000000 +0100
@@ -13,4 +13,4 @@
# See the License for the specific language governing permissions and
# limitations under the License.
#
-__version__ = "1.15.0" # {x-release-please-version}
+__version__ = "1.16.0" # {x-release-please-version}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/google_cloud_vpc_access-1.15.0/google/cloud/vpcaccess_v1/__init__.py
new/google_cloud_vpc_access-1.16.0/google/cloud/vpcaccess_v1/__init__.py
--- old/google_cloud_vpc_access-1.15.0/google/cloud/vpcaccess_v1/__init__.py
2026-01-15 13:38:01.000000000 +0100
+++ new/google_cloud_vpc_access-1.16.0/google/cloud/vpcaccess_v1/__init__.py
2026-03-26 22:38:08.000000000 +0100
@@ -28,6 +28,7 @@
# this code path once we drop support for Python 3.7
import importlib_metadata as metadata
+
from .services.vpc_access_service import (
VpcAccessServiceAsyncClient,
VpcAccessServiceClient,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/google_cloud_vpc_access-1.15.0/google/cloud/vpcaccess_v1/gapic_version.py
new/google_cloud_vpc_access-1.16.0/google/cloud/vpcaccess_v1/gapic_version.py
---
old/google_cloud_vpc_access-1.15.0/google/cloud/vpcaccess_v1/gapic_version.py
2026-01-15 13:38:02.000000000 +0100
+++
new/google_cloud_vpc_access-1.16.0/google/cloud/vpcaccess_v1/gapic_version.py
2026-03-26 22:38:03.000000000 +0100
@@ -13,4 +13,4 @@
# See the License for the specific language governing permissions and
# limitations under the License.
#
-__version__ = "1.15.0" # {x-release-please-version}
+__version__ = "1.16.0" # {x-release-please-version}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/google_cloud_vpc_access-1.15.0/google/cloud/vpcaccess_v1/services/vpc_access_service/async_client.py
new/google_cloud_vpc_access-1.16.0/google/cloud/vpcaccess_v1/services/vpc_access_service/async_client.py
---
old/google_cloud_vpc_access-1.15.0/google/cloud/vpcaccess_v1/services/vpc_access_service/async_client.py
2026-01-15 13:37:59.000000000 +0100
+++
new/google_cloud_vpc_access-1.16.0/google/cloud/vpcaccess_v1/services/vpc_access_service/async_client.py
2026-03-26 22:38:03.000000000 +0100
@@ -13,9 +13,9 @@
# See the License for the specific language governing permissions and
# limitations under the License.
#
-from collections import OrderedDict
import logging as std_logging
import re
+from collections import OrderedDict
from typing import (
Callable,
Dict,
@@ -29,13 +29,13 @@
Union,
)
+import google.protobuf
from google.api_core import exceptions as core_exceptions
from google.api_core import gapic_v1
from google.api_core import retry_async as retries
from google.api_core.client_options import ClientOptions
from google.auth import credentials as ga_credentials # type: ignore
from google.oauth2 import service_account # type: ignore
-import google.protobuf
from google.cloud.vpcaccess_v1 import gapic_version as package_version
@@ -44,11 +44,11 @@
except AttributeError: # pragma: NO COVER
OptionalRetry = Union[retries.AsyncRetry, object, None] # type: ignore
-from google.api_core import operation # type: ignore
-from google.api_core import operation_async # type: ignore
+import google.api_core.operation as operation # type: ignore
+import google.api_core.operation_async as operation_async # type: ignore
+import google.protobuf.empty_pb2 as empty_pb2 # type: ignore
from google.cloud.location import locations_pb2 # type: ignore
from google.longrunning import operations_pb2 # type: ignore
-from google.protobuf import empty_pb2 # type: ignore
from google.cloud.vpcaccess_v1.services.vpc_access_service import pagers
from google.cloud.vpcaccess_v1.types import vpc_access
@@ -122,7 +122,10 @@
Returns:
VpcAccessServiceAsyncClient: The constructed client.
"""
- return
VpcAccessServiceClient.from_service_account_info.__func__(VpcAccessServiceAsyncClient,
info, *args, **kwargs) # type: ignore
+ sa_info_func = (
+ VpcAccessServiceClient.from_service_account_info.__func__ # type:
ignore
+ )
+ return sa_info_func(VpcAccessServiceAsyncClient, info, *args, **kwargs)
@classmethod
def from_service_account_file(cls, filename: str, *args, **kwargs):
@@ -138,7 +141,10 @@
Returns:
VpcAccessServiceAsyncClient: The constructed client.
"""
- return
VpcAccessServiceClient.from_service_account_file.__func__(VpcAccessServiceAsyncClient,
filename, *args, **kwargs) # type: ignore
+ sa_file_func = (
+ VpcAccessServiceClient.from_service_account_file.__func__ # type:
ignore
+ )
+ return sa_file_func(VpcAccessServiceAsyncClient, filename, *args,
**kwargs)
from_service_account_json = from_service_account_file
@@ -188,7 +194,7 @@
return self._client.transport
@property
- def api_endpoint(self):
+ def api_endpoint(self) -> str:
"""Return the API endpoint used by the client instance.
Returns:
@@ -819,7 +825,7 @@
async def list_operations(
self,
- request: Optional[operations_pb2.ListOperationsRequest] = None,
+ request: Optional[Union[operations_pb2.ListOperationsRequest, dict]] =
None,
*,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: Union[float, object] = gapic_v1.method.DEFAULT,
@@ -845,8 +851,12 @@
# Create or coerce a protobuf request object.
# The request isn't a proto-plus wrapped type,
# so it must be constructed via keyword expansion.
- if isinstance(request, dict):
- request = operations_pb2.ListOperationsRequest(**request)
+ if request is None:
+ request_pb = operations_pb2.ListOperationsRequest()
+ elif isinstance(request, dict):
+ request_pb = operations_pb2.ListOperationsRequest(**request)
+ else:
+ request_pb = request
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
@@ -855,7 +865,7 @@
# Certain fields should be provided within the metadata header;
# add these here.
metadata = tuple(metadata) + (
- gapic_v1.routing_header.to_grpc_metadata((("name",
request.name),)),
+ gapic_v1.routing_header.to_grpc_metadata((("name",
request_pb.name),)),
)
# Validate the universe domain.
@@ -863,7 +873,7 @@
# Send the request.
response = await rpc(
- request,
+ request_pb,
retry=retry,
timeout=timeout,
metadata=metadata,
@@ -874,7 +884,7 @@
async def get_operation(
self,
- request: Optional[operations_pb2.GetOperationRequest] = None,
+ request: Optional[Union[operations_pb2.GetOperationRequest, dict]] =
None,
*,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: Union[float, object] = gapic_v1.method.DEFAULT,
@@ -900,8 +910,12 @@
# Create or coerce a protobuf request object.
# The request isn't a proto-plus wrapped type,
# so it must be constructed via keyword expansion.
- if isinstance(request, dict):
- request = operations_pb2.GetOperationRequest(**request)
+ if request is None:
+ request_pb = operations_pb2.GetOperationRequest()
+ elif isinstance(request, dict):
+ request_pb = operations_pb2.GetOperationRequest(**request)
+ else:
+ request_pb = request
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
@@ -910,7 +924,7 @@
# Certain fields should be provided within the metadata header;
# add these here.
metadata = tuple(metadata) + (
- gapic_v1.routing_header.to_grpc_metadata((("name",
request.name),)),
+ gapic_v1.routing_header.to_grpc_metadata((("name",
request_pb.name),)),
)
# Validate the universe domain.
@@ -918,7 +932,7 @@
# Send the request.
response = await rpc(
- request,
+ request_pb,
retry=retry,
timeout=timeout,
metadata=metadata,
@@ -929,7 +943,7 @@
async def list_locations(
self,
- request: Optional[locations_pb2.ListLocationsRequest] = None,
+ request: Optional[Union[locations_pb2.ListLocationsRequest, dict]] =
None,
*,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: Union[float, object] = gapic_v1.method.DEFAULT,
@@ -955,8 +969,12 @@
# Create or coerce a protobuf request object.
# The request isn't a proto-plus wrapped type,
# so it must be constructed via keyword expansion.
- if isinstance(request, dict):
- request = locations_pb2.ListLocationsRequest(**request)
+ if request is None:
+ request_pb = locations_pb2.ListLocationsRequest()
+ elif isinstance(request, dict):
+ request_pb = locations_pb2.ListLocationsRequest(**request)
+ else:
+ request_pb = request
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
@@ -965,7 +983,7 @@
# Certain fields should be provided within the metadata header;
# add these here.
metadata = tuple(metadata) + (
- gapic_v1.routing_header.to_grpc_metadata((("name",
request.name),)),
+ gapic_v1.routing_header.to_grpc_metadata((("name",
request_pb.name),)),
)
# Validate the universe domain.
@@ -973,7 +991,7 @@
# Send the request.
response = await rpc(
- request,
+ request_pb,
retry=retry,
timeout=timeout,
metadata=metadata,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/google_cloud_vpc_access-1.15.0/google/cloud/vpcaccess_v1/services/vpc_access_service/client.py
new/google_cloud_vpc_access-1.16.0/google/cloud/vpcaccess_v1/services/vpc_access_service/client.py
---
old/google_cloud_vpc_access-1.15.0/google/cloud/vpcaccess_v1/services/vpc_access_service/client.py
2026-01-15 13:37:58.000000000 +0100
+++
new/google_cloud_vpc_access-1.16.0/google/cloud/vpcaccess_v1/services/vpc_access_service/client.py
2026-03-26 22:38:05.000000000 +0100
@@ -13,12 +13,13 @@
# See the License for the specific language governing permissions and
# limitations under the License.
#
-from collections import OrderedDict
-from http import HTTPStatus
import json
import logging as std_logging
import os
import re
+import warnings
+from collections import OrderedDict
+from http import HTTPStatus
from typing import (
Callable,
Dict,
@@ -32,8 +33,8 @@
Union,
cast,
)
-import warnings
+import google.protobuf
from google.api_core import client_options as client_options_lib
from google.api_core import exceptions as core_exceptions
from google.api_core import gapic_v1
@@ -43,7 +44,6 @@
from google.auth.transport import mtls # type: ignore
from google.auth.transport.grpc import SslCredentials # type: ignore
from google.oauth2 import service_account # type: ignore
-import google.protobuf
from google.cloud.vpcaccess_v1 import gapic_version as package_version
@@ -61,11 +61,11 @@
_LOGGER = std_logging.getLogger(__name__)
-from google.api_core import operation # type: ignore
-from google.api_core import operation_async # type: ignore
+import google.api_core.operation as operation # type: ignore
+import google.api_core.operation_async as operation_async # type: ignore
+import google.protobuf.empty_pb2 as empty_pb2 # type: ignore
from google.cloud.location import locations_pb2 # type: ignore
from google.longrunning import operations_pb2 # type: ignore
-from google.protobuf import empty_pb2 # type: ignore
from google.cloud.vpcaccess_v1.services.vpc_access_service import pagers
from google.cloud.vpcaccess_v1.types import vpc_access
@@ -84,9 +84,7 @@
objects.
"""
- _transport_registry = (
- OrderedDict()
- ) # type: Dict[str, Type[VpcAccessServiceTransport]]
+ _transport_registry = OrderedDict() # type: Dict[str,
Type[VpcAccessServiceTransport]]
_transport_registry["grpc"] = VpcAccessServiceGrpcTransport
_transport_registry["grpc_asyncio"] = VpcAccessServiceGrpcAsyncIOTransport
_transport_registry["rest"] = VpcAccessServiceRestTransport
@@ -120,7 +118,7 @@
"""
@staticmethod
- def _get_default_mtls_endpoint(api_endpoint):
+ def _get_default_mtls_endpoint(api_endpoint) -> Optional[str]:
"""Converts api endpoint to mTLS endpoint.
Convert "*.sandbox.googleapis.com" and "*.googleapis.com" to
@@ -128,7 +126,7 @@
Args:
api_endpoint (Optional[str]): the api endpoint to convert.
Returns:
- str: converted mTLS api endpoint.
+ Optional[str]: converted mTLS api endpoint.
"""
if not api_endpoint:
return api_endpoint
@@ -138,6 +136,10 @@
)
m = mtls_endpoint_re.match(api_endpoint)
+ if m is None:
+ # Could not parse api_endpoint; return as-is.
+ return api_endpoint
+
name, mtls, sandbox, googledomain = m.groups()
if mtls or not googledomain:
return api_endpoint
@@ -445,7 +447,7 @@
@staticmethod
def _get_api_endpoint(
api_override, client_cert_source, universe_domain, use_mtls_endpoint
- ):
+ ) -> str:
"""Return the API endpoint used by the client.
Args:
@@ -542,7 +544,7 @@
error._details.append(json.dumps(cred_info))
@property
- def api_endpoint(self):
+ def api_endpoint(self) -> str:
"""Return the API endpoint used by the client instance.
Returns:
@@ -631,18 +633,16 @@
universe_domain_opt = getattr(self._client_options, "universe_domain",
None)
- (
- self._use_client_cert,
- self._use_mtls_endpoint,
- self._universe_domain_env,
- ) = VpcAccessServiceClient._read_environment_variables()
+ self._use_client_cert, self._use_mtls_endpoint,
self._universe_domain_env = (
+ VpcAccessServiceClient._read_environment_variables()
+ )
self._client_cert_source =
VpcAccessServiceClient._get_client_cert_source(
self._client_options.client_cert_source, self._use_client_cert
)
self._universe_domain = VpcAccessServiceClient._get_universe_domain(
universe_domain_opt, self._universe_domain_env
)
- self._api_endpoint = None # updated below, depending on `transport`
+ self._api_endpoint: str = "" # updated below, depending on `transport`
# Initialize the universe domain validation.
self._is_universe_domain_valid = False
@@ -670,8 +670,7 @@
)
if self._client_options.scopes:
raise ValueError(
- "When providing a transport instance, provide its scopes "
- "directly."
+ "When providing a transport instance, provide its scopes
directly."
)
self._transport = cast(VpcAccessServiceTransport, transport)
self._api_endpoint = self._transport.host
@@ -1262,7 +1261,7 @@
def list_operations(
self,
- request: Optional[operations_pb2.ListOperationsRequest] = None,
+ request: Optional[Union[operations_pb2.ListOperationsRequest, dict]] =
None,
*,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: Union[float, object] = gapic_v1.method.DEFAULT,
@@ -1288,8 +1287,12 @@
# Create or coerce a protobuf request object.
# The request isn't a proto-plus wrapped type,
# so it must be constructed via keyword expansion.
- if isinstance(request, dict):
- request = operations_pb2.ListOperationsRequest(**request)
+ if request is None:
+ request_pb = operations_pb2.ListOperationsRequest()
+ elif isinstance(request, dict):
+ request_pb = operations_pb2.ListOperationsRequest(**request)
+ else:
+ request_pb = request
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
@@ -1298,7 +1301,7 @@
# Certain fields should be provided within the metadata header;
# add these here.
metadata = tuple(metadata) + (
- gapic_v1.routing_header.to_grpc_metadata((("name",
request.name),)),
+ gapic_v1.routing_header.to_grpc_metadata((("name",
request_pb.name),)),
)
# Validate the universe domain.
@@ -1307,7 +1310,7 @@
try:
# Send the request.
response = rpc(
- request,
+ request_pb,
retry=retry,
timeout=timeout,
metadata=metadata,
@@ -1321,7 +1324,7 @@
def get_operation(
self,
- request: Optional[operations_pb2.GetOperationRequest] = None,
+ request: Optional[Union[operations_pb2.GetOperationRequest, dict]] =
None,
*,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: Union[float, object] = gapic_v1.method.DEFAULT,
@@ -1347,8 +1350,12 @@
# Create or coerce a protobuf request object.
# The request isn't a proto-plus wrapped type,
# so it must be constructed via keyword expansion.
- if isinstance(request, dict):
- request = operations_pb2.GetOperationRequest(**request)
+ if request is None:
+ request_pb = operations_pb2.GetOperationRequest()
+ elif isinstance(request, dict):
+ request_pb = operations_pb2.GetOperationRequest(**request)
+ else:
+ request_pb = request
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
@@ -1357,7 +1364,7 @@
# Certain fields should be provided within the metadata header;
# add these here.
metadata = tuple(metadata) + (
- gapic_v1.routing_header.to_grpc_metadata((("name",
request.name),)),
+ gapic_v1.routing_header.to_grpc_metadata((("name",
request_pb.name),)),
)
# Validate the universe domain.
@@ -1366,7 +1373,7 @@
try:
# Send the request.
response = rpc(
- request,
+ request_pb,
retry=retry,
timeout=timeout,
metadata=metadata,
@@ -1380,7 +1387,7 @@
def list_locations(
self,
- request: Optional[locations_pb2.ListLocationsRequest] = None,
+ request: Optional[Union[locations_pb2.ListLocationsRequest, dict]] =
None,
*,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: Union[float, object] = gapic_v1.method.DEFAULT,
@@ -1406,8 +1413,12 @@
# Create or coerce a protobuf request object.
# The request isn't a proto-plus wrapped type,
# so it must be constructed via keyword expansion.
- if isinstance(request, dict):
- request = locations_pb2.ListLocationsRequest(**request)
+ if request is None:
+ request_pb = locations_pb2.ListLocationsRequest()
+ elif isinstance(request, dict):
+ request_pb = locations_pb2.ListLocationsRequest(**request)
+ else:
+ request_pb = request
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
@@ -1416,7 +1427,7 @@
# Certain fields should be provided within the metadata header;
# add these here.
metadata = tuple(metadata) + (
- gapic_v1.routing_header.to_grpc_metadata((("name",
request.name),)),
+ gapic_v1.routing_header.to_grpc_metadata((("name",
request_pb.name),)),
)
# Validate the universe domain.
@@ -1425,7 +1436,7 @@
try:
# Send the request.
response = rpc(
- request,
+ request_pb,
retry=retry,
timeout=timeout,
metadata=metadata,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/google_cloud_vpc_access-1.15.0/google/cloud/vpcaccess_v1/services/vpc_access_service/pagers.py
new/google_cloud_vpc_access-1.16.0/google/cloud/vpcaccess_v1/services/vpc_access_service/pagers.py
---
old/google_cloud_vpc_access-1.15.0/google/cloud/vpcaccess_v1/services/vpc_access_service/pagers.py
2026-01-15 13:38:01.000000000 +0100
+++
new/google_cloud_vpc_access-1.16.0/google/cloud/vpcaccess_v1/services/vpc_access_service/pagers.py
2026-03-26 22:38:03.000000000 +0100
@@ -67,7 +67,7 @@
*,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: Union[float, object] = gapic_v1.method.DEFAULT,
- metadata: Sequence[Tuple[str, Union[str, bytes]]] = ()
+ metadata: Sequence[Tuple[str, Union[str, bytes]]] = (),
):
"""Instantiate the pager.
@@ -143,7 +143,7 @@
*,
retry: OptionalAsyncRetry = gapic_v1.method.DEFAULT,
timeout: Union[float, object] = gapic_v1.method.DEFAULT,
- metadata: Sequence[Tuple[str, Union[str, bytes]]] = ()
+ metadata: Sequence[Tuple[str, Union[str, bytes]]] = (),
):
"""Instantiates the pager.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/google_cloud_vpc_access-1.15.0/google/cloud/vpcaccess_v1/services/vpc_access_service/transports/base.py
new/google_cloud_vpc_access-1.16.0/google/cloud/vpcaccess_v1/services/vpc_access_service/transports/base.py
---
old/google_cloud_vpc_access-1.15.0/google/cloud/vpcaccess_v1/services/vpc_access_service/transports/base.py
2026-01-15 13:37:59.000000000 +0100
+++
new/google_cloud_vpc_access-1.16.0/google/cloud/vpcaccess_v1/services/vpc_access_service/transports/base.py
2026-03-26 22:38:05.000000000 +0100
@@ -17,15 +17,15 @@
from typing import Awaitable, Callable, Dict, Optional, Sequence, Union
import google.api_core
+import google.auth # type: ignore
+import google.protobuf
from google.api_core import exceptions as core_exceptions
from google.api_core import gapic_v1, operations_v1
from google.api_core import retry as retries
-import google.auth # type: ignore
from google.auth import credentials as ga_credentials # type: ignore
from google.cloud.location import locations_pb2 # type: ignore
from google.longrunning import operations_pb2 # type: ignore
from google.oauth2 import service_account # type: ignore
-import google.protobuf
from google.cloud.vpcaccess_v1 import gapic_version as package_version
from google.cloud.vpcaccess_v1.types import vpc_access
@@ -82,10 +82,12 @@
your own client library.
always_use_jwt_access (Optional[bool]): Whether self signed JWT
should
be used for service account credentials.
+ api_audience (Optional[str]): The intended audience for the API
calls
+ to the service that will be set when using certain 3rd party
+ authentication flows. Audience is typically a resource
identifier.
+ If not set, the host value will be used as a default.
"""
- scopes_kwargs = {"scopes": scopes, "default_scopes": self.AUTH_SCOPES}
-
# Save the scopes.
self._scopes = scopes
if not hasattr(self, "_ignore_credentials"):
@@ -100,11 +102,16 @@
if credentials_file is not None:
credentials, _ = google.auth.load_credentials_from_file(
- credentials_file, **scopes_kwargs,
quota_project_id=quota_project_id
+ credentials_file,
+ scopes=scopes,
+ quota_project_id=quota_project_id,
+ default_scopes=self.AUTH_SCOPES,
)
elif credentials is None and not self._ignore_credentials:
credentials, _ = google.auth.default(
- **scopes_kwargs, quota_project_id=quota_project_id
+ scopes=scopes,
+ quota_project_id=quota_project_id,
+ default_scopes=self.AUTH_SCOPES,
)
# Don't apply audience if the credentials file passed from user.
if hasattr(credentials, "with_gdch_audience"):
@@ -128,6 +135,8 @@
host += ":443"
self._host = host
+ self._wrapped_methods: Dict[Callable, Callable] = {}
+
@property
def host(self):
return self._host
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/google_cloud_vpc_access-1.15.0/google/cloud/vpcaccess_v1/services/vpc_access_service/transports/grpc.py
new/google_cloud_vpc_access-1.16.0/google/cloud/vpcaccess_v1/services/vpc_access_service/transports/grpc.py
---
old/google_cloud_vpc_access-1.15.0/google/cloud/vpcaccess_v1/services/vpc_access_service/transports/grpc.py
2026-01-15 13:38:02.000000000 +0100
+++
new/google_cloud_vpc_access-1.16.0/google/cloud/vpcaccess_v1/services/vpc_access_service/transports/grpc.py
2026-03-26 22:38:07.000000000 +0100
@@ -16,19 +16,19 @@
import json
import logging as std_logging
import pickle
-from typing import Callable, Dict, Optional, Sequence, Tuple, Union
import warnings
+from typing import Callable, Dict, Optional, Sequence, Tuple, Union
-from google.api_core import gapic_v1, grpc_helpers, operations_v1
import google.auth # type: ignore
+import google.protobuf.message
+import grpc # type: ignore
+import proto # type: ignore
+from google.api_core import gapic_v1, grpc_helpers, operations_v1
from google.auth import credentials as ga_credentials # type: ignore
from google.auth.transport.grpc import SslCredentials # type: ignore
from google.cloud.location import locations_pb2 # type: ignore
from google.longrunning import operations_pb2 # type: ignore
from google.protobuf.json_format import MessageToJson
-import google.protobuf.message
-import grpc # type: ignore
-import proto # type: ignore
from google.cloud.vpcaccess_v1.types import vpc_access
@@ -56,7 +56,7 @@
elif isinstance(request, google.protobuf.message.Message):
request_payload = MessageToJson(request)
else:
- request_payload = f"{type(request).__name__}:
{pickle.dumps(request)}"
+ request_payload = f"{type(request).__name__}:
{pickle.dumps(request)!r}"
request_metadata = {
key: value.decode("utf-8") if isinstance(value, bytes) else
value
@@ -91,7 +91,7 @@
elif isinstance(result, google.protobuf.message.Message):
response_payload = MessageToJson(result)
else:
- response_payload = f"{type(result).__name__}:
{pickle.dumps(result)}"
+ response_payload = f"{type(result).__name__}:
{pickle.dumps(result)!r}"
grpc_response = {
"payload": response_payload,
"metadata": metadata,
@@ -188,6 +188,10 @@
your own client library.
always_use_jwt_access (Optional[bool]): Whether self signed JWT
should
be used for service account credentials.
+ api_audience (Optional[str]): The intended audience for the API
calls
+ to the service that will be set when using certain 3rd party
+ authentication flows. Audience is typically a resource
identifier.
+ If not set, the host value will be used as a default.
Raises:
google.auth.exceptions.MutualTLSChannelError: If mutual TLS transport
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/google_cloud_vpc_access-1.15.0/google/cloud/vpcaccess_v1/services/vpc_access_service/transports/grpc_asyncio.py
new/google_cloud_vpc_access-1.16.0/google/cloud/vpcaccess_v1/services/vpc_access_service/transports/grpc_asyncio.py
---
old/google_cloud_vpc_access-1.15.0/google/cloud/vpcaccess_v1/services/vpc_access_service/transports/grpc_asyncio.py
2026-01-15 13:37:58.000000000 +0100
+++
new/google_cloud_vpc_access-1.16.0/google/cloud/vpcaccess_v1/services/vpc_access_service/transports/grpc_asyncio.py
2026-03-26 22:38:08.000000000 +0100
@@ -17,9 +17,12 @@
import json
import logging as std_logging
import pickle
-from typing import Awaitable, Callable, Dict, Optional, Sequence, Tuple, Union
import warnings
+from typing import Awaitable, Callable, Dict, Optional, Sequence, Tuple, Union
+import google.protobuf.message
+import grpc # type: ignore
+import proto # type: ignore
from google.api_core import exceptions as core_exceptions
from google.api_core import gapic_v1, grpc_helpers_async, operations_v1
from google.api_core import retry_async as retries
@@ -28,10 +31,7 @@
from google.cloud.location import locations_pb2 # type: ignore
from google.longrunning import operations_pb2 # type: ignore
from google.protobuf.json_format import MessageToJson
-import google.protobuf.message
-import grpc # type: ignore
from grpc.experimental import aio # type: ignore
-import proto # type: ignore
from google.cloud.vpcaccess_v1.types import vpc_access
@@ -62,7 +62,7 @@
elif isinstance(request, google.protobuf.message.Message):
request_payload = MessageToJson(request)
else:
- request_payload = f"{type(request).__name__}:
{pickle.dumps(request)}"
+ request_payload = f"{type(request).__name__}:
{pickle.dumps(request)!r}"
request_metadata = {
key: value.decode("utf-8") if isinstance(value, bytes) else
value
@@ -97,7 +97,7 @@
elif isinstance(result, google.protobuf.message.Message):
response_payload = MessageToJson(result)
else:
- response_payload = f"{type(result).__name__}:
{pickle.dumps(result)}"
+ response_payload = f"{type(result).__name__}:
{pickle.dumps(result)!r}"
grpc_response = {
"payload": response_payload,
"metadata": metadata,
@@ -239,6 +239,10 @@
your own client library.
always_use_jwt_access (Optional[bool]): Whether self signed JWT
should
be used for service account credentials.
+ api_audience (Optional[str]): The intended audience for the API
calls
+ to the service that will be set when using certain 3rd party
+ authentication flows. Audience is typically a resource
identifier.
+ If not set, the host value will be used as a default.
Raises:
google.auth.exceptions.MutualTlsChannelError: If mutual TLS
transport
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/google_cloud_vpc_access-1.15.0/google/cloud/vpcaccess_v1/services/vpc_access_service/transports/rest.py
new/google_cloud_vpc_access-1.16.0/google/cloud/vpcaccess_v1/services/vpc_access_service/transports/rest.py
---
old/google_cloud_vpc_access-1.15.0/google/cloud/vpcaccess_v1/services/vpc_access_service/transports/rest.py
2026-01-15 13:37:59.000000000 +0100
+++
new/google_cloud_vpc_access-1.16.0/google/cloud/vpcaccess_v1/services/vpc_access_service/transports/rest.py
2026-03-26 22:38:08.000000000 +0100
@@ -16,17 +16,17 @@
import dataclasses
import json # type: ignore
import logging
-from typing import Any, Callable, Dict, List, Optional, Sequence, Tuple, Union
import warnings
+from typing import Any, Callable, Dict, List, Optional, Sequence, Tuple, Union
-from google.api_core import gapic_v1, operations_v1, rest_helpers,
rest_streaming
+import google.protobuf
from google.api_core import exceptions as core_exceptions
+from google.api_core import gapic_v1, operations_v1, rest_helpers,
rest_streaming
from google.api_core import retry as retries
from google.auth import credentials as ga_credentials # type: ignore
from google.auth.transport.requests import AuthorizedSession # type: ignore
from google.cloud.location import locations_pb2 # type: ignore
from google.longrunning import operations_pb2 # type: ignore
-import google.protobuf
from google.protobuf import json_format
from requests import __version__ as requests_version
@@ -448,6 +448,12 @@
url_scheme: the protocol scheme for the API endpoint. Normally
"https", but for testing or local servers,
"http" can be specified.
+ interceptor (Optional[VpcAccessServiceRestInterceptor]):
Interceptor used
+ to manipulate requests, request metadata, and responses.
+ api_audience (Optional[str]): The intended audience for the API
calls
+ to the service that will be set when using certain 3rd party
+ authentication flows. Audience is typically a resource
identifier.
+ If not set, the host value will be used as a default.
"""
# Run the base constructor
# TODO(yon-mg): resolve other ctor params i.e. scopes, quota, etc.
@@ -570,9 +576,7 @@
"""
- http_options = (
-
_BaseVpcAccessServiceRestTransport._BaseCreateConnector._get_http_options()
- )
+ http_options =
_BaseVpcAccessServiceRestTransport._BaseCreateConnector._get_http_options()
request, metadata = self._interceptor.pre_create_connector(
request, metadata
@@ -598,7 +602,7 @@
)
method = transcoded_request["method"]
try:
- request_payload = json_format.MessageToJson(request)
+ request_payload = type(request).to_json(request)
except:
request_payload = None
http_request = {
@@ -724,9 +728,7 @@
"""
- http_options = (
-
_BaseVpcAccessServiceRestTransport._BaseDeleteConnector._get_http_options()
- )
+ http_options =
_BaseVpcAccessServiceRestTransport._BaseDeleteConnector._get_http_options()
request, metadata = self._interceptor.pre_delete_connector(
request, metadata
@@ -748,7 +750,7 @@
)
method = transcoded_request["method"]
try:
- request_payload = json_format.MessageToJson(request)
+ request_payload = type(request).to_json(request)
except:
request_payload = None
http_request = {
@@ -1018,9 +1020,7 @@
"""
- http_options = (
-
_BaseVpcAccessServiceRestTransport._BaseListConnectors._get_http_options()
- )
+ http_options =
_BaseVpcAccessServiceRestTransport._BaseListConnectors._get_http_options()
request, metadata = self._interceptor.pre_list_connectors(request,
metadata)
transcoded_request =
_BaseVpcAccessServiceRestTransport._BaseListConnectors._get_transcoded_request(
@@ -1201,9 +1201,7 @@
locations_pb2.ListLocationsResponse: Response from
ListLocations method.
"""
- http_options = (
-
_BaseVpcAccessServiceRestTransport._BaseListLocations._get_http_options()
- )
+ http_options =
_BaseVpcAccessServiceRestTransport._BaseListLocations._get_http_options()
request, metadata = self._interceptor.pre_list_locations(request,
metadata)
transcoded_request =
_BaseVpcAccessServiceRestTransport._BaseListLocations._get_transcoded_request(
@@ -1481,9 +1479,7 @@
operations_pb2.ListOperationsResponse: Response from
ListOperations method.
"""
- http_options = (
-
_BaseVpcAccessServiceRestTransport._BaseListOperations._get_http_options()
- )
+ http_options =
_BaseVpcAccessServiceRestTransport._BaseListOperations._get_http_options()
request, metadata = self._interceptor.pre_list_operations(request,
metadata)
transcoded_request =
_BaseVpcAccessServiceRestTransport._BaseListOperations._get_transcoded_request(
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/google_cloud_vpc_access-1.15.0/google/cloud/vpcaccess_v1/types/vpc_access.py
new/google_cloud_vpc_access-1.16.0/google/cloud/vpcaccess_v1/types/vpc_access.py
---
old/google_cloud_vpc_access-1.15.0/google/cloud/vpcaccess_v1/types/vpc_access.py
2026-01-15 13:37:59.000000000 +0100
+++
new/google_cloud_vpc_access-1.16.0/google/cloud/vpcaccess_v1/types/vpc_access.py
2026-03-26 22:38:07.000000000 +0100
@@ -17,7 +17,7 @@
from typing import MutableMapping, MutableSequence
-from google.protobuf import timestamp_pb2 # type: ignore
+import google.protobuf.timestamp_pb2 as timestamp_pb2 # type: ignore
import proto # type: ignore
__protobuf__ = proto.module(
@@ -93,6 +93,7 @@
UPDATING (5):
The connector is being updated.
"""
+
STATE_UNSPECIFIED = 0
READY = 1
CREATING = 2
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/google_cloud_vpc_access-1.15.0/google_cloud_vpc_access.egg-info/PKG-INFO
new/google_cloud_vpc_access-1.16.0/google_cloud_vpc_access.egg-info/PKG-INFO
---
old/google_cloud_vpc_access-1.15.0/google_cloud_vpc_access.egg-info/PKG-INFO
2026-01-15 13:47:58.000000000 +0100
+++
new/google_cloud_vpc_access-1.16.0/google_cloud_vpc_access.egg-info/PKG-INFO
2026-03-26 22:48:28.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 2.4
Name: google-cloud-vpc-access
-Version: 1.15.0
+Version: 1.16.0
Summary: Google Cloud Vpc Access API client library
Home-page:
https://github.com/googleapis/google-cloud-python/tree/main/packages/google-cloud-vpc-access
Author: Google LLC
@@ -12,8 +12,6 @@
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
@@ -22,15 +20,15 @@
Classifier: Programming Language :: Python :: 3.14
Classifier: Operating System :: OS Independent
Classifier: Topic :: Internet
-Requires-Python: >=3.7
+Requires-Python: >=3.9
License-File: LICENSE
-Requires-Dist:
google-api-core[grpc]!=2.0.*,!=2.1.*,!=2.10.*,!=2.2.*,!=2.3.*,!=2.4.*,!=2.5.*,!=2.6.*,!=2.7.*,!=2.8.*,!=2.9.*,<3.0.0,>=1.34.1
+Requires-Dist: google-api-core[grpc]<3.0.0,>=2.11.0
Requires-Dist: google-auth!=2.24.0,!=2.25.0,<3.0.0,>=2.14.1
Requires-Dist: grpcio<2.0.0,>=1.33.2
Requires-Dist: grpcio<2.0.0,>=1.75.1; python_version >= "3.14"
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:
protobuf!=4.21.0,!=4.21.1,!=4.21.2,!=4.21.3,!=4.21.4,!=4.21.5,<7.0.0,>=3.20.2
+Requires-Dist: protobuf<8.0.0,>=4.25.8
Dynamic: author
Dynamic: author-email
Dynamic: classifier
@@ -106,14 +104,14 @@
Our client libraries are compatible with all current `active`_ and
`maintenance`_ versions of
Python.
-Python >= 3.7, including 3.14
+Python >= 3.9, including 3.14
.. _active: https://devguide.python.org/devcycle/#in-development-main-branch
.. _maintenance: https://devguide.python.org/devcycle/#maintenance-branches
Unsupported Python Versions
^^^^^^^^^^^^^^^^^^^^^^^^^^^
-Python <= 3.6
+Python <= 3.8
If you are using an `end-of-life`_
version of Python, we recommend that you update as soon as possible to an
actively supported version.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/google_cloud_vpc_access-1.15.0/google_cloud_vpc_access.egg-info/requires.txt
new/google_cloud_vpc_access-1.16.0/google_cloud_vpc_access.egg-info/requires.txt
---
old/google_cloud_vpc_access-1.15.0/google_cloud_vpc_access.egg-info/requires.txt
2026-01-15 13:47:58.000000000 +0100
+++
new/google_cloud_vpc_access-1.16.0/google_cloud_vpc_access.egg-info/requires.txt
2026-03-26 22:48:28.000000000 +0100
@@ -1,8 +1,8 @@
-google-api-core[grpc]!=2.0.*,!=2.1.*,!=2.10.*,!=2.2.*,!=2.3.*,!=2.4.*,!=2.5.*,!=2.6.*,!=2.7.*,!=2.8.*,!=2.9.*,<3.0.0,>=1.34.1
+google-api-core[grpc]<3.0.0,>=2.11.0
google-auth!=2.24.0,!=2.25.0,<3.0.0,>=2.14.1
grpcio<2.0.0,>=1.33.2
proto-plus<2.0.0,>=1.22.3
-protobuf!=4.21.0,!=4.21.1,!=4.21.2,!=4.21.3,!=4.21.4,!=4.21.5,<7.0.0,>=3.20.2
+protobuf<8.0.0,>=4.25.8
[:python_version >= "3.13"]
proto-plus<2.0.0,>=1.25.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/google_cloud_vpc_access-1.15.0/setup.py
new/google_cloud_vpc_access-1.16.0/setup.py
--- old/google_cloud_vpc_access-1.15.0/setup.py 2026-01-15 13:38:01.000000000
+0100
+++ new/google_cloud_vpc_access-1.16.0/setup.py 2026-03-26 22:38:05.000000000
+0100
@@ -39,7 +39,7 @@
release_status = "Development Status :: 5 - Production/Stable"
dependencies = [
- "google-api-core[grpc] >= 1.34.1,
<3.0.0,!=2.0.*,!=2.1.*,!=2.2.*,!=2.3.*,!=2.4.*,!=2.5.*,!=2.6.*,!=2.7.*,!=2.8.*,!=2.9.*,!=2.10.*",
+ "google-api-core[grpc] >= 2.11.0, <3.0.0",
# Exclude incompatible versions of `google-auth`
# See https://github.com/googleapis/google-cloud-python/issues/12364
"google-auth >= 2.14.1, <3.0.0,!=2.24.0,!=2.25.0",
@@ -47,7 +47,7 @@
"grpcio >= 1.75.1, < 2.0.0; python_version >= '3.14'",
"proto-plus >= 1.22.3, <2.0.0",
"proto-plus >= 1.25.0, <2.0.0; python_version >= '3.13'",
-
"protobuf>=3.20.2,<7.0.0,!=4.21.0,!=4.21.1,!=4.21.2,!=4.21.3,!=4.21.4,!=4.21.5",
+ "protobuf >= 4.25.8, < 8.0.0",
]
extras = {}
url =
"https://github.com/googleapis/google-cloud-python/tree/main/packages/google-cloud-vpc-access"
@@ -79,8 +79,6 @@
"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",
@@ -92,7 +90,7 @@
],
platforms="Posix; MacOS X; Windows",
packages=packages,
- python_requires=">=3.7",
+ python_requires=">=3.9",
install_requires=dependencies,
extras_require=extras,
include_package_data=True,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/google_cloud_vpc_access-1.15.0/tests/unit/gapic/vpcaccess_v1/test_vpc_access_service.py
new/google_cloud_vpc_access-1.16.0/tests/unit/gapic/vpcaccess_v1/test_vpc_access_service.py
---
old/google_cloud_vpc_access-1.15.0/tests/unit/gapic/vpcaccess_v1/test_vpc_access_service.py
2026-01-15 13:37:59.000000000 +0100
+++
new/google_cloud_vpc_access-1.16.0/tests/unit/gapic/vpcaccess_v1/test_vpc_access_service.py
2026-03-26 22:38:05.000000000 +0100
@@ -22,17 +22,17 @@
except ImportError: # pragma: NO COVER
import mock
-from collections.abc import AsyncIterable, Iterable
import json
import math
+from collections.abc import AsyncIterable, Iterable, Mapping, Sequence
+import grpc
+import pytest
from google.api_core import api_core_version
from google.protobuf import json_format
-import grpc
from grpc.experimental import aio
from proto.marshal.rules import wrappers
from proto.marshal.rules.dates import DurationRule, TimestampRule
-import pytest
from requests import PreparedRequest, Request, Response
from requests.sessions import Session
@@ -43,7 +43,11 @@
except ImportError: # pragma: NO COVER
HAS_GOOGLE_AUTH_AIO = False
+import google.api_core.operation_async as operation_async # type: ignore
+import google.auth
+import google.protobuf.empty_pb2 as empty_pb2 # type: ignore
from google.api_core import (
+ client_options,
future,
gapic_v1,
grpc_helpers,
@@ -52,17 +56,13 @@
operations_v1,
path_template,
)
-from google.api_core import client_options
from google.api_core import exceptions as core_exceptions
-from google.api_core import operation_async # type: ignore
from google.api_core import retry as retries
-import google.auth
from google.auth import credentials as ga_credentials
from google.auth.exceptions import MutualTLSChannelError
from google.cloud.location import locations_pb2
from google.longrunning import operations_pb2 # type: ignore
from google.oauth2 import service_account
-from google.protobuf import empty_pb2 # type: ignore
from google.cloud.vpcaccess_v1.services.vpc_access_service import (
VpcAccessServiceAsyncClient,
@@ -126,6 +126,7 @@
sandbox_endpoint = "example.sandbox.googleapis.com"
sandbox_mtls_endpoint = "example.mtls.sandbox.googleapis.com"
non_googleapi = "api.example.com"
+ custom_endpoint = ".custom"
assert VpcAccessServiceClient._get_default_mtls_endpoint(None) is None
assert (
@@ -148,6 +149,10 @@
VpcAccessServiceClient._get_default_mtls_endpoint(non_googleapi)
== non_googleapi
)
+ assert (
+ VpcAccessServiceClient._get_default_mtls_endpoint(custom_endpoint)
+ == custom_endpoint
+ )
def test__read_environment_variables():
@@ -982,10 +987,9 @@
client_cert_source=mock_client_cert_source,
api_endpoint=mock_api_endpoint,
)
- (
- api_endpoint,
- cert_source,
- ) =
client_class.get_mtls_endpoint_and_cert_source(options)
+ api_endpoint, cert_source = (
+
client_class.get_mtls_endpoint_and_cert_source(options)
+ )
assert api_endpoint == mock_api_endpoint
assert cert_source is expected_cert_source
@@ -1030,10 +1034,9 @@
client_cert_source=mock_client_cert_source,
api_endpoint=mock_api_endpoint,
)
- (
- api_endpoint,
- cert_source,
- ) =
client_class.get_mtls_endpoint_and_cert_source(options)
+ api_endpoint, cert_source = (
+
client_class.get_mtls_endpoint_and_cert_source(options)
+ )
assert api_endpoint == mock_api_endpoint
assert cert_source is expected_cert_source
@@ -1069,10 +1072,9 @@
"google.auth.transport.mtls.default_client_cert_source",
return_value=mock_client_cert_source,
):
- (
- api_endpoint,
- cert_source,
- ) = client_class.get_mtls_endpoint_and_cert_source()
+ api_endpoint, cert_source = (
+ client_class.get_mtls_endpoint_and_cert_source()
+ )
assert api_endpoint == client_class.DEFAULT_MTLS_ENDPOINT
assert cert_source == mock_client_cert_source
@@ -1320,13 +1322,13 @@
)
# test that the credentials from file are saved and used as the
credentials.
- with mock.patch.object(
- google.auth, "load_credentials_from_file", autospec=True
- ) as load_creds, mock.patch.object(
- google.auth, "default", autospec=True
- ) as adc, mock.patch.object(
- grpc_helpers, "create_channel"
- ) as create_channel:
+ with (
+ mock.patch.object(
+ google.auth, "load_credentials_from_file", autospec=True
+ ) as load_creds,
+ mock.patch.object(google.auth, "default", autospec=True) as adc,
+ mock.patch.object(grpc_helpers, "create_channel") as create_channel,
+ ):
creds = ga_credentials.AnonymousCredentials()
file_creds = ga_credentials.AnonymousCredentials()
load_creds.return_value = (file_creds, None)
@@ -1432,9 +1434,9 @@
mock_rpc.return_value.name = (
"foo" # operation_request.operation in compute client(s) expect a
string.
)
- client._transport._wrapped_methods[
- client._transport.create_connector
- ] = mock_rpc
+ client._transport._wrapped_methods[client._transport.create_connector]
= (
+ mock_rpc
+ )
request = {}
client.create_connector(request)
@@ -2659,9 +2661,9 @@
mock_rpc.return_value.name = (
"foo" # operation_request.operation in compute client(s) expect a
string.
)
- client._transport._wrapped_methods[
- client._transport.delete_connector
- ] = mock_rpc
+ client._transport._wrapped_methods[client._transport.delete_connector]
= (
+ mock_rpc
+ )
request = {}
client.delete_connector(request)
@@ -2927,9 +2929,9 @@
mock_rpc.return_value.name = (
"foo" # operation_request.operation in compute client(s) expect a
string.
)
- client._transport._wrapped_methods[
- client._transport.create_connector
- ] = mock_rpc
+ client._transport._wrapped_methods[client._transport.create_connector]
= (
+ mock_rpc
+ )
request = {}
client.create_connector(request)
@@ -3566,9 +3568,9 @@
mock_rpc.return_value.name = (
"foo" # operation_request.operation in compute client(s) expect a
string.
)
- client._transport._wrapped_methods[
- client._transport.delete_connector
- ] = mock_rpc
+ client._transport._wrapped_methods[client._transport.delete_connector]
= (
+ mock_rpc
+ )
request = {}
client.delete_connector(request)
@@ -4060,8 +4062,9 @@
request = request_type(**request_init)
# Mock the http request call within the method and fake a BadRequest error.
- with mock.patch.object(Session, "request") as req, pytest.raises(
- core_exceptions.BadRequest
+ with (
+ mock.patch.object(Session, "request") as req,
+ pytest.raises(core_exceptions.BadRequest),
):
# Wrap the value into a proper Response obj
response_value = mock.Mock()
@@ -4201,20 +4204,21 @@
)
client = VpcAccessServiceClient(transport=transport)
- with mock.patch.object(
- type(client.transport._session), "request"
- ) as req, mock.patch.object(
- path_template, "transcode"
- ) as transcode, mock.patch.object(
- operation.Operation, "_set_result_from_operation"
- ), mock.patch.object(
- transports.VpcAccessServiceRestInterceptor, "post_create_connector"
- ) as post, mock.patch.object(
- transports.VpcAccessServiceRestInterceptor,
- "post_create_connector_with_metadata",
- ) as post_with_metadata, mock.patch.object(
- transports.VpcAccessServiceRestInterceptor, "pre_create_connector"
- ) as pre:
+ with (
+ mock.patch.object(type(client.transport._session), "request") as req,
+ mock.patch.object(path_template, "transcode") as transcode,
+ mock.patch.object(operation.Operation, "_set_result_from_operation"),
+ mock.patch.object(
+ transports.VpcAccessServiceRestInterceptor, "post_create_connector"
+ ) as post,
+ mock.patch.object(
+ transports.VpcAccessServiceRestInterceptor,
+ "post_create_connector_with_metadata",
+ ) as post_with_metadata,
+ mock.patch.object(
+ transports.VpcAccessServiceRestInterceptor, "pre_create_connector"
+ ) as pre,
+ ):
pre.assert_not_called()
post.assert_not_called()
post_with_metadata.assert_not_called()
@@ -4265,8 +4269,9 @@
request = request_type(**request_init)
# Mock the http request call within the method and fake a BadRequest error.
- with mock.patch.object(Session, "request") as req, pytest.raises(
- core_exceptions.BadRequest
+ with (
+ mock.patch.object(Session, "request") as req,
+ pytest.raises(core_exceptions.BadRequest),
):
# Wrap the value into a proper Response obj
response_value = mock.Mock()
@@ -4347,17 +4352,20 @@
)
client = VpcAccessServiceClient(transport=transport)
- with mock.patch.object(
- type(client.transport._session), "request"
- ) as req, mock.patch.object(
- path_template, "transcode"
- ) as transcode, mock.patch.object(
- transports.VpcAccessServiceRestInterceptor, "post_get_connector"
- ) as post, mock.patch.object(
- transports.VpcAccessServiceRestInterceptor,
"post_get_connector_with_metadata"
- ) as post_with_metadata, mock.patch.object(
- transports.VpcAccessServiceRestInterceptor, "pre_get_connector"
- ) as pre:
+ with (
+ mock.patch.object(type(client.transport._session), "request") as req,
+ mock.patch.object(path_template, "transcode") as transcode,
+ mock.patch.object(
+ transports.VpcAccessServiceRestInterceptor, "post_get_connector"
+ ) as post,
+ mock.patch.object(
+ transports.VpcAccessServiceRestInterceptor,
+ "post_get_connector_with_metadata",
+ ) as post_with_metadata,
+ mock.patch.object(
+ transports.VpcAccessServiceRestInterceptor, "pre_get_connector"
+ ) as pre,
+ ):
pre.assert_not_called()
post.assert_not_called()
post_with_metadata.assert_not_called()
@@ -4408,8 +4416,9 @@
request = request_type(**request_init)
# Mock the http request call within the method and fake a BadRequest error.
- with mock.patch.object(Session, "request") as req, pytest.raises(
- core_exceptions.BadRequest
+ with (
+ mock.patch.object(Session, "request") as req,
+ pytest.raises(core_exceptions.BadRequest),
):
# Wrap the value into a proper Response obj
response_value = mock.Mock()
@@ -4472,17 +4481,20 @@
)
client = VpcAccessServiceClient(transport=transport)
- with mock.patch.object(
- type(client.transport._session), "request"
- ) as req, mock.patch.object(
- path_template, "transcode"
- ) as transcode, mock.patch.object(
- transports.VpcAccessServiceRestInterceptor, "post_list_connectors"
- ) as post, mock.patch.object(
- transports.VpcAccessServiceRestInterceptor,
"post_list_connectors_with_metadata"
- ) as post_with_metadata, mock.patch.object(
- transports.VpcAccessServiceRestInterceptor, "pre_list_connectors"
- ) as pre:
+ with (
+ mock.patch.object(type(client.transport._session), "request") as req,
+ mock.patch.object(path_template, "transcode") as transcode,
+ mock.patch.object(
+ transports.VpcAccessServiceRestInterceptor, "post_list_connectors"
+ ) as post,
+ mock.patch.object(
+ transports.VpcAccessServiceRestInterceptor,
+ "post_list_connectors_with_metadata",
+ ) as post_with_metadata,
+ mock.patch.object(
+ transports.VpcAccessServiceRestInterceptor, "pre_list_connectors"
+ ) as pre,
+ ):
pre.assert_not_called()
post.assert_not_called()
post_with_metadata.assert_not_called()
@@ -4537,8 +4549,9 @@
request = request_type(**request_init)
# Mock the http request call within the method and fake a BadRequest error.
- with mock.patch.object(Session, "request") as req, pytest.raises(
- core_exceptions.BadRequest
+ with (
+ mock.patch.object(Session, "request") as req,
+ pytest.raises(core_exceptions.BadRequest),
):
# Wrap the value into a proper Response obj
response_value = mock.Mock()
@@ -4595,20 +4608,21 @@
)
client = VpcAccessServiceClient(transport=transport)
- with mock.patch.object(
- type(client.transport._session), "request"
- ) as req, mock.patch.object(
- path_template, "transcode"
- ) as transcode, mock.patch.object(
- operation.Operation, "_set_result_from_operation"
- ), mock.patch.object(
- transports.VpcAccessServiceRestInterceptor, "post_delete_connector"
- ) as post, mock.patch.object(
- transports.VpcAccessServiceRestInterceptor,
- "post_delete_connector_with_metadata",
- ) as post_with_metadata, mock.patch.object(
- transports.VpcAccessServiceRestInterceptor, "pre_delete_connector"
- ) as pre:
+ with (
+ mock.patch.object(type(client.transport._session), "request") as req,
+ mock.patch.object(path_template, "transcode") as transcode,
+ mock.patch.object(operation.Operation, "_set_result_from_operation"),
+ mock.patch.object(
+ transports.VpcAccessServiceRestInterceptor, "post_delete_connector"
+ ) as post,
+ mock.patch.object(
+ transports.VpcAccessServiceRestInterceptor,
+ "post_delete_connector_with_metadata",
+ ) as post_with_metadata,
+ mock.patch.object(
+ transports.VpcAccessServiceRestInterceptor, "pre_delete_connector"
+ ) as pre,
+ ):
pre.assert_not_called()
post.assert_not_called()
post_with_metadata.assert_not_called()
@@ -4661,8 +4675,9 @@
request = json_format.ParseDict({"name": "projects/sample1"}, request)
# Mock the http request call within the method and fake a BadRequest error.
- with mock.patch.object(Session, "request") as req, pytest.raises(
- core_exceptions.BadRequest
+ with (
+ mock.patch.object(Session, "request") as req,
+ pytest.raises(core_exceptions.BadRequest),
):
# Wrap the value into a proper Response obj
response_value = Response()
@@ -4723,8 +4738,9 @@
)
# Mock the http request call within the method and fake a BadRequest error.
- with mock.patch.object(Session, "request") as req, pytest.raises(
- core_exceptions.BadRequest
+ with (
+ mock.patch.object(Session, "request") as req,
+ pytest.raises(core_exceptions.BadRequest),
):
# Wrap the value into a proper Response obj
response_value = Response()
@@ -4785,8 +4801,9 @@
)
# Mock the http request call within the method and fake a BadRequest error.
- with mock.patch.object(Session, "request") as req, pytest.raises(
- core_exceptions.BadRequest
+ with (
+ mock.patch.object(Session, "request") as req,
+ pytest.raises(core_exceptions.BadRequest),
):
# Wrap the value into a proper Response obj
response_value = Response()
@@ -5002,11 +5019,14 @@
def test_vpc_access_service_base_transport_with_credentials_file():
# Instantiate the base transport with a credentials file
- with mock.patch.object(
- google.auth, "load_credentials_from_file", autospec=True
- ) as load_creds, mock.patch(
-
"google.cloud.vpcaccess_v1.services.vpc_access_service.transports.VpcAccessServiceTransport._prep_wrapped_messages"
- ) as Transport:
+ with (
+ mock.patch.object(
+ google.auth, "load_credentials_from_file", autospec=True
+ ) as load_creds,
+ mock.patch(
+
"google.cloud.vpcaccess_v1.services.vpc_access_service.transports.VpcAccessServiceTransport._prep_wrapped_messages"
+ ) as Transport,
+ ):
Transport.return_value = None
load_creds.return_value = (ga_credentials.AnonymousCredentials(), None)
transport = transports.VpcAccessServiceTransport(
@@ -5023,9 +5043,12 @@
def test_vpc_access_service_base_transport_with_adc():
# Test the default credentials are used if credentials and
credentials_file are None.
- with mock.patch.object(google.auth, "default", autospec=True) as adc,
mock.patch(
-
"google.cloud.vpcaccess_v1.services.vpc_access_service.transports.VpcAccessServiceTransport._prep_wrapped_messages"
- ) as Transport:
+ with (
+ mock.patch.object(google.auth, "default", autospec=True) as adc,
+ mock.patch(
+
"google.cloud.vpcaccess_v1.services.vpc_access_service.transports.VpcAccessServiceTransport._prep_wrapped_messages"
+ ) as Transport,
+ ):
Transport.return_value = None
adc.return_value = (ga_credentials.AnonymousCredentials(), None)
transport = transports.VpcAccessServiceTransport()
@@ -5097,11 +5120,12 @@
def test_vpc_access_service_transport_create_channel(transport_class,
grpc_helpers):
# If credentials and host are not provided, the transport class should use
# ADC credentials.
- with mock.patch.object(
- google.auth, "default", autospec=True
- ) as adc, mock.patch.object(
- grpc_helpers, "create_channel", autospec=True
- ) as create_channel:
+ with (
+ mock.patch.object(google.auth, "default", autospec=True) as adc,
+ mock.patch.object(
+ grpc_helpers, "create_channel", autospec=True
+ ) as create_channel,
+ ):
creds = ga_credentials.AnonymousCredentials()
adc.return_value = (creds, None)
transport_class(quota_project_id="octopus", scopes=["1", "2"])
@@ -5713,6 +5737,40 @@
call.assert_called()
+def test_get_operation_flattened():
+ client = VpcAccessServiceClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ )
+ # Mock the actual call within the gRPC stub, and fake the request.
+ with mock.patch.object(type(client.transport.get_operation), "__call__")
as call:
+ # Designate an appropriate return value for the call.
+ call.return_value = operations_pb2.Operation()
+
+ client.get_operation()
+ # Establish that the underlying gRPC stub method was called.
+ assert len(call.mock_calls) == 1
+ _, args, _ = call.mock_calls[0]
+ assert args[0] == operations_pb2.GetOperationRequest()
+
+
[email protected]
+async def test_get_operation_flattened_async():
+ client = VpcAccessServiceAsyncClient(
+ credentials=async_anonymous_credentials(),
+ )
+ # Mock the actual call within the gRPC stub, and fake the request.
+ with mock.patch.object(type(client.transport.get_operation), "__call__")
as call:
+ # Designate an appropriate return value for the call.
+ call.return_value = grpc_helpers_async.FakeUnaryUnaryCall(
+ operations_pb2.Operation()
+ )
+ await client.get_operation()
+ # Establish that the underlying gRPC stub method was called.
+ assert len(call.mock_calls) == 1
+ _, args, _ = call.mock_calls[0]
+ assert args[0] == operations_pb2.GetOperationRequest()
+
+
def test_list_operations(transport: str = "grpc"):
client = VpcAccessServiceClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -5858,6 +5916,40 @@
call.assert_called()
+def test_list_operations_flattened():
+ client = VpcAccessServiceClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ )
+ # Mock the actual call within the gRPC stub, and fake the request.
+ with mock.patch.object(type(client.transport.list_operations), "__call__")
as call:
+ # Designate an appropriate return value for the call.
+ call.return_value = operations_pb2.ListOperationsResponse()
+
+ client.list_operations()
+ # Establish that the underlying gRPC stub method was called.
+ assert len(call.mock_calls) == 1
+ _, args, _ = call.mock_calls[0]
+ assert args[0] == operations_pb2.ListOperationsRequest()
+
+
[email protected]
+async def test_list_operations_flattened_async():
+ client = VpcAccessServiceAsyncClient(
+ credentials=async_anonymous_credentials(),
+ )
+ # Mock the actual call within the gRPC stub, and fake the request.
+ with mock.patch.object(type(client.transport.list_operations), "__call__")
as call:
+ # Designate an appropriate return value for the call.
+ call.return_value = grpc_helpers_async.FakeUnaryUnaryCall(
+ operations_pb2.ListOperationsResponse()
+ )
+ await client.list_operations()
+ # Establish that the underlying gRPC stub method was called.
+ assert len(call.mock_calls) == 1
+ _, args, _ = call.mock_calls[0]
+ assert args[0] == operations_pb2.ListOperationsRequest()
+
+
def test_list_locations(transport: str = "grpc"):
client = VpcAccessServiceClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -6003,6 +6095,40 @@
call.assert_called()
+def test_list_locations_flattened():
+ client = VpcAccessServiceClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ )
+ # Mock the actual call within the gRPC stub, and fake the request.
+ with mock.patch.object(type(client.transport.list_locations), "__call__")
as call:
+ # Designate an appropriate return value for the call.
+ call.return_value = locations_pb2.ListLocationsResponse()
+
+ client.list_locations()
+ # Establish that the underlying gRPC stub method was called.
+ assert len(call.mock_calls) == 1
+ _, args, _ = call.mock_calls[0]
+ assert args[0] == locations_pb2.ListLocationsRequest()
+
+
[email protected]
+async def test_list_locations_flattened_async():
+ client = VpcAccessServiceAsyncClient(
+ credentials=async_anonymous_credentials(),
+ )
+ # Mock the actual call within the gRPC stub, and fake the request.
+ with mock.patch.object(type(client.transport.list_locations), "__call__")
as call:
+ # Designate an appropriate return value for the call.
+ call.return_value = grpc_helpers_async.FakeUnaryUnaryCall(
+ locations_pb2.ListLocationsResponse()
+ )
+ await client.list_locations()
+ # Establish that the underlying gRPC stub method was called.
+ assert len(call.mock_calls) == 1
+ _, args, _ = call.mock_calls[0]
+ assert args[0] == locations_pb2.ListLocationsRequest()
+
+
def test_transport_close_grpc():
client = VpcAccessServiceClient(
credentials=ga_credentials.AnonymousCredentials(), transport="grpc"