Conversation
| def get_changed_libraries(self) -> Optional[list[str]]: | ||
| """ | ||
| Returns library name of changed libraries. | ||
| None if there is a repository level change. |
There was a problem hiding this comment.
None has a deep meaning related to all libraries being processed. I think it would help to explain what it means. For example "None represents that all libraries are affected", or return a constant ALL_LIBRARIES_CHANGED=None to make it self-explanatory.
| :param repo_url: the repository contains the commit history. | ||
| :return: QualifiedCommit objects. | ||
| """ | ||
| tmp_dir = "/tmp/repo" |
There was a problem hiding this comment.
Is it possible to download googleapis in the output folder? This is just because we will convert our scripts to only use output and not /tmp in favor of running docker containers in parallel.
There was a problem hiding this comment.
I changed to sh_util("get_output_folder")
| qualified_commits = self.get_qualified_commits() | ||
| library_names = [] | ||
| for qualified_commit in qualified_commits: | ||
| library_names.extend(qualified_commit.libraries) |
There was a problem hiding this comment.
If I understand correctly, library_names could end up with repeated library names. Is this handled in any way?
If not, we can remove duplicates with something like return list(set(library_names))
There was a problem hiding this comment.
Good catch.
I updated the method to return a list of unique library names in ascending order and added a unit test to verify it.
| shutil.rmtree(tmp_dir, ignore_errors=True) | ||
| return qualified_commits | ||
|
|
||
| def __get_library_name_from_qualified_commits(self) -> list[str]: |
There was a problem hiding this comment.
| def __get_library_name_from_qualified_commits(self) -> list[str]: | |
| def __get_library_names_from_qualified_commits(self) -> list[str]: |
(This may imply more changes than just changing this line)
| """ | ||
| Returns a qualified commit from the given Commit object; otherwise None. | ||
|
|
||
| :param proto_paths: |
There was a problem hiding this comment.
Would you mind expanding this comment to tell what are the expected contents of each key and value in proto_paths?
| baseline_config=ConfigChangeTest.__get_a_gen_config(), | ||
| latest_config=ConfigChangeTest.__get_a_gen_config(), | ||
| ) | ||
| self.assertIsNone(config_change.get_changed_libraries()) |
There was a problem hiding this comment.
Similar to one of the comments above, the test would be a bit more readable if we added something like self.assertEquals(ALL_LIBRARIES_AFFECTED, config_change.get_changed_libraries())
| self.assertEqual(3, len(qualified_commits)) | ||
| self.assertEqual({"gke-backup"}, qualified_commits[0].libraries) | ||
| self.assertEqual( | ||
| "b8691edb3f1d3c1583aa9cd89240eb359eebe9c7", |
There was a problem hiding this comment.
nit: can we use variable names for these commit hashes? This is just in order to make the test more self-explanatory.
|
|
||
| def find_versioned_proto_path(file_path: str) -> str: | ||
| """ | ||
| Returns a versioned proto_path from a given file_path; or file_path itself |
There was a problem hiding this comment.
Can we clarify that file_path should be a proto file?
| output = "" | ||
| with subprocess.Popen( | ||
| ["bash", "-exc", f"source {script_dir}/utilities.sh && {statement}"], | ||
| ["bash", "-exc", f"source {script_dir}/../utilities.sh && {statement}"], |
There was a problem hiding this comment.
How about move utilities.sh as well?
blakeli0
left a comment
There was a problem hiding this comment.
LGTM. Please track the refactoring and potential issues discussed in this PR in our project plan.
|
|
In this PR: - Add `config_change.py` to get: - Changed libraries, which will be passed to `generate_repo.py` to generate libraries selectedly. - Qualified commits, which will be passed to `generate_pr_description.py` to generate PR description. - Refactor part of utility methods to `proto_path_utils.py`. - Refactor `generation_config_comparator.py` to move data class to `config_change.py`. - Refactor `utilities.py` and `utilities.sh` to `utils/utilities.py` and `utils/utilities.sh`. - Add unit tests. Follow up of #2587 For the goal of series of PRs, please refer to [improvement proposal](https://docs.google.com/document/d/1JiCcG3X7lnxaJErKe0ES_JkyU7ECb40nf2Xez3gWvuo/edit?tab=t.g3vua2kd06gx#bookmark=id.72s3ukwwzevo).
In this PR: - Create `entry_point.py` to combine `generate_repo.py` and `generate_pr_description.py`. - Change Integration test. Follow up of #2604. For the goal of series of PRs, please refer to [improvement proposal](https://docs.google.com/document/d/1JiCcG3X7lnxaJErKe0ES_JkyU7ECb40nf2Xez3gWvuo/edit?tab=t.g3vua2kd06gx#bookmark=id.72s3ukwwzevo).
🤖 I have created a release *beep* *boop* --- <details><summary>2.39.0</summary> ## [2.39.0](v2.38.1...v2.39.0) (2024-04-18) ### Features * add `libraries_bom_version` to generation configuration ([#2639](#2639)) ([56c7ca5](56c7ca5)) * Add ChannelPoolSettings Getter for gRPC's ChannelProvider ([#2612](#2612)) ([d0c5191](d0c5191)) * add config change ([#2604](#2604)) ([8312706](8312706)) * add entry point ([#2616](#2616)) ([b19fa33](b19fa33)) * add generation config comparator ([#2587](#2587)) ([a94c2f0](a94c2f0)) * Add JavadocJar Task to build.gradle for self service libraries ([#2593](#2593)) ([993f5ac](993f5ac)) * Client/StubSettings' getEndpoint() returns the resolved endpoint ([#2440](#2440)) ([4942bc1](4942bc1)) * generate selected libraries ([#2598](#2598)) ([739ddbb](739ddbb)) * Validate the Universe Domain inside Java-Core ([#2592](#2592)) ([35d789f](35d789f)) ### Bug Fixes * add main to `generate_repo.py` ([#2607](#2607)) ([fedeb32](fedeb32)) * correct deep-remove and deep-preserve regexes ([#2572](#2572)) ([4c7fd88](4c7fd88)) * first attempt should use the min of RPC timeout and total timeout ([#2641](#2641)) ([0349232](0349232)) * remove duplicated calls to AutoValue builders ([#2636](#2636)) ([53a3727](53a3727)) * remove unnecessary slf4j and AbstractGoogleClientRequest native image configs ([0cb7d0e](0cb7d0e)) * remove unnecessary slf4j and AbstractGoogleClientRequest native image configs ([#2628](#2628)) ([0cb7d0e](0cb7d0e)) ### Dependencies * update arrow.version to v15.0.2 ([#2589](#2589)) ([777acf3](777acf3)) * update dependency com.google.cloud.opentelemetry:detector-resources-support to v0.28.0 ([#2649](#2649)) ([e4ed176](e4ed176)) * update dependency gitpython to v3.1.41 [security] ([#2625](#2625)) ([e41bd8f](e41bd8f)) * update dependency net.bytebuddy:byte-buddy to v1.14.13 ([#2646](#2646)) ([73ac5a4](73ac5a4)) * update dependency org.threeten:threeten-extra to v1.8.0 ([#2650](#2650)) ([226325a](226325a)) * update dependency org.threeten:threetenbp to v1.6.9 ([#2602](#2602)) ([371753e](371753e)) * update dependency org.threeten:threetenbp to v1.6.9 ([#2665](#2665)) ([8935bc8](8935bc8)) * update google api dependencies ([#2584](#2584)) ([cd20604](cd20604)) * update googleapis/java-cloud-bom digest to 7071341 ([#2608](#2608)) ([8d74140](8d74140)) * update netty dependencies to v4.1.109.final ([#2597](#2597)) ([8990693](8990693)) * update opentelemetry-java monorepo to v1.37.0 ([#2652](#2652)) ([f8fa2e9](f8fa2e9)) * update protobuf dependencies to v3.25.3 ([#2491](#2491)) ([b0e5041](b0e5041)) * update slf4j monorepo to v2.0.13 ([#2647](#2647)) ([f030e29](f030e29)) </details> --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com>
🤖 I have created a release *beep* *boop* --- <details><summary>2.39.0</summary> ## [2.39.0](v2.38.1...v2.39.0) (2024-04-18) ### Features * add `libraries_bom_version` to generation configuration ([#2639](#2639)) ([56c7ca5](56c7ca5)) * Add ChannelPoolSettings Getter for gRPC's ChannelProvider ([#2612](#2612)) ([d0c5191](d0c5191)) * add config change ([#2604](#2604)) ([8312706](8312706)) * add entry point ([#2616](#2616)) ([b19fa33](b19fa33)) * add generation config comparator ([#2587](#2587)) ([a94c2f0](a94c2f0)) * Add JavadocJar Task to build.gradle for self service libraries ([#2593](#2593)) ([993f5ac](993f5ac)) * Client/StubSettings' getEndpoint() returns the resolved endpoint ([#2440](#2440)) ([4942bc1](4942bc1)) * generate selected libraries ([#2598](#2598)) ([739ddbb](739ddbb)) * Validate the Universe Domain inside Java-Core ([#2592](#2592)) ([35d789f](35d789f)) ### Bug Fixes * add main to `generate_repo.py` ([#2607](#2607)) ([fedeb32](fedeb32)) * correct deep-remove and deep-preserve regexes ([#2572](#2572)) ([4c7fd88](4c7fd88)) * first attempt should use the min of RPC timeout and total timeout ([#2641](#2641)) ([0349232](0349232)) * remove duplicated calls to AutoValue builders ([#2636](#2636)) ([53a3727](53a3727)) * remove unnecessary slf4j and AbstractGoogleClientRequest native image configs ([0cb7d0e](0cb7d0e)) * remove unnecessary slf4j and AbstractGoogleClientRequest native image configs ([#2628](#2628)) ([0cb7d0e](0cb7d0e)) ### Dependencies * update arrow.version to v15.0.2 ([#2589](#2589)) ([777acf3](777acf3)) * update dependency com.google.cloud.opentelemetry:detector-resources-support to v0.28.0 ([#2649](#2649)) ([e4ed176](e4ed176)) * update dependency gitpython to v3.1.41 [security] ([#2625](#2625)) ([e41bd8f](e41bd8f)) * update dependency net.bytebuddy:byte-buddy to v1.14.13 ([#2646](#2646)) ([73ac5a4](73ac5a4)) * update dependency org.threeten:threeten-extra to v1.8.0 ([#2650](#2650)) ([226325a](226325a)) * update dependency org.threeten:threetenbp to v1.6.9 ([#2602](#2602)) ([371753e](371753e)) * update dependency org.threeten:threetenbp to v1.6.9 ([#2665](#2665)) ([8935bc8](8935bc8)) * update google api dependencies ([#2584](#2584)) ([cd20604](cd20604)) * update googleapis/java-cloud-bom digest to 7071341 ([#2608](#2608)) ([8d74140](8d74140)) * update netty dependencies to v4.1.109.final ([#2597](#2597)) ([8990693](8990693)) * update opentelemetry-java monorepo to v1.37.0 ([#2652](#2652)) ([f8fa2e9](f8fa2e9)) * update protobuf dependencies to v3.25.3 ([#2491](#2491)) ([b0e5041](b0e5041)) * update slf4j monorepo to v2.0.13 ([#2647](#2647)) ([f030e29](f030e29)) </details> --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com>
🤖 I have created a release *beep* *boop* --- <details><summary>2.39.0</summary> ## [2.39.0](googleapis/sdk-platform-java@v2.38.1...v2.39.0) (2024-04-18) ### Features * add `libraries_bom_version` to generation configuration ([#2639](googleapis/sdk-platform-java#2639)) ([76eb62b](googleapis/sdk-platform-java@76eb62b)) * Add ChannelPoolSettings Getter for gRPC's ChannelProvider ([#2612](googleapis/sdk-platform-java#2612)) ([c8dae8f](googleapis/sdk-platform-java@c8dae8f)) * add config change ([#2604](googleapis/sdk-platform-java#2604)) ([a8c93b5](googleapis/sdk-platform-java@a8c93b5)) * add entry point ([#2616](googleapis/sdk-platform-java#2616)) ([f5492bb](googleapis/sdk-platform-java@f5492bb)) * add generation config comparator ([#2587](googleapis/sdk-platform-java#2587)) ([3461166](googleapis/sdk-platform-java@3461166)) * Add JavadocJar Task to build.gradle for self service libraries ([#2593](googleapis/sdk-platform-java#2593)) ([a66df18](googleapis/sdk-platform-java@a66df18)) * Client/StubSettings' getEndpoint() returns the resolved endpoint ([#2440](googleapis/sdk-platform-java#2440)) ([7cf0d8f](googleapis/sdk-platform-java@7cf0d8f)) * generate selected libraries ([#2598](googleapis/sdk-platform-java#2598)) ([e4572d1](googleapis/sdk-platform-java@e4572d1)) * Validate the Universe Domain inside Java-Core ([#2592](googleapis/sdk-platform-java#2592)) ([a5e1141](googleapis/sdk-platform-java@a5e1141)) ### Bug Fixes * add main to `generate_repo.py` ([#2607](googleapis/sdk-platform-java#2607)) ([df39521](googleapis/sdk-platform-java@df39521)) * correct deep-remove and deep-preserve regexes ([#2572](googleapis/sdk-platform-java#2572)) ([7d59fa1](googleapis/sdk-platform-java@7d59fa1)) * first attempt should use the min of RPC timeout and total timeout ([#2641](googleapis/sdk-platform-java#2641)) ([806a52e](googleapis/sdk-platform-java@806a52e)) * remove duplicated calls to AutoValue builders ([#2636](googleapis/sdk-platform-java#2636)) ([c883b8f](googleapis/sdk-platform-java@c883b8f)) * remove unnecessary slf4j and AbstractGoogleClientRequest native image configs ([9cb7c09](googleapis/sdk-platform-java@9cb7c09)) * remove unnecessary slf4j and AbstractGoogleClientRequest native image configs ([#2628](googleapis/sdk-platform-java#2628)) ([9cb7c09](googleapis/sdk-platform-java@9cb7c09)) ### Dependencies * update arrow.version to v15.0.2 ([#2589](googleapis/sdk-platform-java#2589)) ([0947407](googleapis/sdk-platform-java@0947407)) * update dependency com.google.cloud.opentelemetry:detector-resources-support to v0.28.0 ([#2649](googleapis/sdk-platform-java#2649)) ([079bcff](googleapis/sdk-platform-java@079bcff)) * update dependency gitpython to v3.1.41 [security] ([#2625](googleapis/sdk-platform-java#2625)) ([018e9a9](googleapis/sdk-platform-java@018e9a9)) * update dependency net.bytebuddy:byte-buddy to v1.14.13 ([#2646](googleapis/sdk-platform-java#2646)) ([5a79cd2](googleapis/sdk-platform-java@5a79cd2)) * update dependency org.threeten:threeten-extra to v1.8.0 ([#2650](googleapis/sdk-platform-java#2650)) ([5666adb](googleapis/sdk-platform-java@5666adb)) * update dependency org.threeten:threetenbp to v1.6.9 ([#2602](googleapis/sdk-platform-java#2602)) ([767eec1](googleapis/sdk-platform-java@767eec1)) * update dependency org.threeten:threetenbp to v1.6.9 ([#2665](googleapis/sdk-platform-java#2665)) ([563d8ae](googleapis/sdk-platform-java@563d8ae)) * update google api dependencies ([#2584](googleapis/sdk-platform-java#2584)) ([22733b1](googleapis/sdk-platform-java@22733b1)) * update googleapis/java-cloud-bom digest to 7071341 ([#2608](googleapis/sdk-platform-java#2608)) ([8f34fe7](googleapis/sdk-platform-java@8f34fe7)) * update netty dependencies to v4.1.109.final ([#2597](googleapis/sdk-platform-java#2597)) ([6b6939e](googleapis/sdk-platform-java@6b6939e)) * update opentelemetry-java monorepo to v1.37.0 ([#2652](googleapis/sdk-platform-java#2652)) ([708cf7f](googleapis/sdk-platform-java@708cf7f)) * update protobuf dependencies to v3.25.3 ([#2491](googleapis/sdk-platform-java#2491)) ([e2235a8](googleapis/sdk-platform-java@e2235a8)) * update slf4j monorepo to v2.0.13 ([#2647](googleapis/sdk-platform-java#2647)) ([2e3d813](googleapis/sdk-platform-java@2e3d813)) </details> --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com>




In this PR:
config_change.pyto get:generate_repo.pyto generate libraries selectedly.generate_pr_description.pyto generate PR description.proto_path_utils.py.generation_config_comparator.pyto move data class toconfig_change.py.utilities.pyandutilities.shtoutils/utilities.pyandutils/utilities.sh.Follow up of #2587
For the goal of series of PRs, please refer to improvement proposal.