From 7d9288bb1ab18b1b647acb24d9c6ae90a5595885 Mon Sep 17 00:00:00 2001 From: mrT23 Date: Tue, 24 Dec 2024 07:49:27 +0200 Subject: [PATCH] feat: add dedent option to code snippet formatting --- pr_agent/algo/types.py | 2 ++ pr_agent/algo/utils.py | 8 ++++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/pr_agent/algo/types.py b/pr_agent/algo/types.py index bf2fc1af..47b80e8a 100644 --- a/pr_agent/algo/types.py +++ b/pr_agent/algo/types.py @@ -1,5 +1,6 @@ from dataclasses import dataclass from enum import Enum +from typing import Optional class EDIT_TYPE(Enum): @@ -21,4 +22,5 @@ class FilePatchInfo: old_filename: str = None num_plus_lines: int = -1 num_minus_lines: int = -1 + language: Optional[str] = None ai_file_summary: str = None diff --git a/pr_agent/algo/utils.py b/pr_agent/algo/utils.py index fb0fe2bd..e94a8429 100644 --- a/pr_agent/algo/utils.py +++ b/pr_agent/algo/utils.py @@ -235,7 +235,7 @@ def convert_to_markdown_v2(output_data: dict, start_line = int(str(issue.get('start_line', 0)).strip()) end_line = int(str(issue.get('end_line', 0)).strip()) - relevant_lines_str = extract_relevant_lines_str(end_line, files, relevant_file, start_line) + relevant_lines_str = extract_relevant_lines_str(end_line, files, relevant_file, start_line, dedent=True) if git_provider: reference_link = git_provider.get_line_link(relevant_file, start_line, end_line) else: @@ -288,7 +288,7 @@ def convert_to_markdown_v2(output_data: dict, return markdown_text -def extract_relevant_lines_str(end_line, files, relevant_file, start_line): +def extract_relevant_lines_str(end_line, files, relevant_file, start_line, dedent=False): try: relevant_lines_str = "" if files: @@ -300,8 +300,12 @@ def extract_relevant_lines_str(end_line, files, relevant_file, start_line): return "" relevant_file_lines = file.head_file.splitlines() relevant_lines_str = "\n".join(relevant_file_lines[start_line - 1:end_line]) + if dedent and relevant_lines_str: + # Remove the longest leading string of spaces and tabs common to all lines. + relevant_lines_str = textwrap.dedent(relevant_lines_str) relevant_lines_str = f"```{file.language}\n{relevant_lines_str}\n```" break + return relevant_lines_str except Exception as e: get_logger().exception(f"Failed to extract relevant lines: {e}")