Skip to content

Commit a47d403

Browse files
authored
Merge pull request #1559 from qodo-ai/tr/date_review
feat: add current date to PR review metadata
2 parents 29a350b + 2887d0a commit a47d403

File tree

4 files changed

+49
-19
lines changed

4 files changed

+49
-19
lines changed

pr_agent/agent/pr_agent.py

Lines changed: 10 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
from pr_agent.algo.ai_handlers.base_ai_handler import BaseAiHandler
55
from pr_agent.algo.ai_handlers.litellm_ai_handler import LiteLLMAIHandler
6+
from pr_agent.algo.cli_args import CliArgs
67
from pr_agent.algo.utils import update_settings_from_args
78
from pr_agent.config_loader import get_settings
89
from pr_agent.git_providers.utils import apply_repo_settings
@@ -60,25 +61,15 @@ async def handle_request(self, pr_url, request, notify=None) -> bool:
6061
else:
6162
action, *args = request
6263

63-
forbidden_cli_args = ['enable_auto_approval', 'approve_pr_on_self_review', 'base_url', 'url', 'app_name', 'secret_provider',
64-
'git_provider', 'skip_keys', 'openai.key', 'ANALYTICS_FOLDER', 'uri', 'app_id', 'webhook_secret',
65-
'bearer_token', 'PERSONAL_ACCESS_TOKEN', 'override_deployment_type', 'private_key',
66-
'local_cache_path', 'enable_local_cache', 'jira_base_url', 'api_base', 'api_type', 'api_version',
67-
'skip_keys']
68-
if args:
69-
for arg in args:
70-
if arg.startswith('--'):
71-
arg_word = arg.lower()
72-
arg_word = arg_word.replace('__', '.') # replace double underscore with dot, e.g. --openai__key -> --openai.key
73-
for forbidden_arg in forbidden_cli_args:
74-
forbidden_arg_word = forbidden_arg.lower()
75-
if '.' not in forbidden_arg_word:
76-
forbidden_arg_word = '.' + forbidden_arg_word
77-
if forbidden_arg_word in arg_word:
78-
get_logger().error(
79-
f"CLI argument for param '{forbidden_arg}' is forbidden. Use instead a configuration file."
80-
)
81-
return False
64+
# validate args
65+
is_valid, arg = CliArgs.validate_user_args(args)
66+
if not is_valid:
67+
get_logger().error(
68+
f"CLI argument for param '{arg}' is forbidden. Use instead a configuration file."
69+
)
70+
return False
71+
72+
# Update settings from args
8273
args = update_settings_from_args(args)
8374

8475
action = action.lstrip("/").lower()

pr_agent/algo/cli_args.py

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
from base64 import b64decode
2+
import hashlib
3+
4+
class CliArgs:
5+
@staticmethod
6+
def validate_user_args(args: list) -> (bool, str):
7+
try:
8+
if not args:
9+
return True, ""
10+
11+
# decode forbidden args
12+
_encoded_args = 'ZW5hYmxlX2F1dG9fYXBwcm92YWw=:YXBwcm92ZV9wcl9vbl9zZWxmX3Jldmlldw==:YmFzZV91cmw=:dXJs:YXBwX25hbWU=:c2VjcmV0X3Byb3ZpZGVy:Z2l0X3Byb3ZpZGVy:c2tpcF9rZXlz:b3BlbmFpLmtleQ==:QU5BTFlUSUNTX0ZPTERFUg==:dXJp:YXBwX2lk:d2ViaG9va19zZWNyZXQ=:YmVhcmVyX3Rva2Vu:UEVSU09OQUxfQUNDRVNTX1RPS0VO:b3ZlcnJpZGVfZGVwbG95bWVudF90eXBl:cHJpdmF0ZV9rZXk=:bG9jYWxfY2FjaGVfcGF0aA==:ZW5hYmxlX2xvY2FsX2NhY2hl:amlyYV9iYXNlX3VybA==:YXBpX2Jhc2U=:YXBpX3R5cGU=:YXBpX3ZlcnNpb24=:c2tpcF9rZXlz'
13+
forbidden_cli_args = []
14+
for e in _encoded_args.split(':'):
15+
forbidden_cli_args.append(b64decode(e).decode())
16+
17+
# lowercase all forbidden args
18+
for i, _ in enumerate(forbidden_cli_args):
19+
forbidden_cli_args[i] = forbidden_cli_args[i].lower()
20+
if '.' not in forbidden_cli_args[i]:
21+
forbidden_cli_args[i] = '.' + forbidden_cli_args[i]
22+
23+
for arg in args:
24+
if arg.startswith('--'):
25+
arg_word = arg.lower()
26+
arg_word = arg_word.replace('__', '.') # replace double underscore with dot, e.g. --openai__key -> --openai.key
27+
for forbidden_arg_word in forbidden_cli_args:
28+
if forbidden_arg_word in arg_word:
29+
return False, forbidden_arg_word
30+
return True, ""
31+
except Exception as e:
32+
return False, str(e)
33+
34+

pr_agent/settings/pr_reviewer_prompts.toml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -187,6 +187,10 @@ Ticket Description:
187187
188188
189189
--PR Info--
190+
{%- if date %}
191+
192+
Today's Date: {{date}}
193+
{%- endif %}
190194
191195
Title: '{{title}}'
192196

pr_agent/tools/pr_reviewer.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,7 @@ def __init__(self, pr_url: str, is_answer: bool = False, is_auto: bool = False,
9595
"is_ai_metadata": get_settings().get("config.enable_ai_metadata", False),
9696
"related_tickets": get_settings().get('related_tickets', []),
9797
'duplicate_prompt_examples': get_settings().config.get('duplicate_prompt_examples', False),
98+
"date": datetime.datetime.now().strftime('%Y-%m-%d'),
9899
}
99100

100101
self.token_handler = TokenHandler(

0 commit comments

Comments
 (0)