From ac460c227a4884803edf1869f70bc1f1fe578173 Mon Sep 17 00:00:00 2001 From: ohmayr Date: Wed, 9 Oct 2024 21:55:28 +0000 Subject: [PATCH 1/5] fix: add default library settings for incorrect lib version --- gapic/schema/api.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/gapic/schema/api.py b/gapic/schema/api.py index ce2fdc802..204eb0698 100644 --- a/gapic/schema/api.py +++ b/gapic/schema/api.py @@ -706,8 +706,11 @@ def all_library_settings( for library_setting in self.service_yaml_config.publishing.library_settings } - # Add default settings for the current proto package - if not result: + # NOTE: Add default settings for the current proto package + # for the following cases: + # - if library settings are not specified in the service config. + # - if library_settings.version != self.naming.proto_package (proto package name) + if self.naming.proto_package not in result: result = { self.naming.proto_package: client_pb2.ClientLibrarySettings( version=self.naming.proto_package From 42efd9fa0aa073bda6dd19870b071a788cacc372 Mon Sep 17 00:00:00 2001 From: ohmayr Date: Thu, 10 Oct 2024 04:30:15 +0000 Subject: [PATCH 2/5] minor fix --- gapic/schema/api.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/gapic/schema/api.py b/gapic/schema/api.py index 204eb0698..3dcc2c898 100644 --- a/gapic/schema/api.py +++ b/gapic/schema/api.py @@ -711,11 +711,9 @@ def all_library_settings( # - if library settings are not specified in the service config. # - if library_settings.version != self.naming.proto_package (proto package name) if self.naming.proto_package not in result: - result = { - self.naming.proto_package: client_pb2.ClientLibrarySettings( + result[self.naming.proto_package] = client_pb2.ClientLibrarySettings( version=self.naming.proto_package ) - } return result From 2bb3873a3e922118cd46fea33ef6dea70c0c69c4 Mon Sep 17 00:00:00 2001 From: ohmayr Date: Thu, 10 Oct 2024 04:34:24 +0000 Subject: [PATCH 3/5] fix style --- gapic/schema/api.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gapic/schema/api.py b/gapic/schema/api.py index 3dcc2c898..f7a7669f8 100644 --- a/gapic/schema/api.py +++ b/gapic/schema/api.py @@ -712,7 +712,7 @@ def all_library_settings( # - if library_settings.version != self.naming.proto_package (proto package name) if self.naming.proto_package not in result: result[self.naming.proto_package] = client_pb2.ClientLibrarySettings( - version=self.naming.proto_package + version=self.naming.proto_package ) return result From f643db28708d452ed5396add4934486af7994d4f Mon Sep 17 00:00:00 2001 From: ohmayr Date: Thu, 10 Oct 2024 15:22:05 +0000 Subject: [PATCH 4/5] add unit test --- tests/unit/schema/test_api.py | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/tests/unit/schema/test_api.py b/tests/unit/schema/test_api.py index c8bf9706d..83119d4a6 100644 --- a/tests/unit/schema/test_api.py +++ b/tests/unit/schema/test_api.py @@ -2741,6 +2741,35 @@ def test_read_empty_python_settings_from_service_yaml(): == client_pb2.PythonSettings.ExperimentalFeatures() assert api_schema.all_library_settings["google.example.v1beta1"].python_settings.experimental_features.rest_async_io_enabled \ == False + assert api_schema.all_library_settings[api_schema.naming.proto_package].python_settings \ + == client_pb2.PythonSettings() + + +def test_incorrect_library_settings_version(): +# NOTE: This test case ensures that the generator is able to read +# from the default library settings if the version specified against the +# library settings in the service yaml of an API differs from the version +# of the API. + service_yaml_config = { + "apis": [ + {"name": "google.example.v1beta1.ServiceOne.Example1"}, + ], + "publishing": { + "library_settings": [ + { + "version": "google.example.v1", + "python_settings": { + "experimental_features": {"rest_async_io_enabled": True}, + }, + } + ] + }, + } + cli_options = Options(service_yaml_config=service_yaml_config) + fd = get_file_descriptor_proto_for_tests(fields=[]) + api_schema = api.API.build(fd, "google.example.v1beta1", opts=cli_options) + assert api_schema.all_library_settings[api_schema.naming.proto_package].python_settings \ + == client_pb2.PythonSettings() def test_python_settings_duplicate_version_raises_error(): From bb3b20cb4126631588fdd339d9a9035b19f3ab5c Mon Sep 17 00:00:00 2001 From: ohmayr Date: Thu, 10 Oct 2024 15:23:59 +0000 Subject: [PATCH 5/5] fix style --- tests/unit/schema/test_api.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/unit/schema/test_api.py b/tests/unit/schema/test_api.py index 83119d4a6..afe9b1434 100644 --- a/tests/unit/schema/test_api.py +++ b/tests/unit/schema/test_api.py @@ -2746,10 +2746,10 @@ def test_read_empty_python_settings_from_service_yaml(): def test_incorrect_library_settings_version(): -# NOTE: This test case ensures that the generator is able to read -# from the default library settings if the version specified against the -# library settings in the service yaml of an API differs from the version -# of the API. + # NOTE: This test case ensures that the generator is able to read + # from the default library settings if the version specified against the + # library settings in the service yaml of an API differs from the version + # of the API. service_yaml_config = { "apis": [ {"name": "google.example.v1beta1.ServiceOne.Example1"},