mirror of
https://github.com/qodo-ai/pr-agent.git
synced 2025-07-04 04:40:38 +08:00
feat: Improve user description extraction in git_provider.py
This commit is contained in:
@ -91,17 +91,29 @@ class GitProvider(ABC):
|
|||||||
# return description[user_description_start_position:].split("\n", 1)[-1].strip()
|
# return description[user_description_start_position:].split("\n", 1)[-1].strip()
|
||||||
|
|
||||||
# the 'user description' is in the beginning. extract and return it
|
# the 'user description' is in the beginning. extract and return it
|
||||||
original_user_description = description.split("___")[0].strip()
|
possible_headers = self._possible_headers()
|
||||||
if original_user_description.lower().startswith(user_description_header):
|
start_position = description_lowercase.find(user_description_header) + len(user_description_header)
|
||||||
original_user_description = original_user_description[len(user_description_header):].strip()
|
end_position = len(description)
|
||||||
|
for header in possible_headers: # try to clip at the next header
|
||||||
|
if header != user_description_header and header in description_lowercase:
|
||||||
|
end_position = min(end_position, description_lowercase.find(header))
|
||||||
|
if end_position != len(description) and end_position > start_position:
|
||||||
|
original_user_description = description[start_position:end_position].strip()
|
||||||
|
if original_user_description.endswith("___"):
|
||||||
|
original_user_description = original_user_description[:-3].strip()
|
||||||
|
else:
|
||||||
|
original_user_description = description.split("___")[0].strip()
|
||||||
|
if original_user_description.lower().startswith(user_description_header):
|
||||||
|
original_user_description = original_user_description[len(user_description_header):].strip()
|
||||||
|
|
||||||
return original_user_description
|
return original_user_description
|
||||||
|
|
||||||
|
def _possible_headers(self):
|
||||||
|
return ("## user description", "## pr type", "## pr description", "## pr labels", "## type", "## description",
|
||||||
|
"## labels", "### 🤖 generated by pr agent")
|
||||||
|
|
||||||
def _is_generated_by_pr_agent(self, description_lowercase: str) -> bool:
|
def _is_generated_by_pr_agent(self, description_lowercase: str) -> bool:
|
||||||
possible_headers = (
|
possible_headers = self._possible_headers()
|
||||||
"## user description", "## pr type", "## pr description", "## pr labels", "## type", "## description",
|
|
||||||
"## labels", "### 🤖 generated by pr agent")
|
|
||||||
return any(description_lowercase.startswith(header) for header in possible_headers)
|
return any(description_lowercase.startswith(header) for header in possible_headers)
|
||||||
|
|
||||||
@abstractmethod
|
@abstractmethod
|
||||||
|
Reference in New Issue
Block a user