From 55d7a5b7b25d510aa9734ff6f9c08a476f9e6281 Mon Sep 17 00:00:00 2001 From: Daniel Sanche Date: Thu, 12 Nov 2026 18:43:39 -0700 Subject: [PATCH] chore: remove dead version check conditional --- .../%sub/services/%service/_client_macros.j2 | 7 +- .../%sub/services/%service/_shared_macros.j2 | 21 +- .../%sub/services/%service/async_client.py.j2 | 7 +- .../%name_%version/%sub/_test_mixins.py.j2 | 9 +- .../%name_%version/%sub/test_%service.py.j2 | 62 +- .../gapic/%name_%version/%sub/test_macros.j2 | 7 +- .../services/echo/async_client.py | 151 ++--- .../showcase_v1beta1/services/echo/client.py | 151 ++--- .../unit/gapic/showcase_v1beta1/test_echo.py | 572 ++++++++---------- .../tests/system/test_api_version_header.py | 12 +- 10 files changed, 407 insertions(+), 592 deletions(-) diff --git a/packages/gapic-generator/gapic/templates/%namespace/%name_%version/%sub/services/%service/_client_macros.j2 b/packages/gapic-generator/gapic/templates/%namespace/%name_%version/%sub/services/%service/_client_macros.j2 index 7821112d5a61..633cc4608635 100644 --- a/packages/gapic-generator/gapic/templates/%namespace/%name_%version/%sub/services/%service/_client_macros.j2 +++ b/packages/gapic-generator/gapic/templates/%namespace/%name_%version/%sub/services/%service/_client_macros.j2 @@ -174,11 +174,6 @@ {% endif %} ) {% if method.lro %} - {% if service.version %} - lro_metadata = None - if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER - lro_metadata = [version_header.to_api_version_header("{{ service.version }}")] - {% endif %} # Wrap the response in an operation future. response = {{ method.client_output.ident.module_alias or method.client_output.ident.module }}.from_gapic( @@ -187,7 +182,7 @@ {{ method.lro.response_type.ident }}, metadata_type={{ method.lro.metadata_type.ident }}, {% if service.version %} - grpc_metadata=lro_metadata, + grpc_metadata=[version_header.to_api_version_header("{{ service.version }}")], {% endif %} ) {% elif method.paged_result_field %} diff --git a/packages/gapic-generator/gapic/templates/%namespace/%name_%version/%sub/services/%service/_shared_macros.j2 b/packages/gapic-generator/gapic/templates/%namespace/%name_%version/%sub/services/%service/_shared_macros.j2 index 571de46f7a48..2936d51fcef7 100644 --- a/packages/gapic-generator/gapic/templates/%namespace/%name_%version/%sub/services/%service/_shared_macros.j2 +++ b/packages/gapic-generator/gapic/templates/%namespace/%name_%version/%sub/services/%service/_shared_macros.j2 @@ -35,20 +35,8 @@ {% endmacro %} {% macro add_google_api_core_version_header_import(service_version) %} -{# -The `version_header` module was added to `google-api-core` -in version 2.19.0. -https://github.com/googleapis/python-api-core/releases/tag/v2.19.0 -The `try/except` below can be removed once the minimum version of -`google-api-core` is 2.19.0 or newer. -#} {% if service_version %} -try: - from google.api_core import version_header - HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER -{# NOTE: `pragma: NO COVER` is needed since the coverage for presubmits isn't combined. #} -except ImportError: # pragma: NO COVER - HAS_GOOGLE_API_CORE_VERSION_HEADER = False +from google.api_core import version_header {% endif %}{# service_version #} {% endmacro %} @@ -98,10 +86,9 @@ except ImportError: # pragma: NO COVER `add_google_api_core_version_header_import` to add the necessary import statements. #} {% if service_version %} - if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER - metadata = tuple(metadata) + ( - version_header.to_api_version_header("{{ service_version }}"), - ) + metadata = tuple(metadata) + ( + version_header.to_api_version_header("{{ service_version }}"), + ) {% endif %}{# service_version #} {% endmacro %} diff --git a/packages/gapic-generator/gapic/templates/%namespace/%name_%version/%sub/services/%service/async_client.py.j2 b/packages/gapic-generator/gapic/templates/%namespace/%name_%version/%sub/services/%service/async_client.py.j2 index d94ad0f893f9..5b62e470f1cb 100644 --- a/packages/gapic-generator/gapic/templates/%namespace/%name_%version/%sub/services/%service/async_client.py.j2 +++ b/packages/gapic-generator/gapic/templates/%namespace/%name_%version/%sub/services/%service/async_client.py.j2 @@ -430,11 +430,6 @@ class {{ service.async_client_name }}: {% endif %} ) {% if method.lro %} - {% if service.version %} - lro_metadata = None - if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER - lro_metadata = [version_header.to_api_version_header("{{ service.version }}")] - {% endif %} # Wrap the response in an operation future. response = {{ method.client_output_async.ident.module_alias or method.client_output_async.ident.module }}.from_gapic( @@ -443,7 +438,7 @@ class {{ service.async_client_name }}: {{ method.lro.response_type.ident }}, metadata_type={{ method.lro.metadata_type.ident }}, {% if service.version %} - grpc_metadata=lro_metadata, + grpc_metadata=[version_header.to_api_version_header("{{ service.version }}")], {% endif %} ) {% elif method.paged_result_field %} diff --git a/packages/gapic-generator/gapic/templates/tests/unit/gapic/%name_%version/%sub/_test_mixins.py.j2 b/packages/gapic-generator/gapic/templates/tests/unit/gapic/%name_%version/%sub/_test_mixins.py.j2 index d71834b205fd..eaa44126f657 100644 --- a/packages/gapic-generator/gapic/templates/tests/unit/gapic/%name_%version/%sub/_test_mixins.py.j2 +++ b/packages/gapic-generator/gapic/templates/tests/unit/gapic/%name_%version/%sub/_test_mixins.py.j2 @@ -1,11 +1,10 @@ {% macro assert_api_version_header(service_version) -%} {% if service_version %} - if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER - assert ( - version_header.API_VERSION_METADATA_KEY, - "{{ service_version }}", - ) in kw["metadata"] + assert ( + version_header.API_VERSION_METADATA_KEY, + "{{ service_version }}", + ) in kw["metadata"] {%- endif -%} {% endmacro -%} {% if api.has_operations_mixin and ('grpc' in opts.transport or 'grpc_asyncio' in opts.transport) %} diff --git a/packages/gapic-generator/gapic/templates/tests/unit/gapic/%name_%version/%sub/test_%service.py.j2 b/packages/gapic-generator/gapic/templates/tests/unit/gapic/%name_%version/%sub/test_%service.py.j2 index 02309963a429..8462197f7fcb 100644 --- a/packages/gapic-generator/gapic/templates/tests/unit/gapic/%name_%version/%sub/test_%service.py.j2 +++ b/packages/gapic-generator/gapic/templates/tests/unit/gapic/%name_%version/%sub/test_%service.py.j2 @@ -206,41 +206,35 @@ async def test_{{ method_name }}_api_version_header_async(transport_name="grpc") def test_{{ method_name }}_api_version_header(transport_name): client = {{ service.client_name }}(credentials=ga_credentials.AnonymousCredentials(), transport=transport_name) {% endif %} - # TODO: Make this test unconditional once the minimum supported version of - # google-api-core becomes 2.19.0 or higher. - api_core_major, api_core_minor = [int(part) for part in api_core_version.__version__.split(".")[0:2]] - if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): - # Mock the actual call within the gRPC stub, and fake the request. - with mock.patch.object( - type(client.transport.{{ method.transport_safe_name|snake_case }}), - '__call__' - ) as call: - call.return_value = {{ method.output.ident }}() - {% set response_prefix = "response = " if method.lro else "" %} - {% if mode == "async" %} - {{ response_prefix }}await client.{{ method_name }}() - {% else %} - {{ response_prefix }}client.{{ method_name }}() - {% endif %} - - # Establish that the api version header was sent. - _, _, kw = call.mock_calls[0] - assert ( - version_header.API_VERSION_METADATA_KEY, - "{{ service.version }}", - ) in kw['metadata'] - {% if method.lro %} - assert ( - version_header.API_VERSION_METADATA_KEY, - "{{ service.version }}", - ) in response._refresh.keywords["metadata"] - assert ( - version_header.API_VERSION_METADATA_KEY, - "{{ service.version }}", - ) in response._cancel.keywords["metadata"] + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.{{ method.transport_safe_name|snake_case }}), + '__call__' + ) as call: + call.return_value = {{ method.output.ident }}() + {% set response_prefix = "response = " if method.lro else "" %} + {% if mode == "async" %} + {{ response_prefix }}await client.{{ method_name }}() + {% else %} + {{ response_prefix }}client.{{ method_name }}() {% endif %} - else: - pytest.skip("google-api-core>=2.19.0 is required for `google.api_core.version_header`") + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "{{ service.version }}", + ) in kw['metadata'] + {% if method.lro %} + assert ( + version_header.API_VERSION_METADATA_KEY, + "{{ service.version }}", + ) in response._refresh.keywords["metadata"] + assert ( + version_header.API_VERSION_METADATA_KEY, + "{{ service.version }}", + ) in response._cancel.keywords["metadata"] + {% endif %} {% endfor %}{# mode #} {% endwith %} {% endfor %} diff --git a/packages/gapic-generator/gapic/templates/tests/unit/gapic/%name_%version/%sub/test_macros.j2 b/packages/gapic-generator/gapic/templates/tests/unit/gapic/%name_%version/%sub/test_macros.j2 index 436834c20858..ad6caff586a5 100644 --- a/packages/gapic-generator/gapic/templates/tests/unit/gapic/%name_%version/%sub/test_macros.j2 +++ b/packages/gapic-generator/gapic/templates/tests/unit/gapic/%name_%version/%sub/test_macros.j2 @@ -743,10 +743,9 @@ def test_{{ method_name }}_pager(transport_name: str = "grpc"): ) {% endif %} {% if service.version %} - if HAS_GOOGLE_API_CORE_VERSION_HEADER: - expected_metadata = tuple(expected_metadata) + ( - version_header.to_api_version_header("{{ service.version }}"), - ) + expected_metadata = tuple(expected_metadata) + ( + version_header.to_api_version_header("{{ service.version }}"), + ) {% endif %} pager = client.{{ method_name }}(request={}, retry=retry, timeout=timeout) diff --git a/packages/gapic-generator/tests/integration/goldens/showcase/google/showcase_v1beta1/services/echo/async_client.py b/packages/gapic-generator/tests/integration/goldens/showcase/google/showcase_v1beta1/services/echo/async_client.py index a0443c1535f8..1e7271da4451 100755 --- a/packages/gapic-generator/tests/integration/goldens/showcase/google/showcase_v1beta1/services/echo/async_client.py +++ b/packages/gapic-generator/tests/integration/goldens/showcase/google/showcase_v1beta1/services/echo/async_client.py @@ -30,11 +30,7 @@ from google.oauth2 import service_account # type: ignore import google.protobuf -try: - from google.api_core import version_header - HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER -except ImportError: # pragma: NO COVER - HAS_GOOGLE_API_CORE_VERSION_HEADER = False +from google.api_core import version_header try: OptionalRetry = Union[retries.AsyncRetry, gapic_v1.method._MethodDefault, None] @@ -386,10 +382,9 @@ async def sample_echo(): gapic_v1.routing_header.to_grpc_metadata(header_params), ) - if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER - metadata = tuple(metadata) + ( - version_header.to_api_version_header("v1_20240408"), - ) + metadata = tuple(metadata) + ( + version_header.to_api_version_header("v1_20240408"), + ) setup_request_id(request, 'request_id', False) setup_request_id(request, 'other_request_id', True) @@ -476,10 +471,9 @@ async def sample_echo_error_details(): # and friendly error handling. rpc = self._client._transport._wrapped_methods[self._client._transport.echo_error_details] - if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER - metadata = tuple(metadata) + ( - version_header.to_api_version_header("v1_20240408"), - ) + metadata = tuple(metadata) + ( + version_header.to_api_version_header("v1_20240408"), + ) # Validate the universe domain. self._client._validate_universe_domain() @@ -564,10 +558,9 @@ async def sample_fail_echo_with_details(): # and friendly error handling. rpc = self._client._transport._wrapped_methods[self._client._transport.fail_echo_with_details] - if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER - metadata = tuple(metadata) + ( - version_header.to_api_version_header("v1_20240408"), - ) + metadata = tuple(metadata) + ( + version_header.to_api_version_header("v1_20240408"), + ) # Validate the universe domain. self._client._validate_universe_domain() @@ -679,10 +672,9 @@ async def sample_expand(): # and friendly error handling. rpc = self._client._transport._wrapped_methods[self._client._transport.expand] - if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER - metadata = tuple(metadata) + ( - version_header.to_api_version_header("v1_20240408"), - ) + metadata = tuple(metadata) + ( + version_header.to_api_version_header("v1_20240408"), + ) # Validate the universe domain. self._client._validate_universe_domain() @@ -773,10 +765,9 @@ def request_generator(): # and friendly error handling. rpc = self._client._transport._wrapped_methods[self._client._transport.collect] - if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER - metadata = tuple(metadata) + ( - version_header.to_api_version_header("v1_20240408"), - ) + metadata = tuple(metadata) + ( + version_header.to_api_version_header("v1_20240408"), + ) # Validate the universe domain. self._client._validate_universe_domain() @@ -867,10 +858,9 @@ def request_generator(): # and friendly error handling. rpc = self._client._transport._wrapped_methods[self._client._transport.chat] - if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER - metadata = tuple(metadata) + ( - version_header.to_api_version_header("v1_20240408"), - ) + metadata = tuple(metadata) + ( + version_header.to_api_version_header("v1_20240408"), + ) # Validate the universe domain. self._client._validate_universe_domain() @@ -955,10 +945,9 @@ async def sample_paged_expand(): # and friendly error handling. rpc = self._client._transport._wrapped_methods[self._client._transport.paged_expand] - if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER - metadata = tuple(metadata) + ( - version_header.to_api_version_header("v1_20240408"), - ) + metadata = tuple(metadata) + ( + version_header.to_api_version_header("v1_20240408"), + ) # Validate the universe domain. self._client._validate_universe_domain() @@ -1058,10 +1047,9 @@ async def sample_paged_expand_legacy(): # and friendly error handling. rpc = self._client._transport._wrapped_methods[self._client._transport.paged_expand_legacy] - if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER - metadata = tuple(metadata) + ( - version_header.to_api_version_header("v1_20240408"), - ) + metadata = tuple(metadata) + ( + version_header.to_api_version_header("v1_20240408"), + ) # Validate the universe domain. self._client._validate_universe_domain() @@ -1159,10 +1147,9 @@ async def sample_paged_expand_legacy_mapped(): # and friendly error handling. rpc = self._client._transport._wrapped_methods[self._client._transport.paged_expand_legacy_mapped] - if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER - metadata = tuple(metadata) + ( - version_header.to_api_version_header("v1_20240408"), - ) + metadata = tuple(metadata) + ( + version_header.to_api_version_header("v1_20240408"), + ) # Validate the universe domain. self._client._validate_universe_domain() @@ -1259,10 +1246,9 @@ async def sample_wait(): # and friendly error handling. rpc = self._client._transport._wrapped_methods[self._client._transport.wait] - if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER - metadata = tuple(metadata) + ( - version_header.to_api_version_header("v1_20240408"), - ) + metadata = tuple(metadata) + ( + version_header.to_api_version_header("v1_20240408"), + ) # Validate the universe domain. self._client._validate_universe_domain() @@ -1274,9 +1260,6 @@ async def sample_wait(): timeout=timeout, metadata=metadata, ) - lro_metadata = None - if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER - lro_metadata = [version_header.to_api_version_header("v1_20240408")] # Wrap the response in an operation future. response = operation_async.from_gapic( @@ -1284,7 +1267,7 @@ async def sample_wait(): self._client._transport.operations_client, gs_echo.WaitResponse, metadata_type=gs_echo.WaitMetadata, - grpc_metadata=lro_metadata, + grpc_metadata=[version_header.to_api_version_header("v1_20240408")], ) # Done; return the response. @@ -1352,10 +1335,9 @@ async def sample_block(): # and friendly error handling. rpc = self._client._transport._wrapped_methods[self._client._transport.block] - if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER - metadata = tuple(metadata) + ( - version_header.to_api_version_header("v1_20240408"), - ) + metadata = tuple(metadata) + ( + version_header.to_api_version_header("v1_20240408"), + ) # Validate the universe domain. self._client._validate_universe_domain() @@ -1416,10 +1398,9 @@ async def list_operations( gapic_v1.routing_header.to_grpc_metadata( (("name", request_pb.name),)), ) - if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER - metadata = tuple(metadata) + ( - version_header.to_api_version_header("v1_20240408"), - ) + metadata = tuple(metadata) + ( + version_header.to_api_version_header("v1_20240408"), + ) # Validate the universe domain. self._client._validate_universe_domain() @@ -1476,10 +1457,9 @@ async def get_operation( gapic_v1.routing_header.to_grpc_metadata( (("name", request_pb.name),)), ) - if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER - metadata = tuple(metadata) + ( - version_header.to_api_version_header("v1_20240408"), - ) + metadata = tuple(metadata) + ( + version_header.to_api_version_header("v1_20240408"), + ) # Validate the universe domain. self._client._validate_universe_domain() @@ -1540,10 +1520,9 @@ async def delete_operation( gapic_v1.routing_header.to_grpc_metadata( (("name", request_pb.name),)), ) - if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER - metadata = tuple(metadata) + ( - version_header.to_api_version_header("v1_20240408"), - ) + metadata = tuple(metadata) + ( + version_header.to_api_version_header("v1_20240408"), + ) # Validate the universe domain. self._client._validate_universe_domain() @@ -1599,10 +1578,9 @@ async def cancel_operation( gapic_v1.routing_header.to_grpc_metadata( (("name", request_pb.name),)), ) - if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER - metadata = tuple(metadata) + ( - version_header.to_api_version_header("v1_20240408"), - ) + metadata = tuple(metadata) + ( + version_header.to_api_version_header("v1_20240408"), + ) # Validate the universe domain. self._client._validate_universe_domain() @@ -1721,10 +1699,9 @@ async def set_iam_policy( gapic_v1.routing_header.to_grpc_metadata( (("resource", request_pb.resource),)), ) - if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER - metadata = tuple(metadata) + ( - version_header.to_api_version_header("v1_20240408"), - ) + metadata = tuple(metadata) + ( + version_header.to_api_version_header("v1_20240408"), + ) # Validate the universe domain. self._client._validate_universe_domain() @@ -1848,10 +1825,9 @@ async def get_iam_policy( gapic_v1.routing_header.to_grpc_metadata( (("resource", request_pb.resource),)), ) - if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER - metadata = tuple(metadata) + ( - version_header.to_api_version_header("v1_20240408"), - ) + metadata = tuple(metadata) + ( + version_header.to_api_version_header("v1_20240408"), + ) # Validate the universe domain. self._client._validate_universe_domain() @@ -1913,10 +1889,9 @@ async def test_iam_permissions( gapic_v1.routing_header.to_grpc_metadata( (("resource", request_pb.resource),)), ) - if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER - metadata = tuple(metadata) + ( - version_header.to_api_version_header("v1_20240408"), - ) + metadata = tuple(metadata) + ( + version_header.to_api_version_header("v1_20240408"), + ) # Validate the universe domain. self._client._validate_universe_domain() @@ -1973,10 +1948,9 @@ async def get_location( gapic_v1.routing_header.to_grpc_metadata( (("name", request_pb.name),)), ) - if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER - metadata = tuple(metadata) + ( - version_header.to_api_version_header("v1_20240408"), - ) + metadata = tuple(metadata) + ( + version_header.to_api_version_header("v1_20240408"), + ) # Validate the universe domain. self._client._validate_universe_domain() @@ -2033,10 +2007,9 @@ async def list_locations( gapic_v1.routing_header.to_grpc_metadata( (("name", request_pb.name),)), ) - if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER - metadata = tuple(metadata) + ( - version_header.to_api_version_header("v1_20240408"), - ) + metadata = tuple(metadata) + ( + version_header.to_api_version_header("v1_20240408"), + ) # Validate the universe domain. self._client._validate_universe_domain() diff --git a/packages/gapic-generator/tests/integration/goldens/showcase/google/showcase_v1beta1/services/echo/client.py b/packages/gapic-generator/tests/integration/goldens/showcase/google/showcase_v1beta1/services/echo/client.py index b364917567ac..c0631deab3c5 100755 --- a/packages/gapic-generator/tests/integration/goldens/showcase/google/showcase_v1beta1/services/echo/client.py +++ b/packages/gapic-generator/tests/integration/goldens/showcase/google/showcase_v1beta1/services/echo/client.py @@ -38,11 +38,7 @@ from google.auth.exceptions import MutualTLSChannelError # type: ignore from google.oauth2 import service_account # type: ignore import google.protobuf -try: - from google.api_core import version_header - HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER -except ImportError: # pragma: NO COVER - HAS_GOOGLE_API_CORE_VERSION_HEADER = False +from google.api_core import version_header try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] @@ -635,10 +631,9 @@ def sample_echo(): gapic_v1.routing_header.to_grpc_metadata(header_params), ) - if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER - metadata = tuple(metadata) + ( - version_header.to_api_version_header("v1_20240408"), - ) + metadata = tuple(metadata) + ( + version_header.to_api_version_header("v1_20240408"), + ) setup_request_id(request, 'request_id', False) setup_request_id(request, 'other_request_id', True) @@ -725,10 +720,9 @@ def sample_echo_error_details(): # and friendly error handling. rpc = self._transport._wrapped_methods[self._transport.echo_error_details] - if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER - metadata = tuple(metadata) + ( - version_header.to_api_version_header("v1_20240408"), - ) + metadata = tuple(metadata) + ( + version_header.to_api_version_header("v1_20240408"), + ) # Validate the universe domain. self._validate_universe_domain() @@ -813,10 +807,9 @@ def sample_fail_echo_with_details(): # and friendly error handling. rpc = self._transport._wrapped_methods[self._transport.fail_echo_with_details] - if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER - metadata = tuple(metadata) + ( - version_header.to_api_version_header("v1_20240408"), - ) + metadata = tuple(metadata) + ( + version_header.to_api_version_header("v1_20240408"), + ) # Validate the universe domain. self._validate_universe_domain() @@ -927,10 +920,9 @@ def sample_expand(): # and friendly error handling. rpc = self._transport._wrapped_methods[self._transport.expand] - if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER - metadata = tuple(metadata) + ( - version_header.to_api_version_header("v1_20240408"), - ) + metadata = tuple(metadata) + ( + version_header.to_api_version_header("v1_20240408"), + ) # Validate the universe domain. self._validate_universe_domain() @@ -1021,10 +1013,9 @@ def request_generator(): # and friendly error handling. rpc = self._transport._wrapped_methods[self._transport.collect] - if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER - metadata = tuple(metadata) + ( - version_header.to_api_version_header("v1_20240408"), - ) + metadata = tuple(metadata) + ( + version_header.to_api_version_header("v1_20240408"), + ) # Validate the universe domain. self._validate_universe_domain() @@ -1115,10 +1106,9 @@ def request_generator(): # and friendly error handling. rpc = self._transport._wrapped_methods[self._transport.chat] - if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER - metadata = tuple(metadata) + ( - version_header.to_api_version_header("v1_20240408"), - ) + metadata = tuple(metadata) + ( + version_header.to_api_version_header("v1_20240408"), + ) # Validate the universe domain. self._validate_universe_domain() @@ -1203,10 +1193,9 @@ def sample_paged_expand(): # and friendly error handling. rpc = self._transport._wrapped_methods[self._transport.paged_expand] - if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER - metadata = tuple(metadata) + ( - version_header.to_api_version_header("v1_20240408"), - ) + metadata = tuple(metadata) + ( + version_header.to_api_version_header("v1_20240408"), + ) # Validate the universe domain. self._validate_universe_domain() @@ -1306,10 +1295,9 @@ def sample_paged_expand_legacy(): # and friendly error handling. rpc = self._transport._wrapped_methods[self._transport.paged_expand_legacy] - if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER - metadata = tuple(metadata) + ( - version_header.to_api_version_header("v1_20240408"), - ) + metadata = tuple(metadata) + ( + version_header.to_api_version_header("v1_20240408"), + ) # Validate the universe domain. self._validate_universe_domain() @@ -1407,10 +1395,9 @@ def sample_paged_expand_legacy_mapped(): # and friendly error handling. rpc = self._transport._wrapped_methods[self._transport.paged_expand_legacy_mapped] - if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER - metadata = tuple(metadata) + ( - version_header.to_api_version_header("v1_20240408"), - ) + metadata = tuple(metadata) + ( + version_header.to_api_version_header("v1_20240408"), + ) # Validate the universe domain. self._validate_universe_domain() @@ -1507,10 +1494,9 @@ def sample_wait(): # and friendly error handling. rpc = self._transport._wrapped_methods[self._transport.wait] - if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER - metadata = tuple(metadata) + ( - version_header.to_api_version_header("v1_20240408"), - ) + metadata = tuple(metadata) + ( + version_header.to_api_version_header("v1_20240408"), + ) # Validate the universe domain. self._validate_universe_domain() @@ -1522,9 +1508,6 @@ def sample_wait(): timeout=timeout, metadata=metadata, ) - lro_metadata = None - if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER - lro_metadata = [version_header.to_api_version_header("v1_20240408")] # Wrap the response in an operation future. response = operation.from_gapic( @@ -1532,7 +1515,7 @@ def sample_wait(): self._transport.operations_client, gs_echo.WaitResponse, metadata_type=gs_echo.WaitMetadata, - grpc_metadata=lro_metadata, + grpc_metadata=[version_header.to_api_version_header("v1_20240408")], ) # Done; return the response. @@ -1600,10 +1583,9 @@ def sample_block(): # and friendly error handling. rpc = self._transport._wrapped_methods[self._transport.block] - if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER - metadata = tuple(metadata) + ( - version_header.to_api_version_header("v1_20240408"), - ) + metadata = tuple(metadata) + ( + version_header.to_api_version_header("v1_20240408"), + ) # Validate the universe domain. self._validate_universe_domain() @@ -1677,10 +1659,9 @@ def list_operations( gapic_v1.routing_header.to_grpc_metadata( (("name", request_pb.name),)), ) - if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER - metadata = tuple(metadata) + ( - version_header.to_api_version_header("v1_20240408"), - ) + metadata = tuple(metadata) + ( + version_header.to_api_version_header("v1_20240408"), + ) # Validate the universe domain. self._validate_universe_domain() @@ -1741,10 +1722,9 @@ def get_operation( gapic_v1.routing_header.to_grpc_metadata( (("name", request_pb.name),)), ) - if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER - metadata = tuple(metadata) + ( - version_header.to_api_version_header("v1_20240408"), - ) + metadata = tuple(metadata) + ( + version_header.to_api_version_header("v1_20240408"), + ) # Validate the universe domain. self._validate_universe_domain() @@ -1809,10 +1789,9 @@ def delete_operation( gapic_v1.routing_header.to_grpc_metadata( (("name", request_pb.name),)), ) - if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER - metadata = tuple(metadata) + ( - version_header.to_api_version_header("v1_20240408"), - ) + metadata = tuple(metadata) + ( + version_header.to_api_version_header("v1_20240408"), + ) # Validate the universe domain. self._validate_universe_domain() @@ -1868,10 +1847,9 @@ def cancel_operation( gapic_v1.routing_header.to_grpc_metadata( (("name", request_pb.name),)), ) - if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER - metadata = tuple(metadata) + ( - version_header.to_api_version_header("v1_20240408"), - ) + metadata = tuple(metadata) + ( + version_header.to_api_version_header("v1_20240408"), + ) # Validate the universe domain. self._validate_universe_domain() @@ -1990,10 +1968,9 @@ def set_iam_policy( gapic_v1.routing_header.to_grpc_metadata( (("resource", request_pb.resource),)), ) - if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER - metadata = tuple(metadata) + ( - version_header.to_api_version_header("v1_20240408"), - ) + metadata = tuple(metadata) + ( + version_header.to_api_version_header("v1_20240408"), + ) # Validate the universe domain. self._validate_universe_domain() @@ -2121,10 +2098,9 @@ def get_iam_policy( gapic_v1.routing_header.to_grpc_metadata( (("resource", request_pb.resource),)), ) - if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER - metadata = tuple(metadata) + ( - version_header.to_api_version_header("v1_20240408"), - ) + metadata = tuple(metadata) + ( + version_header.to_api_version_header("v1_20240408"), + ) # Validate the universe domain. self._validate_universe_domain() @@ -2190,10 +2166,9 @@ def test_iam_permissions( gapic_v1.routing_header.to_grpc_metadata( (("resource", request_pb.resource),)), ) - if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER - metadata = tuple(metadata) + ( - version_header.to_api_version_header("v1_20240408"), - ) + metadata = tuple(metadata) + ( + version_header.to_api_version_header("v1_20240408"), + ) # Validate the universe domain. self._validate_universe_domain() @@ -2254,10 +2229,9 @@ def get_location( gapic_v1.routing_header.to_grpc_metadata( (("name", request_pb.name),)), ) - if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER - metadata = tuple(metadata) + ( - version_header.to_api_version_header("v1_20240408"), - ) + metadata = tuple(metadata) + ( + version_header.to_api_version_header("v1_20240408"), + ) # Validate the universe domain. self._validate_universe_domain() @@ -2318,10 +2292,9 @@ def list_locations( gapic_v1.routing_header.to_grpc_metadata( (("name", request_pb.name),)), ) - if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER - metadata = tuple(metadata) + ( - version_header.to_api_version_header("v1_20240408"), - ) + metadata = tuple(metadata) + ( + version_header.to_api_version_header("v1_20240408"), + ) # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/gapic-generator/tests/integration/goldens/showcase/tests/unit/gapic/showcase_v1beta1/test_echo.py b/packages/gapic-generator/tests/integration/goldens/showcase/tests/unit/gapic/showcase_v1beta1/test_echo.py index 2189e24dfdfd..eed53e4bd8f7 100755 --- a/packages/gapic-generator/tests/integration/goldens/showcase/tests/unit/gapic/showcase_v1beta1/test_echo.py +++ b/packages/gapic-generator/tests/integration/goldens/showcase/tests/unit/gapic/showcase_v1beta1/test_echo.py @@ -71,11 +71,7 @@ import google.protobuf.duration_pb2 as duration_pb2 # type: ignore import google.protobuf.timestamp_pb2 as timestamp_pb2 # type: ignore import google.rpc.status_pb2 as status_pb2 # type: ignore -try: - from google.api_core import version_header - HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER -except ImportError: # pragma: NO COVER - HAS_GOOGLE_API_CORE_VERSION_HEADER = False +from google.api_core import version_header @@ -163,294 +159,228 @@ def test__get_client_cert_source(): ]) def test_echo_api_version_header(transport_name): client = EchoClient(credentials=ga_credentials.AnonymousCredentials(), transport=transport_name) - # TODO: Make this test unconditional once the minimum supported version of - # google-api-core becomes 2.19.0 or higher. - api_core_major, api_core_minor = [int(part) for part in api_core_version.__version__.split(".")[0:2]] - if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): - # Mock the actual call within the gRPC stub, and fake the request. - with mock.patch.object( - type(client.transport.echo), - '__call__' - ) as call: - call.return_value = gs_echo.EchoResponse() - client.echo() - - # Establish that the api version header was sent. - _, _, kw = call.mock_calls[0] - assert ( - version_header.API_VERSION_METADATA_KEY, - "v1_20240408", - ) in kw['metadata'] - else: - pytest.skip("google-api-core>=2.19.0 is required for `google.api_core.version_header`") + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.echo), + '__call__' + ) as call: + call.return_value = gs_echo.EchoResponse() + client.echo() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "v1_20240408", + ) in kw['metadata'] @pytest.mark.parametrize("transport_name", [ ("grpc"), ("rest"), ]) def test_echo_error_details_api_version_header(transport_name): client = EchoClient(credentials=ga_credentials.AnonymousCredentials(), transport=transport_name) - # TODO: Make this test unconditional once the minimum supported version of - # google-api-core becomes 2.19.0 or higher. - api_core_major, api_core_minor = [int(part) for part in api_core_version.__version__.split(".")[0:2]] - if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): - # Mock the actual call within the gRPC stub, and fake the request. - with mock.patch.object( - type(client.transport.echo_error_details), - '__call__' - ) as call: - call.return_value = gs_echo.EchoErrorDetailsResponse() - client.echo_error_details() - - # Establish that the api version header was sent. - _, _, kw = call.mock_calls[0] - assert ( - version_header.API_VERSION_METADATA_KEY, - "v1_20240408", - ) in kw['metadata'] - else: - pytest.skip("google-api-core>=2.19.0 is required for `google.api_core.version_header`") + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.echo_error_details), + '__call__' + ) as call: + call.return_value = gs_echo.EchoErrorDetailsResponse() + client.echo_error_details() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "v1_20240408", + ) in kw['metadata'] @pytest.mark.parametrize("transport_name", [ ("grpc"), ("rest"), ]) def test_fail_echo_with_details_api_version_header(transport_name): client = EchoClient(credentials=ga_credentials.AnonymousCredentials(), transport=transport_name) - # TODO: Make this test unconditional once the minimum supported version of - # google-api-core becomes 2.19.0 or higher. - api_core_major, api_core_minor = [int(part) for part in api_core_version.__version__.split(".")[0:2]] - if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): - # Mock the actual call within the gRPC stub, and fake the request. - with mock.patch.object( - type(client.transport.fail_echo_with_details), - '__call__' - ) as call: - call.return_value = gs_echo.FailEchoWithDetailsResponse() - client.fail_echo_with_details() - - # Establish that the api version header was sent. - _, _, kw = call.mock_calls[0] - assert ( - version_header.API_VERSION_METADATA_KEY, - "v1_20240408", - ) in kw['metadata'] - else: - pytest.skip("google-api-core>=2.19.0 is required for `google.api_core.version_header`") + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.fail_echo_with_details), + '__call__' + ) as call: + call.return_value = gs_echo.FailEchoWithDetailsResponse() + client.fail_echo_with_details() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "v1_20240408", + ) in kw['metadata'] @pytest.mark.parametrize("transport_name", [ ("grpc"), ("rest"), ]) def test_expand_api_version_header(transport_name): client = EchoClient(credentials=ga_credentials.AnonymousCredentials(), transport=transport_name) - # TODO: Make this test unconditional once the minimum supported version of - # google-api-core becomes 2.19.0 or higher. - api_core_major, api_core_minor = [int(part) for part in api_core_version.__version__.split(".")[0:2]] - if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): - # Mock the actual call within the gRPC stub, and fake the request. - with mock.patch.object( - type(client.transport.expand), - '__call__' - ) as call: - call.return_value = gs_echo.EchoResponse() - client.expand() - - # Establish that the api version header was sent. - _, _, kw = call.mock_calls[0] - assert ( - version_header.API_VERSION_METADATA_KEY, - "v1_20240408", - ) in kw['metadata'] - else: - pytest.skip("google-api-core>=2.19.0 is required for `google.api_core.version_header`") + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.expand), + '__call__' + ) as call: + call.return_value = gs_echo.EchoResponse() + client.expand() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "v1_20240408", + ) in kw['metadata'] @pytest.mark.parametrize("transport_name", [ ("grpc"), ("rest"), ]) def test_collect_api_version_header(transport_name): client = EchoClient(credentials=ga_credentials.AnonymousCredentials(), transport=transport_name) - # TODO: Make this test unconditional once the minimum supported version of - # google-api-core becomes 2.19.0 or higher. - api_core_major, api_core_minor = [int(part) for part in api_core_version.__version__.split(".")[0:2]] - if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): - # Mock the actual call within the gRPC stub, and fake the request. - with mock.patch.object( - type(client.transport.collect), - '__call__' - ) as call: - call.return_value = gs_echo.EchoResponse() - client.collect() - - # Establish that the api version header was sent. - _, _, kw = call.mock_calls[0] - assert ( - version_header.API_VERSION_METADATA_KEY, - "v1_20240408", - ) in kw['metadata'] - else: - pytest.skip("google-api-core>=2.19.0 is required for `google.api_core.version_header`") + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.collect), + '__call__' + ) as call: + call.return_value = gs_echo.EchoResponse() + client.collect() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "v1_20240408", + ) in kw['metadata'] @pytest.mark.parametrize("transport_name", [ ("grpc"), ("rest"), ]) def test_chat_api_version_header(transport_name): client = EchoClient(credentials=ga_credentials.AnonymousCredentials(), transport=transport_name) - # TODO: Make this test unconditional once the minimum supported version of - # google-api-core becomes 2.19.0 or higher. - api_core_major, api_core_minor = [int(part) for part in api_core_version.__version__.split(".")[0:2]] - if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): - # Mock the actual call within the gRPC stub, and fake the request. - with mock.patch.object( - type(client.transport.chat), - '__call__' - ) as call: - call.return_value = gs_echo.EchoResponse() - client.chat() - - # Establish that the api version header was sent. - _, _, kw = call.mock_calls[0] - assert ( - version_header.API_VERSION_METADATA_KEY, - "v1_20240408", - ) in kw['metadata'] - else: - pytest.skip("google-api-core>=2.19.0 is required for `google.api_core.version_header`") + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.chat), + '__call__' + ) as call: + call.return_value = gs_echo.EchoResponse() + client.chat() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "v1_20240408", + ) in kw['metadata'] @pytest.mark.parametrize("transport_name", [ ("grpc"), ("rest"), ]) def test_paged_expand_api_version_header(transport_name): client = EchoClient(credentials=ga_credentials.AnonymousCredentials(), transport=transport_name) - # TODO: Make this test unconditional once the minimum supported version of - # google-api-core becomes 2.19.0 or higher. - api_core_major, api_core_minor = [int(part) for part in api_core_version.__version__.split(".")[0:2]] - if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): - # Mock the actual call within the gRPC stub, and fake the request. - with mock.patch.object( - type(client.transport.paged_expand), - '__call__' - ) as call: - call.return_value = gs_echo.PagedExpandResponse() - client.paged_expand() - - # Establish that the api version header was sent. - _, _, kw = call.mock_calls[0] - assert ( - version_header.API_VERSION_METADATA_KEY, - "v1_20240408", - ) in kw['metadata'] - else: - pytest.skip("google-api-core>=2.19.0 is required for `google.api_core.version_header`") + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.paged_expand), + '__call__' + ) as call: + call.return_value = gs_echo.PagedExpandResponse() + client.paged_expand() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "v1_20240408", + ) in kw['metadata'] @pytest.mark.parametrize("transport_name", [ ("grpc"), ("rest"), ]) def test_paged_expand_legacy_api_version_header(transport_name): client = EchoClient(credentials=ga_credentials.AnonymousCredentials(), transport=transport_name) - # TODO: Make this test unconditional once the minimum supported version of - # google-api-core becomes 2.19.0 or higher. - api_core_major, api_core_minor = [int(part) for part in api_core_version.__version__.split(".")[0:2]] - if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): - # Mock the actual call within the gRPC stub, and fake the request. - with mock.patch.object( - type(client.transport.paged_expand_legacy), - '__call__' - ) as call: - call.return_value = gs_echo.PagedExpandResponse() - client.paged_expand_legacy() - - # Establish that the api version header was sent. - _, _, kw = call.mock_calls[0] - assert ( - version_header.API_VERSION_METADATA_KEY, - "v1_20240408", - ) in kw['metadata'] - else: - pytest.skip("google-api-core>=2.19.0 is required for `google.api_core.version_header`") + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.paged_expand_legacy), + '__call__' + ) as call: + call.return_value = gs_echo.PagedExpandResponse() + client.paged_expand_legacy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "v1_20240408", + ) in kw['metadata'] @pytest.mark.parametrize("transport_name", [ ("grpc"), ("rest"), ]) def test_paged_expand_legacy_mapped_api_version_header(transport_name): client = EchoClient(credentials=ga_credentials.AnonymousCredentials(), transport=transport_name) - # TODO: Make this test unconditional once the minimum supported version of - # google-api-core becomes 2.19.0 or higher. - api_core_major, api_core_minor = [int(part) for part in api_core_version.__version__.split(".")[0:2]] - if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): - # Mock the actual call within the gRPC stub, and fake the request. - with mock.patch.object( - type(client.transport.paged_expand_legacy_mapped), - '__call__' - ) as call: - call.return_value = gs_echo.PagedExpandLegacyMappedResponse() - client.paged_expand_legacy_mapped() - - # Establish that the api version header was sent. - _, _, kw = call.mock_calls[0] - assert ( - version_header.API_VERSION_METADATA_KEY, - "v1_20240408", - ) in kw['metadata'] - else: - pytest.skip("google-api-core>=2.19.0 is required for `google.api_core.version_header`") + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.paged_expand_legacy_mapped), + '__call__' + ) as call: + call.return_value = gs_echo.PagedExpandLegacyMappedResponse() + client.paged_expand_legacy_mapped() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "v1_20240408", + ) in kw['metadata'] @pytest.mark.parametrize("transport_name", [ ("grpc"), ("rest"), ]) def test_wait_api_version_header(transport_name): client = EchoClient(credentials=ga_credentials.AnonymousCredentials(), transport=transport_name) - # TODO: Make this test unconditional once the minimum supported version of - # google-api-core becomes 2.19.0 or higher. - api_core_major, api_core_minor = [int(part) for part in api_core_version.__version__.split(".")[0:2]] - if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): - # Mock the actual call within the gRPC stub, and fake the request. - with mock.patch.object( - type(client.transport.wait), - '__call__' - ) as call: - call.return_value = operations_pb2.Operation() - response = client.wait() - - # Establish that the api version header was sent. - _, _, kw = call.mock_calls[0] - assert ( - version_header.API_VERSION_METADATA_KEY, - "v1_20240408", - ) in kw['metadata'] - assert ( - version_header.API_VERSION_METADATA_KEY, - "v1_20240408", - ) in response._refresh.keywords["metadata"] - assert ( - version_header.API_VERSION_METADATA_KEY, - "v1_20240408", - ) in response._cancel.keywords["metadata"] - else: - pytest.skip("google-api-core>=2.19.0 is required for `google.api_core.version_header`") + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.wait), + '__call__' + ) as call: + call.return_value = operations_pb2.Operation() + response = client.wait() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "v1_20240408", + ) in kw['metadata'] + assert ( + version_header.API_VERSION_METADATA_KEY, + "v1_20240408", + ) in response._refresh.keywords["metadata"] + assert ( + version_header.API_VERSION_METADATA_KEY, + "v1_20240408", + ) in response._cancel.keywords["metadata"] @pytest.mark.parametrize("transport_name", [ ("grpc"), ("rest"), ]) def test_block_api_version_header(transport_name): client = EchoClient(credentials=ga_credentials.AnonymousCredentials(), transport=transport_name) - # TODO: Make this test unconditional once the minimum supported version of - # google-api-core becomes 2.19.0 or higher. - api_core_major, api_core_minor = [int(part) for part in api_core_version.__version__.split(".")[0:2]] - if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): - # Mock the actual call within the gRPC stub, and fake the request. - with mock.patch.object( - type(client.transport.block), - '__call__' - ) as call: - call.return_value = gs_echo.BlockResponse() - client.block() - - # Establish that the api version header was sent. - _, _, kw = call.mock_calls[0] - assert ( - version_header.API_VERSION_METADATA_KEY, - "v1_20240408", - ) in kw['metadata'] - else: - pytest.skip("google-api-core>=2.19.0 is required for `google.api_core.version_header`") + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.block), + '__call__' + ) as call: + call.return_value = gs_echo.BlockResponse() + client.block() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "v1_20240408", + ) in kw['metadata'] @pytest.mark.parametrize("error_code,cred_info_json,show_cred_info", [ @@ -2584,10 +2514,9 @@ def test_paged_expand_pager(transport_name: str = "grpc"): expected_metadata = () retry = retries.Retry() timeout = 5 - if HAS_GOOGLE_API_CORE_VERSION_HEADER: - expected_metadata = tuple(expected_metadata) + ( - version_header.to_api_version_header("v1_20240408"), - ) + expected_metadata = tuple(expected_metadata) + ( + version_header.to_api_version_header("v1_20240408"), + ) pager = client.paged_expand(request={}, retry=retry, timeout=timeout) assert pager._metadata == expected_metadata @@ -2949,10 +2878,9 @@ def test_paged_expand_legacy_pager(transport_name: str = "grpc"): expected_metadata = () retry = retries.Retry() timeout = 5 - if HAS_GOOGLE_API_CORE_VERSION_HEADER: - expected_metadata = tuple(expected_metadata) + ( - version_header.to_api_version_header("v1_20240408"), - ) + expected_metadata = tuple(expected_metadata) + ( + version_header.to_api_version_header("v1_20240408"), + ) pager = client.paged_expand_legacy(request={}, retry=retry, timeout=timeout) assert pager._metadata == expected_metadata @@ -8214,11 +8142,10 @@ def test_delete_operation_field_headers(): # Establish that the field header was sent. _, _, kw = call.mock_calls[0] assert ("x-goog-request-params", "name=locations",) in kw["metadata"] - if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER - assert ( - version_header.API_VERSION_METADATA_KEY, - "v1_20240408", - ) in kw["metadata"] + assert ( + version_header.API_VERSION_METADATA_KEY, + "v1_20240408", + ) in kw["metadata"] @pytest.mark.asyncio async def test_delete_operation_field_headers_async(): @@ -8245,11 +8172,10 @@ async def test_delete_operation_field_headers_async(): # Establish that the field header was sent. _, _, kw = call.mock_calls[0] assert ("x-goog-request-params", "name=locations",) in kw["metadata"] - if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER - assert ( - version_header.API_VERSION_METADATA_KEY, - "v1_20240408", - ) in kw["metadata"] + assert ( + version_header.API_VERSION_METADATA_KEY, + "v1_20240408", + ) in kw["metadata"] def test_delete_operation_from_dict(): @@ -8391,11 +8317,10 @@ def test_cancel_operation_field_headers(): # Establish that the field header was sent. _, _, kw = call.mock_calls[0] assert ("x-goog-request-params", "name=locations",) in kw["metadata"] - if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER - assert ( - version_header.API_VERSION_METADATA_KEY, - "v1_20240408", - ) in kw["metadata"] + assert ( + version_header.API_VERSION_METADATA_KEY, + "v1_20240408", + ) in kw["metadata"] @pytest.mark.asyncio async def test_cancel_operation_field_headers_async(): @@ -8422,11 +8347,10 @@ async def test_cancel_operation_field_headers_async(): # Establish that the field header was sent. _, _, kw = call.mock_calls[0] assert ("x-goog-request-params", "name=locations",) in kw["metadata"] - if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER - assert ( - version_header.API_VERSION_METADATA_KEY, - "v1_20240408", - ) in kw["metadata"] + assert ( + version_header.API_VERSION_METADATA_KEY, + "v1_20240408", + ) in kw["metadata"] def test_cancel_operation_from_dict(): @@ -8568,11 +8492,10 @@ def test_get_operation_field_headers(): # Establish that the field header was sent. _, _, kw = call.mock_calls[0] assert ("x-goog-request-params", "name=locations",) in kw["metadata"] - if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER - assert ( - version_header.API_VERSION_METADATA_KEY, - "v1_20240408", - ) in kw["metadata"] + assert ( + version_header.API_VERSION_METADATA_KEY, + "v1_20240408", + ) in kw["metadata"] @pytest.mark.asyncio async def test_get_operation_field_headers_async(): @@ -8599,11 +8522,10 @@ async def test_get_operation_field_headers_async(): # Establish that the field header was sent. _, _, kw = call.mock_calls[0] assert ("x-goog-request-params", "name=locations",) in kw["metadata"] - if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER - assert ( - version_header.API_VERSION_METADATA_KEY, - "v1_20240408", - ) in kw["metadata"] + assert ( + version_header.API_VERSION_METADATA_KEY, + "v1_20240408", + ) in kw["metadata"] def test_get_operation_from_dict(): @@ -8745,11 +8667,10 @@ def test_list_operations_field_headers(): # Establish that the field header was sent. _, _, kw = call.mock_calls[0] assert ("x-goog-request-params", "name=locations",) in kw["metadata"] - if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER - assert ( - version_header.API_VERSION_METADATA_KEY, - "v1_20240408", - ) in kw["metadata"] + assert ( + version_header.API_VERSION_METADATA_KEY, + "v1_20240408", + ) in kw["metadata"] @pytest.mark.asyncio async def test_list_operations_field_headers_async(): @@ -8776,11 +8697,10 @@ async def test_list_operations_field_headers_async(): # Establish that the field header was sent. _, _, kw = call.mock_calls[0] assert ("x-goog-request-params", "name=locations",) in kw["metadata"] - if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER - assert ( - version_header.API_VERSION_METADATA_KEY, - "v1_20240408", - ) in kw["metadata"] + assert ( + version_header.API_VERSION_METADATA_KEY, + "v1_20240408", + ) in kw["metadata"] def test_list_operations_from_dict(): @@ -8922,11 +8842,10 @@ def test_list_locations_field_headers(): # Establish that the field header was sent. _, _, kw = call.mock_calls[0] assert ("x-goog-request-params", "name=locations",) in kw["metadata"] - if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER - assert ( - version_header.API_VERSION_METADATA_KEY, - "v1_20240408", - ) in kw["metadata"] + assert ( + version_header.API_VERSION_METADATA_KEY, + "v1_20240408", + ) in kw["metadata"] @pytest.mark.asyncio async def test_list_locations_field_headers_async(): @@ -8953,11 +8872,10 @@ async def test_list_locations_field_headers_async(): # Establish that the field header was sent. _, _, kw = call.mock_calls[0] assert ("x-goog-request-params", "name=locations",) in kw["metadata"] - if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER - assert ( - version_header.API_VERSION_METADATA_KEY, - "v1_20240408", - ) in kw["metadata"] + assert ( + version_header.API_VERSION_METADATA_KEY, + "v1_20240408", + ) in kw["metadata"] def test_list_locations_from_dict(): @@ -9098,11 +9016,10 @@ def test_get_location_field_headers(): # Establish that the field header was sent. _, _, kw = call.mock_calls[0] assert ("x-goog-request-params", "name=locations/abc",) in kw["metadata"] - if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER - assert ( - version_header.API_VERSION_METADATA_KEY, - "v1_20240408", - ) in kw["metadata"] + assert ( + version_header.API_VERSION_METADATA_KEY, + "v1_20240408", + ) in kw["metadata"] @pytest.mark.asyncio async def test_get_location_field_headers_async(): @@ -9129,11 +9046,10 @@ async def test_get_location_field_headers_async(): # Establish that the field header was sent. _, _, kw = call.mock_calls[0] assert ("x-goog-request-params", "name=locations/abc",) in kw["metadata"] - if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER - assert ( - version_header.API_VERSION_METADATA_KEY, - "v1_20240408", - ) in kw["metadata"] + assert ( + version_header.API_VERSION_METADATA_KEY, + "v1_20240408", + ) in kw["metadata"] def test_get_location_from_dict(): @@ -9287,11 +9203,10 @@ def test_set_iam_policy_field_headers(): # Establish that the field header was sent. _, _, kw = call.mock_calls[0] assert ("x-goog-request-params", "resource=resource/value",) in kw["metadata"] - if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER - assert ( - version_header.API_VERSION_METADATA_KEY, - "v1_20240408", - ) in kw["metadata"] + assert ( + version_header.API_VERSION_METADATA_KEY, + "v1_20240408", + ) in kw["metadata"] @pytest.mark.asyncio async def test_set_iam_policy_field_headers_async(): @@ -9318,11 +9233,10 @@ async def test_set_iam_policy_field_headers_async(): # Establish that the field header was sent. _, _, kw = call.mock_calls[0] assert ("x-goog-request-params", "resource=resource/value",) in kw["metadata"] - if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER - assert ( - version_header.API_VERSION_METADATA_KEY, - "v1_20240408", - ) in kw["metadata"] + assert ( + version_header.API_VERSION_METADATA_KEY, + "v1_20240408", + ) in kw["metadata"] def test_set_iam_policy_from_dict(): @@ -9489,11 +9403,10 @@ def test_get_iam_policy_field_headers(): # Establish that the field header was sent. _, _, kw = call.mock_calls[0] assert ("x-goog-request-params", "resource=resource/value",) in kw["metadata"] - if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER - assert ( - version_header.API_VERSION_METADATA_KEY, - "v1_20240408", - ) in kw["metadata"] + assert ( + version_header.API_VERSION_METADATA_KEY, + "v1_20240408", + ) in kw["metadata"] @pytest.mark.asyncio @@ -9523,11 +9436,10 @@ async def test_get_iam_policy_field_headers_async(): # Establish that the field header was sent. _, _, kw = call.mock_calls[0] assert ("x-goog-request-params", "resource=resource/value",) in kw["metadata"] - if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER - assert ( - version_header.API_VERSION_METADATA_KEY, - "v1_20240408", - ) in kw["metadata"] + assert ( + version_header.API_VERSION_METADATA_KEY, + "v1_20240408", + ) in kw["metadata"] def test_get_iam_policy_from_dict(): @@ -9695,11 +9607,10 @@ def test_test_iam_permissions_field_headers(): # Establish that the field header was sent. _, _, kw = call.mock_calls[0] assert ("x-goog-request-params", "resource=resource/value",) in kw["metadata"] - if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER - assert ( - version_header.API_VERSION_METADATA_KEY, - "v1_20240408", - ) in kw["metadata"] + assert ( + version_header.API_VERSION_METADATA_KEY, + "v1_20240408", + ) in kw["metadata"] @pytest.mark.asyncio @@ -9731,11 +9642,10 @@ async def test_test_iam_permissions_field_headers_async(): # Establish that the field header was sent. _, _, kw = call.mock_calls[0] assert ("x-goog-request-params", "resource=resource/value",) in kw["metadata"] - if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER - assert ( - version_header.API_VERSION_METADATA_KEY, - "v1_20240408", - ) in kw["metadata"] + assert ( + version_header.API_VERSION_METADATA_KEY, + "v1_20240408", + ) in kw["metadata"] def test_test_iam_permissions_from_dict(): diff --git a/packages/gapic-generator/tests/system/test_api_version_header.py b/packages/gapic-generator/tests/system/test_api_version_header.py index be17b6a28608..ddb0f31fa104 100644 --- a/packages/gapic-generator/tests/system/test_api_version_header.py +++ b/packages/gapic-generator/tests/system/test_api_version_header.py @@ -11,20 +11,10 @@ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. -import pytest - -try: - from google.api_core import version_header -except ImportError: - version_header = None +from google.api_core import version_header def test_api_version_in_grpc_trailing_metadata(echo): - if not version_header: - pytest.skip( - "google-api-core>=2.19.0 is required for `google.api_core.version_header`" - ) - # This feature requires version 0.35.0 of `gapic-showcase` or newer which has the # ability to echo request headers content = "The hail in Wales falls mainly on the snails."