From 5d721376fe59e6c11581e42329dbeb08381754b5 Mon Sep 17 00:00:00 2001 From: "seokcheon.ju" Date: Mon, 16 Jun 2025 10:53:38 +0900 Subject: [PATCH] Move language-specific instructions to github_action_runner.py --- pr_agent/git_providers/utils.py | 23 ----------------- pr_agent/servers/github_action_runner.py | 32 +++++++++++++++++++++--- 2 files changed, 29 insertions(+), 26 deletions(-) diff --git a/pr_agent/git_providers/utils.py b/pr_agent/git_providers/utils.py index 75f058a8..0cfbe116 100644 --- a/pr_agent/git_providers/utils.py +++ b/pr_agent/git_providers/utils.py @@ -3,7 +3,6 @@ import os import tempfile from dynaconf import Dynaconf -from dynaconf.utils.boxing import DynaBox from starlette_context import context from pr_agent.config_loader import get_settings @@ -63,28 +62,6 @@ def apply_repo_settings(pr_url): if get_settings().config.model.lower() == 'claude-3-5-sonnet': set_claude_model() - # Append the response language in the extra instructions - response_language = get_settings().config.get('response_language', 'en-us') - if response_language.lower() != 'en-us': - get_logger().info(f'User has set the response language to: {response_language}') - - lang_instruction_text = f"Your response MUST be written in the language corresponding to locale code: '{response_language}'. This is crucial." - separator_text = "\n======\n\nIn addition, " - - for key in get_settings(): - setting = get_settings().get(key) - if isinstance(setting, DynaBox): - if key.lower() in ['pr_description', 'pr_code_suggestions', 'pr_reviewer']: - if hasattr(setting, 'extra_instructions'): - extra_instructions = setting.extra_instructions - - if lang_instruction_text not in str(extra_instructions): - updated_instructions = ( - str(extra_instructions) + separator_text + lang_instruction_text - if extra_instructions else lang_instruction_text - ) - setting.extra_instructions = updated_instructions - def handle_configurations_errors(config_errors, git_provider): try: diff --git a/pr_agent/servers/github_action_runner.py b/pr_agent/servers/github_action_runner.py index bcb5effa..9d6b6ee7 100644 --- a/pr_agent/servers/github_action_runner.py +++ b/pr_agent/servers/github_action_runner.py @@ -3,6 +3,8 @@ import json import os from typing import Union +from dynaconf.utils import DynaBox + from pr_agent.agent.pr_agent import PRAgent from pr_agent.config_loader import get_settings from pr_agent.git_providers import get_git_provider @@ -80,12 +82,35 @@ async def run_action(): except Exception as e: get_logger().info(f"github action: failed to apply repo settings: {e}") + # Append the response language in the extra instructions + response_language = get_settings().config.get('response_language', 'en-us') + if response_language.lower() != 'en-us': + get_logger().info(f'User has set the response language to: {response_language}') + + lang_instruction_text = f"Your response MUST be written in the language corresponding to locale code: '{response_language}'. This is crucial." + separator_text = "\n======\n\nIn addition, " + + for key in get_settings(): + setting = get_settings().get(key) + if isinstance(setting, DynaBox): + if key.lower() in ['pr_description', 'pr_code_suggestions', 'pr_reviewer']: + if hasattr(setting, 'extra_instructions'): + extra_instructions = setting.extra_instructions + + if lang_instruction_text not in str(extra_instructions): + updated_instructions = ( + str(extra_instructions) + separator_text + lang_instruction_text + if extra_instructions else lang_instruction_text + ) + setting.extra_instructions = updated_instructions + # Handle pull request opened event if GITHUB_EVENT_NAME == "pull_request" or GITHUB_EVENT_NAME == "pull_request_target": action = event_payload.get("action") # Retrieve the list of actions from the configuration - pr_actions = get_settings().get("GITHUB_ACTION_CONFIG.PR_ACTIONS", ["opened", "reopened", "ready_for_review", "review_requested"]) + pr_actions = get_settings().get("GITHUB_ACTION_CONFIG.PR_ACTIONS", + ["opened", "reopened", "ready_for_review", "review_requested"]) if action in pr_actions: pr_url = event_payload.get("pull_request", {}).get("url") @@ -102,9 +127,10 @@ async def run_action(): auto_improve = get_setting_or_env("GITHUB_ACTION_CONFIG.AUTO_IMPROVE", None) # Set the configuration for auto actions - get_settings().config.is_auto_command = True # Set the flag to indicate that the command is auto + get_settings().config.is_auto_command = True # Set the flag to indicate that the command is auto get_settings().pr_description.final_update_message = False # No final update message when auto_describe is enabled - get_logger().info(f"Running auto actions: auto_describe={auto_describe}, auto_review={auto_review}, auto_improve={auto_improve}") + get_logger().info( + f"Running auto actions: auto_describe={auto_describe}, auto_review={auto_review}, auto_improve={auto_improve}") # invoke by default all three tools if auto_describe is None or is_true(auto_describe):