Skip to content

Commit

Permalink
fix: add default library settings for incorrect lib version (#2212)
Browse files Browse the repository at this point in the history
  • Loading branch information
ohmayr authored Oct 10, 2024
1 parent 2a64229 commit de46272
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 6 deletions.
13 changes: 7 additions & 6 deletions gapic/schema/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -706,13 +706,14 @@ 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:
result = {
self.naming.proto_package: client_pb2.ClientLibrarySettings(
version=self.naming.proto_package
# 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
)
}

return result

Expand Down
29 changes: 29 additions & 0 deletions tests/unit/schema/test_api.py
Original file line number Diff line number Diff line change
Expand Up @@ -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():
Expand Down

0 comments on commit de46272

Please sign in to comment.