Description
The pre-release test failed in PR #1932 around the time of a protobuf pre-release protobuf==5.26.0rc2
. https://pypi.org/project/protobuf/5.26.0rc2/
The test is failing because the including_default_value_fields
argument was renamed in MessageToJson
.
The default value of including_default_value_fields
is False
, which is the same value that is being set, so we can remove it from the call to resolve the issue.
version 3.19.6 - default value of including_default_value_fields
is False
https://github.com/protocolbuffers/protobuf/blob/5cba162a5d93f8df786d828621019e03e50edb4f/python/google/protobuf/json_format.py#L92
At the time that the argument was removed - default value of including_default_value_fields
is False
protocolbuffers/protobuf@2699579#diff-8de817c14d6a087981503c9aea38730b1b3e98f4e306db5ff9d525c7c304f234
=================================== FAILURES ===================================
_________ test_generate_access_token_rest[GenerateAccessTokenRequest] __________
request_type = <class 'google.iam.credentials_v1.types.common.GenerateAccessTokenRequest'>
@pytest.mark.parametrize("request_type", [
common.GenerateAccessTokenRequest,
dict,
])
def test_generate_access_token_rest(request_type):
client = IAMCredentialsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
request_init = {'name': 'projects/sample1/serviceAccounts/sample2'}
request = request_type(**request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), 'request') as req:
# Designate an appropriate value for the returned response.
return_value = common.GenerateAccessTokenResponse(
access_token='access_token_value',
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
# Convert return value to protobuf type
return_value = common.GenerateAccessTokenResponse.pb(return_value)
json_return_value = json_format.MessageToJson(return_value)
response_value._content = json_return_value.encode('UTF-8')
req.return_value = response_value
> response = client.generate_access_token(request)
tests/unit/gapic/credentials_v1/test_iam_credentials.py:1823:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
google/iam/credentials_v1/services/iam_credentials/client.py:724: in generate_access_token
response = rpc(
.nox/prerelease_deps/lib/python3.12/site-packages/google/api_core/gapic_v1/method.py:131: in __call__
return wrapped_func(*args, **kwargs)
.nox/prerelease_deps/lib/python3.12/site-packages/google/api_core/retry/retry_unary.py:293: in retry_wrapped_func
return retry_target(
.nox/prerelease_deps/lib/python3.12/site-packages/google/api_core/retry/retry_unary.py:153: in retry_target
_retry_error_helper(
.nox/prerelease_deps/lib/python3.12/site-packages/google/api_core/retry/retry_base.py:212: in _retry_error_helper
raise final_exc from source_exc
.nox/prerelease_deps/lib/python3.12/site-packages/google/api_core/retry/retry_unary.py:144: in retry_target
result = target()
.nox/prerelease_deps/lib/python3.12/site-packages/google/api_core/timeout.py:120: in func_with_timeout
return func(*args, **kwargs)
.nox/prerelease_deps/lib/python3.12/site-packages/google/api_core/grpc_helpers.py:76: in error_remapped_callable
return callable_(*args, **kwargs)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = IAMCredentialsRestTransport._GenerateAccessToken(_session=<google.auth.transport.requests.AuthorizedSession object at ...le.iam.credentials_v1.services.iam_credentials.transports.rest.IAMCredentialsRestInterceptor object at 0x7f0783088f80>)
request = name: "projects/sample1/serviceAccounts/sample2"
def __call__(self,
request: common.GenerateAccessTokenRequest, *,
retry: OptionalRetry=gapic_v1.method.DEFAULT,
timeout: Optional[float]=None,
metadata: Sequence[Tuple[str, str]]=(),
) -> common.GenerateAccessTokenResponse:
r"""Call the generate access token method over HTTP.
Args:
request (~.common.GenerateAccessTokenRequest):
The request object.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
should be retried.
timeout (float): The timeout for this request.
metadata (Sequence[Tuple[str, str]]): Strings which should be
sent along with the request as metadata.
Returns:
~.common.GenerateAccessTokenResponse:
"""
http_options: List[Dict[str, str]] = [{
'method': 'post',
'uri': '/v1/{name=projects/*/serviceAccounts/*}:generateAccessToken',
'body': '*',
},
]
request, metadata = self._interceptor.pre_generate_access_token(request, metadata)
pb_request = common.GenerateAccessTokenRequest.pb(request)
transcoded_request = path_template.transcode(http_options, pb_request)
# Jsonify the request body
> body = json_format.MessageToJson(
transcoded_request['body'],
including_default_value_fields=False,
use_integers_for_enums=False
)
E TypeError: MessageToJson() got an unexpected keyword argument 'including_default_value_fields'
google/iam/credentials_v1/services/iam_credentials/transports/rest.py:325: TypeError