MCPcopy Index your code
hub / github.com/FSoft-AI4Code/HyperAgent / _run

Method _run

src/hyperagent/tools/gen_tools.py:38–151  ·  view source on GitHub ↗

Opens the specified file and returns its content. Args: relative_file_path (str): The relative path to the file. max_new_line (int, optional): The maximum number of lines to include in the returned content. Defaults to 500. Returns: str:

(self, relative_file_path: str = None, start_line:int = None, end_line: int = None, patch: str = None, context: Optional[str] = None)

Source from the content-addressed store, hash-verified

36 self.language = language
37
38 def _run(self, relative_file_path: str = None, start_line:int = None, end_line: int = None, patch: str = None, context: Optional[str] = None):
39 """
40 Opens the specified file and returns its content.
41
42 Args:
43 relative_file_path (str): The relative path to the file.
44 max_new_line (int, optional): The maximum number of lines to include in the returned content. Defaults to 500.
45
46 Returns:
47 str: The content of the file.
48
49 """
50 if relative_file_path is None:
51 return "Please specify the relative file path that you want to edit."
52
53 abs_path = os.path.join(self.path, relative_file_path)
54
55 if not os.path.exists(abs_path):
56 abs_path = find_matching_file_path(self.path, relative_file_path)
57 if abs_path is None:
58 return "File not found, please check the path again"
59 else:
60 # create new file
61 with open(abs_path, 'w') as file:
62 file.write("")
63
64 with open(abs_path, 'r') as file:
65 lines = file.readlines()
66
67 if end_line is None or end_line is None:
68 return "Please specify either start and end line"
69
70 if start_line < 1 or start_line > end_line:
71 return f"Invalid start and end line (start line must be >0 and end line < {len(lines)}), please check the line number again"
72
73 if patch is None:
74 return "Please specify the alterative code to replace the original code"
75
76
77 # extracted_element = code_extract(lines, start_line, end_line)
78
79
80 start_index = start_line - 1
81 end_index = end_line
82 updated_lines = lines[:start_index] + [patch+ "\n"] + lines[end_index:]
83
84
85 initial_patch_lines_region = lines[max(0, start_index-10):start_index] + [patch + "\n"] + lines[end_index: min((end_index+10), len(lines))]
86 initial_patch_block = "\n".join(initial_patch_lines_region)
87 initial_patch_block = add_num_line(initial_patch_block, max(1, start_index-10)+1)
88
89 original_lines_region = lines[max(0,start_index-10):min(end_index + 10, len(lines))]
90 original_block = "\n".join(original_lines_region)
91 original_block = add_num_line(original_block, max(0, start_index-10)+1)
92
93 patch_file_path = str(abs_path).split('.')[0] + '_patched.' + str(abs_path).split('.')[1]
94
95 # review_command = f"Context of Editing: {context}\nStart and End line of Original Target Block: {start_line}:{end_line}. Your should only edit inside this range of lines.\nFile Name: {patch_file_path}\nOriginal Target Block with Surrounding Lines:\n```python\n{original_block}\n```\n\nProposed Block:\n```python\n{initial_patch_block}\n```\n\nThink step by step, understanding the original block of code and intention of Proposed Hint Patch generate a python block that is syntactically correct, identation is correct to both harmonize the original code and satisfy the intention of the proposed hint patch. Think about indetation, intent then generate a block in ```python ``` format without line numbers inside block but with identation. Your Thought:"

Callers 2

gen_tools.pyFile · 0.45
tailwind.min.jsFile · 0.45

Calls 4

find_matching_file_pathFunction · 0.90
add_num_lineFunction · 0.85
removeMethod · 0.80
runMethod · 0.45

Tested by

no test coverage detected