From d16c5cd856e30a15db0bb02e6e060b3f7eb7366e Mon Sep 17 00:00:00 2001 From: Min Zhu Date: Fri, 7 Mar 2025 16:57:19 -0500 Subject: [PATCH 1/6] feat(generator): identify mono repo from config instead of len --- generation_config.yaml | 2 ++ hermetic_build/common/model/generation_config.py | 6 +++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/generation_config.yaml b/generation_config.yaml index 432348b55e..1b3de1e436 100644 --- a/generation_config.yaml +++ b/generation_config.yaml @@ -1,4 +1,6 @@ googleapis_commitish: 0a459af4362c0e41b9723dd4d7edc022c552db40 +is_monorepo: true + # the libraries are ordered with respect to library name, which is # java-{library.library_name} or java-{library.api-shortname} when # library.library_name is not defined. diff --git a/hermetic_build/common/model/generation_config.py b/hermetic_build/common/model/generation_config.py index c8aaf6b2ad..5f7c63e0d9 100644 --- a/hermetic_build/common/model/generation_config.py +++ b/hermetic_build/common/model/generation_config.py @@ -25,6 +25,7 @@ COMMON_PROTOS_LIBRARY_NAME = "common-protos" GAPIC_GENERATOR_VERSION = "gapic_generator_version" LIBRARIES_BOM_VERSION = "libraries_bom_version" +IS_MONOREPO = "is_monorepo" GENERATOR_VERSION_ENV_KEY = "GENERATOR_VERSION" @@ -39,6 +40,7 @@ def __init__( libraries: list[LibraryConfig], gapic_generator_version: Optional[str] = None, libraries_bom_version: Optional[str] = None, + monorepo: Optional[bool] = False, ): self.googleapis_commitish = googleapis_commitish self.libraries_bom_version = ( @@ -48,6 +50,7 @@ def __init__( gapic_generator_version ) self.libraries = libraries + self.monorepo = monorepo # explicit set to None so that we can compute the # value in getter. self.__contains_common_protos = None @@ -66,7 +69,7 @@ def get_proto_path_to_library_name(self) -> dict[str, str]: return paths def is_monorepo(self) -> bool: - return len(self.libraries) > 1 + return self.monorepo def contains_common_protos(self) -> bool: if self.__contains_common_protos is None: @@ -169,6 +172,7 @@ def from_yaml(path_to_yaml: str) -> GenerationConfig: ), gapic_generator_version=__optional(config, GAPIC_GENERATOR_VERSION, None), libraries_bom_version=__optional(config, LIBRARIES_BOM_VERSION, None), + monorepo=__optional(config, IS_MONOREPO, False), libraries=parsed_libraries, ) From ab7f7dcedc0ea5ee692aac07ebe5933fec1c81b4 Mon Sep 17 00:00:00 2001 From: Min Zhu Date: Mon, 10 Mar 2025 15:26:18 -0400 Subject: [PATCH 2/6] test: it test config changes. --- .../integration/google-cloud-java/generation_config.yaml | 1 + .../resources/integration/java-bigtable/generation_config.yaml | 1 + 2 files changed, 2 insertions(+) diff --git a/hermetic_build/library_generation/tests/resources/integration/google-cloud-java/generation_config.yaml b/hermetic_build/library_generation/tests/resources/integration/google-cloud-java/generation_config.yaml index d71f3863ec..8d94b0ba88 100644 --- a/hermetic_build/library_generation/tests/resources/integration/google-cloud-java/generation_config.yaml +++ b/hermetic_build/library_generation/tests/resources/integration/google-cloud-java/generation_config.yaml @@ -1,6 +1,7 @@ gapic_generator_version: 2.38.1 googleapis_commitish: 4ce0ff67a3d4509be641cbe47a35844ddc1268fc libraries_bom_version: 26.37.0 +is_monorepo: true libraries: - api_shortname: apigeeconnect name_pretty: Apigee Connect diff --git a/hermetic_build/library_generation/tests/resources/integration/java-bigtable/generation_config.yaml b/hermetic_build/library_generation/tests/resources/integration/java-bigtable/generation_config.yaml index c6912c8125..9b07b6485f 100644 --- a/hermetic_build/library_generation/tests/resources/integration/java-bigtable/generation_config.yaml +++ b/hermetic_build/library_generation/tests/resources/integration/java-bigtable/generation_config.yaml @@ -1,6 +1,7 @@ gapic_generator_version: 2.37.0 protoc_version: 25.2 googleapis_commitish: 9868a57470a969ffa1d21194a5c05d7a6e4e98cc +is_monorepo: false libraries: - api_shortname: bigtable name_pretty: Cloud Bigtable From e596c95aebf407b6a515679bc5198341bf12f334 Mon Sep 17 00:00:00 2001 From: Min Zhu Date: Mon, 10 Mar 2025 16:19:46 -0400 Subject: [PATCH 3/6] add unit test. --- .../common/tests/model/generation_config_unit_tests.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/hermetic_build/common/tests/model/generation_config_unit_tests.py b/hermetic_build/common/tests/model/generation_config_unit_tests.py index e769a9a723..3d9a88dabe 100644 --- a/hermetic_build/common/tests/model/generation_config_unit_tests.py +++ b/hermetic_build/common/tests/model/generation_config_unit_tests.py @@ -127,11 +127,21 @@ def test_is_monorepo_with_one_library_returns_false(self): ) self.assertFalse(config.is_monorepo()) + def test_is_monorepo_with_one_library_explicit_set_true(self): + config = GenerationConfig( + gapic_generator_version="", + googleapis_commitish="", + libraries=[library_1], + monorepo=True + ) + self.assertTrue(config.is_monorepo()) + def test_is_monorepo_with_two_libraries_returns_true(self): config = GenerationConfig( gapic_generator_version="", googleapis_commitish="", libraries=[library_1, library_2], + monorepo=True ) self.assertTrue(config.is_monorepo()) From 56de0eb79a830e9e492e22e67542f820343895c8 Mon Sep 17 00:00:00 2001 From: Min Zhu Date: Mon, 10 Mar 2025 16:20:47 -0400 Subject: [PATCH 4/6] lint --- .../common/tests/model/generation_config_unit_tests.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/hermetic_build/common/tests/model/generation_config_unit_tests.py b/hermetic_build/common/tests/model/generation_config_unit_tests.py index 3d9a88dabe..19cade4de3 100644 --- a/hermetic_build/common/tests/model/generation_config_unit_tests.py +++ b/hermetic_build/common/tests/model/generation_config_unit_tests.py @@ -132,7 +132,7 @@ def test_is_monorepo_with_one_library_explicit_set_true(self): gapic_generator_version="", googleapis_commitish="", libraries=[library_1], - monorepo=True + monorepo=True, ) self.assertTrue(config.is_monorepo()) @@ -141,7 +141,7 @@ def test_is_monorepo_with_two_libraries_returns_true(self): gapic_generator_version="", googleapis_commitish="", libraries=[library_1, library_2], - monorepo=True + monorepo=True, ) self.assertTrue(config.is_monorepo()) From be825a7d5858b2d420a14a37a31580b38cbcfa6f Mon Sep 17 00:00:00 2001 From: Min Zhu Date: Mon, 10 Mar 2025 17:53:21 -0400 Subject: [PATCH 5/6] unit test updates --- .../library_generation/tests/utilities_unit_tests.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/hermetic_build/library_generation/tests/utilities_unit_tests.py b/hermetic_build/library_generation/tests/utilities_unit_tests.py index a6796b706d..f9c51ef3db 100644 --- a/hermetic_build/library_generation/tests/utilities_unit_tests.py +++ b/hermetic_build/library_generation/tests/utilities_unit_tests.py @@ -343,10 +343,13 @@ def __get_a_gen_config( """ if combination == 1: libraries = [library_1] + monorepo = False elif combination == 2: libraries = [library_1, library_2] + monorepo = True else: libraries = [library_1, common_protos] + monorepo = True # update libraries with custom configuration (for now, only # library_type) @@ -363,6 +366,7 @@ def __get_a_gen_config( gapic_generator_version="", googleapis_commitish="", libraries=libraries, + monorepo=monorepo, ) @staticmethod From 365206297f9446b84c78c41da914ee197adfd383 Mon Sep 17 00:00:00 2001 From: Min Zhu Date: Mon, 10 Mar 2025 21:39:53 -0400 Subject: [PATCH 6/6] update generation_configs used as test resources to use is_monorepo. --- .../tests/resources/test-config/generation_config.yaml | 1 + .../test-config/generation_config_library_modified.yaml | 1 + .../generation_config_with_duplicate_library_name.yaml | 1 + .../tests/resources/test-config/monorepo_baseline.yaml | 1 + .../tests/resources/test-config/monorepo_current.yaml | 1 + .../tests/resources/test-config/monorepo_with_common_protos.yaml | 1 + .../resources/test-config/monorepo_without_common_protos.yaml | 1 + 7 files changed, 7 insertions(+) diff --git a/hermetic_build/library_generation/tests/resources/test-config/generation_config.yaml b/hermetic_build/library_generation/tests/resources/test-config/generation_config.yaml index 168c8fd9a5..e47bab1ea4 100644 --- a/hermetic_build/library_generation/tests/resources/test-config/generation_config.yaml +++ b/hermetic_build/library_generation/tests/resources/test-config/generation_config.yaml @@ -2,6 +2,7 @@ gapic_generator_version: 2.34.0 protoc_version: 25.2 googleapis_commitish: 1a45bf7393b52407188c82e63101db7dc9c72026 libraries_bom_version: 26.37.0 +is_monorepo: false libraries: - api_shortname: cloudasset name_pretty: Cloud Asset Inventory diff --git a/hermetic_build/library_generation/tests/resources/test-config/generation_config_library_modified.yaml b/hermetic_build/library_generation/tests/resources/test-config/generation_config_library_modified.yaml index f9ae96693b..f420538e3b 100644 --- a/hermetic_build/library_generation/tests/resources/test-config/generation_config_library_modified.yaml +++ b/hermetic_build/library_generation/tests/resources/test-config/generation_config_library_modified.yaml @@ -1,6 +1,7 @@ gapic_generator_version: 2.34.0 googleapis_commitish: 1a45bf7393b52407188c82e63101db7dc9c72026 libraries_bom_version: 26.37.0 +is_monorepo: false libraries: - api_shortname: cloudasset name_pretty: Cloud Asset Inventory diff --git a/hermetic_build/library_generation/tests/resources/test-config/generation_config_with_duplicate_library_name.yaml b/hermetic_build/library_generation/tests/resources/test-config/generation_config_with_duplicate_library_name.yaml index c5613f4308..573c44c20c 100644 --- a/hermetic_build/library_generation/tests/resources/test-config/generation_config_with_duplicate_library_name.yaml +++ b/hermetic_build/library_generation/tests/resources/test-config/generation_config_with_duplicate_library_name.yaml @@ -2,6 +2,7 @@ gapic_generator_version: 2.34.0 protoc_version: 25.2 googleapis_commitish: 1a45bf7393b52407188c82e63101db7dc9c72026 libraries_bom_version: 26.37.0 +is_monorepo: true owlbot_cli_image: sha256:623647ee79ac605858d09e60c1382a716c125fb776f69301b72de1cd35d49409 synthtool_commitish: 6612ab8f3afcd5e292aecd647f0fa68812c9f5b5 template_excludes: diff --git a/hermetic_build/library_generation/tests/resources/test-config/monorepo_baseline.yaml b/hermetic_build/library_generation/tests/resources/test-config/monorepo_baseline.yaml index c2c4fd4a3b..9f4f8b83ed 100644 --- a/hermetic_build/library_generation/tests/resources/test-config/monorepo_baseline.yaml +++ b/hermetic_build/library_generation/tests/resources/test-config/monorepo_baseline.yaml @@ -1,6 +1,7 @@ gapic_generator_version: 2.34.0 googleapis_commitish: 1a45bf7393b52407188c82e63101db7dc9c72026 libraries_bom_version: 26.37.0 +is_monorepo: true libraries: - api_shortname: cloudasset name_pretty: Cloud Asset Inventory diff --git a/hermetic_build/library_generation/tests/resources/test-config/monorepo_current.yaml b/hermetic_build/library_generation/tests/resources/test-config/monorepo_current.yaml index 3ee2c8be2c..39bf4b9e32 100644 --- a/hermetic_build/library_generation/tests/resources/test-config/monorepo_current.yaml +++ b/hermetic_build/library_generation/tests/resources/test-config/monorepo_current.yaml @@ -1,6 +1,7 @@ gapic_generator_version: 2.34.0 googleapis_commitish: 1a45bf7393b52407188c82e63101db7dc9c72026 libraries_bom_version: 26.37.0 +is_monorepo: true libraries: - api_shortname: cloudasset name_pretty: Cloud Asset Inventory diff --git a/hermetic_build/library_generation/tests/resources/test-config/monorepo_with_common_protos.yaml b/hermetic_build/library_generation/tests/resources/test-config/monorepo_with_common_protos.yaml index 6d4c94444a..c0e04a443a 100644 --- a/hermetic_build/library_generation/tests/resources/test-config/monorepo_with_common_protos.yaml +++ b/hermetic_build/library_generation/tests/resources/test-config/monorepo_with_common_protos.yaml @@ -1,5 +1,6 @@ googleapis_commitish: 6a474b31c53cc1797710206824a17b364a835d2d gapic_generator_version: 2.34.0 +is_monorepo: true # the libraries are ordered with respect to library name, which is # java-{library.library_name} or java-{library.api-shortname} when # library.library_name is not defined. diff --git a/hermetic_build/library_generation/tests/resources/test-config/monorepo_without_common_protos.yaml b/hermetic_build/library_generation/tests/resources/test-config/monorepo_without_common_protos.yaml index ca21ccfb01..1fea7682ac 100644 --- a/hermetic_build/library_generation/tests/resources/test-config/monorepo_without_common_protos.yaml +++ b/hermetic_build/library_generation/tests/resources/test-config/monorepo_without_common_protos.yaml @@ -2,6 +2,7 @@ gapic_generator_version: 2.34.0 protoc_version: 25.2 googleapis_commitish: 1a45bf7393b52407188c82e63101db7dc9c72026 libraries_bom_version: 26.37.0 +is_monorepo: true libraries: - api_shortname: cloudasset name_pretty: Cloud Asset Inventory