Skip to content

Add approvers and reviewers to welcome comment#722

Merged
myakove merged 7 commits intomainfrom
welcome_msg-improve
Apr 24, 2025
Merged

Add approvers and reviewers to welcome comment#722
myakove merged 7 commits intomainfrom
welcome_msg-improve

Conversation

@myakove
Copy link
Copy Markdown
Collaborator

@myakove myakove commented Apr 24, 2025

Summary by CodeRabbit

  • Refactor
    • Improved the construction and formatting of the welcome message for pull requests, making it more dynamic and maintainable.
    • Enhanced the welcome message to include clearer information about supported commands, labels, and issue reporting.
    • Updated logic for detecting and managing the welcome message in comments for greater reliability.
  • Tests
    • Added comprehensive tests to verify the welcome message accurately reflects supported retest commands based on configuration.

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Apr 24, 2025

"""

Walkthrough

The changes refactor the construction of the welcome message in the ProcessGithubWehook class. The static assignment of the welcome message string is replaced by new private methods that dynamically generate the message, incorporating details such as supported labels, retest commands, and a collapsible section for approvers and reviewers. The logic for detecting the welcome message in comments is updated to use a substring check based on the issue URL. Helper methods are introduced to modularize the welcome message components, and a property is renamed and made private.

Changes

Files/Paths Change Summary
webhook_server_container/libs/github_api.py Refactored welcome message construction: replaced static strings with dynamic private methods, added helper methods for owners and message formatting, renamed and privatized retest message property, and updated comment detection logic.
webhook_server_container/tests/test_prepare_retest_wellcome_comment.py Added new test class with parameterized tests verifying the behavior of the renamed and privatized retest welcome comment method under various flag combinations.

Possibly related issues

Suggested labels

verified, size/M, can-be-merged, commented-myakove, commented-coderabbitai[bot]

Suggested reviewers

  • rnetser
  • dbasunag
    """

📜 Recent review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between b6a1aec and c6e5ecf.

📒 Files selected for processing (1)
  • webhook_server_container/libs/github_api.py (6 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
  • webhook_server_container/libs/github_api.py
⏰ Context from checks skipped due to timeout of 90000ms (4)
  • GitHub Check: tox
  • GitHub Check: build-container
  • GitHub Check: python-module-install
  • GitHub Check: pre-commit
✨ Finishing Touches
  • 📝 Generate Docstrings

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Generate unit testing code for this file.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai generate unit testing code for this file.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and generate unit testing code.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai generate sequence diagram to generate a sequence diagram of the changes in this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

@myakove-bot
Copy link
Copy Markdown
Collaborator

Report bugs in Issues

The following are automatically added:

  • Add reviewers from OWNER file (in the root of the repository) under reviewers section.
  • Set PR size label.
  • New issue is created for the PR. (Closed when PR is merged/closed)
  • Run pre-commit if .pre-commit-config.yaml exists in the repo.

Available user actions:

  • To mark PR as WIP comment /wip to the PR, To remove it from the PR comment /wip cancel to the PR.
  • To block merging of PR comment /hold, To un-block merging of PR comment /hold cancel.
  • To mark PR as verified comment /verified to the PR, to un-verify comment /verified cancel to the PR.
    verified label removed on each new commit push.
  • To cherry pick a merged PR comment /cherry-pick <target branch to cherry-pick to> in the PR.
    • Multiple target branches can be cherry-picked, separated by spaces. (/cherry-pick branch1 branch2)
    • Cherry-pick will be started when PR is merged
  • To build and push container image command /build-and-push-container in the PR (tag will be the PR number).
    • You can add extra args to the Podman build command
      • Example: /build-and-push-container --build-arg OPENSHIFT_PYTHON_WRAPPER_COMMIT=<commit_hash>
  • To add a label by comment use /<label name>, to remove, use /<label name> cancel
  • To assign reviewers based on OWNERS file use /assign-reviewers
  • To check if PR can be merged use /check-can-merge
  • to assign reviewer to PR use /assign-reviewer @<reviewer>
Supported /retest check runs
  • /retest tox: Retest tox
  • /retest build-container: Retest build-container
  • /retest python-module-install: Retest python-module-install
  • /retest pre-commit: Retest pre-commit
  • /retest all: Retest all
Supported labels
  • hold
  • verified
  • wip
  • lgtm
  • approve

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🔭 Outside diff range comments (1)
webhook_server_container/libs/github_api.py (1)

197-218: 💡 Verification agent

🧩 Analysis chain

Renamed property – please verify all call-sites

The property was renamed to _prepare_retest_welcome_comment.
Double-check that the old name prepare_retest_wellcome_msg is no longer referenced anywhere in the codebase (tests, helper modules, etc.).


🏁 Script executed:

#!/bin/bash
# Search for stale references to the old property name
rg -n "prepare_retest_wellcome_msg"

Length of output: 295


Stale test references to renamed method – update tests accordingly

The search shows two lingering mentions of the old name in your test suite. Please update them to use the new _prepare_retest_welcome_comment method:

  • File: webhook_server_container/tests/test_prepare_retest_wellcome_msg.py
    • Rename the file (and any imports) to test_prepare_retest_welcome_comment.py
    • Change all occurrences of prepare_retest_wellcome_msg to _prepare_retest_welcome_comment
    • Update the assertions to call the method (e.g. process_github_webhook._prepare_retest_welcome_comment()) instead of accessing the old property

After these changes, rerun rg -n "prepare_retest_wellcome_msg" to confirm no references remain.

🧹 Nitpick comments (4)
webhook_server_container/libs/github_api.py (4)

761-765: Welcome-message detection is fragile

Matching only the URL (issue_url_for_welcome_msg in body) may yield false positives if
users paste that link in regular comments.
A safer sentinel (e.g., an HTML comment <!-- github-webhook-welcome -->) would eliminate collisions.


791-795: Avoid redundant re-building of the welcome message

self._prepare_welcome_comment() is called here even though a (correctly timed) call could be cached.
After applying the earlier refactor, just use:

welcome_msg = self._prepare_welcome_comment()

but decorate _prepare_welcome_comment with @functools.cached_property
so it builds once per instance.


2173-2196: _prepare_owners_welcome_comment is currently unused

The helper builds the collapsible “Approvers and Reviewers” section but is never called, so its
output never reaches the final comment.

Either:

  1. Insert its result into _prepare_welcome_comment(), or
  2. Remove the dead code to keep the class lean.

2198-2237: Consider integrating the owners section & minor string improvements

  • Inject _prepare_owners_welcome_comment() into the returned string so newcomers immediately see the approvers/reviewers list.
  • You can drop the leading newline in the f-string to avoid a blank line at the top of the comment.

Example (simplified):

-        return f"""
-{self.issue_url_for_welcome_msg}
+        owners_block = self._prepare_owners_welcome_comment()
+        return f"""{self.issue_url_for_welcome_msg}

 {owners_block}
 ...
"""
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 1adb403 and 8821b95.

📒 Files selected for processing (1)
  • webhook_server_container/libs/github_api.py (5 hunks)
⏰ Context from checks skipped due to timeout of 90000ms (4)
  • GitHub Check: build-container
  • GitHub Check: python-module-install
  • GitHub Check: pre-commit
  • GitHub Check: tox

Comment thread webhook_server_container/libs/github_api.py
Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🔭 Outside diff range comments (1)
webhook_server_container/tests/test_prepare_retest_wellcome_comment.py (1)

5-32: 🛠️ Refactor suggestion

Test cases need updating for the conventional_title parameter.

The implementation of _prepare_retest_welcome_comment (from the relevant snippet) now includes support for the conventional_title parameter, but the test cases don't include this parameter in their parametrization. Consider updating the test parametrization to include this parameter for comprehensive test coverage.

    @pytest.mark.parametrize(
-        "tox, build_and_push_container, pypi, pre_commit, expected",
+        "tox, build_and_push_container, pypi, pre_commit, conventional_title, expected",
        [
-            (False, False, False, False, " * This repository does not support retest actions"),
-            (True, False, False, False, " * `/retest tox`: Retest tox\n * `/retest all`: Retest all\n"),
+            (False, False, False, False, False, " * This repository does not support retest actions"),
+            (True, False, False, False, False, " * `/retest tox`: Retest tox\n * `/retest all`: Retest all\n"),
            # ... update the other test cases similarly ...
+            (False, False, False, False, True, " * `/retest conventional-title`: Retest conventional-title\n * `/retest all`: Retest all\n"),
        ],
    )
    def test_prepare_retest_wellcome_comment(
-        self, process_github_webhook, tox, build_and_push_container, pypi, pre_commit, expected
+        self, process_github_webhook, tox, build_and_push_container, pypi, pre_commit, conventional_title, expected
    ):
        # ... existing code ...
+        process_github_webhook.conventional_title = conventional_title
🧹 Nitpick comments (1)
webhook_server_container/tests/test_prepare_retest_wellcome_comment.py (1)

4-42: Consider updating the file name for consistency.

The test method and assertions now correctly use "welcome" instead of "wellcome", but the file name still contains the misspelling ("wellcome"). Consider renaming the file to test_prepare_retest_welcome_comment.py for consistency.

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 8821b95 and 1f76323.

📒 Files selected for processing (2)
  • webhook_server_container/libs/github_api.py (5 hunks)
  • webhook_server_container/tests/test_prepare_retest_wellcome_comment.py (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
  • webhook_server_container/libs/github_api.py
🧰 Additional context used
🧬 Code Graph Analysis (1)
webhook_server_container/tests/test_prepare_retest_wellcome_comment.py (1)
webhook_server_container/libs/github_api.py (1)
  • _prepare_retest_welcome_comment (196-216)
⏰ Context from checks skipped due to timeout of 90000ms (4)
  • GitHub Check: tox
  • GitHub Check: pre-commit
  • GitHub Check: python-module-install
  • GitHub Check: build-container
🔇 Additional comments (2)
webhook_server_container/tests/test_prepare_retest_wellcome_comment.py (2)

34-34: Method name updated to match implementation.

The test method name has been properly updated from test_prepare_retest_wellcome_msg to test_prepare_retest_wellcome_comment to align with the changes in the main implementation.


42-42: Updated assertion to use private method.

The assertion now correctly references the renamed private method _prepare_retest_welcome_comment instead of the previous public method.

@myakove
Copy link
Copy Markdown
Collaborator Author

myakove commented Apr 24, 2025

/verified

@myakove
Copy link
Copy Markdown
Collaborator Author

myakove commented Apr 24, 2025

/approve

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants