mirror of
https://github.com/Aider-AI/aider.git
synced 2025-06-01 18:25:00 +00:00
More flexible filename search for deepseek coder v2
This commit is contained in:
parent
93e104f79f
commit
4fd61f1112
3 changed files with 67 additions and 12 deletions
|
@ -414,16 +414,8 @@ def find_original_update_blocks(content, fence=DEFAULT_FENCE):
|
||||||
|
|
||||||
processed.append(cur) # original_marker
|
processed.append(cur) # original_marker
|
||||||
|
|
||||||
filename = strip_filename(processed[-2].splitlines()[-1], fence)
|
filename = find_filename(processed[-2].splitlines(), fence)
|
||||||
try:
|
if not filename:
|
||||||
if not filename:
|
|
||||||
filename = strip_filename(processed[-2].splitlines()[-2], fence)
|
|
||||||
if not filename:
|
|
||||||
if current_filename:
|
|
||||||
filename = current_filename
|
|
||||||
else:
|
|
||||||
raise ValueError(missing_filename_err.format(fence=fence))
|
|
||||||
except IndexError:
|
|
||||||
if current_filename:
|
if current_filename:
|
||||||
filename = current_filename
|
filename = current_filename
|
||||||
else:
|
else:
|
||||||
|
@ -460,6 +452,35 @@ def find_original_update_blocks(content, fence=DEFAULT_FENCE):
|
||||||
raise ValueError(f"{processed}\n^^^ Error parsing SEARCH/REPLACE block.")
|
raise ValueError(f"{processed}\n^^^ Error parsing SEARCH/REPLACE block.")
|
||||||
|
|
||||||
|
|
||||||
|
def find_filename(lines, fence):
|
||||||
|
"""
|
||||||
|
Deepseek Coder v2 has been doing this:
|
||||||
|
|
||||||
|
|
||||||
|
```python
|
||||||
|
word_count.py
|
||||||
|
```
|
||||||
|
```python
|
||||||
|
<<<<<<< SEARCH
|
||||||
|
...
|
||||||
|
|
||||||
|
This is a more flexible search back for filenames.
|
||||||
|
"""
|
||||||
|
# Go back through the 3 preceding lines
|
||||||
|
lines.reverse()
|
||||||
|
lines = lines[:3]
|
||||||
|
|
||||||
|
for line in lines:
|
||||||
|
# If we find a filename, done
|
||||||
|
filename = strip_filename(line, fence)
|
||||||
|
if filename:
|
||||||
|
return filename
|
||||||
|
|
||||||
|
# Only continue as long as we keep seeing fences
|
||||||
|
if not line.startswith(fence[0]):
|
||||||
|
return
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
edit = """
|
edit = """
|
||||||
Here's the change:
|
Here's the change:
|
||||||
|
|
|
@ -236,7 +236,7 @@ MODEL_SETTINGS = [
|
||||||
send_undo_reply=True,
|
send_undo_reply=True,
|
||||||
),
|
),
|
||||||
ModelSettings(
|
ModelSettings(
|
||||||
"openai/deepseek-chat",
|
"deepseek/deepseek-chat",
|
||||||
"diff",
|
"diff",
|
||||||
use_repo_map=True,
|
use_repo_map=True,
|
||||||
send_undo_reply=True,
|
send_undo_reply=True,
|
||||||
|
@ -244,7 +244,15 @@ MODEL_SETTINGS = [
|
||||||
reminder_as_sys_msg=True,
|
reminder_as_sys_msg=True,
|
||||||
),
|
),
|
||||||
ModelSettings(
|
ModelSettings(
|
||||||
"deepseek/deepseek-chat",
|
"deepseek/deepseek-coder",
|
||||||
|
"diff",
|
||||||
|
use_repo_map=True,
|
||||||
|
send_undo_reply=True,
|
||||||
|
examples_as_sys_msg=True,
|
||||||
|
reminder_as_sys_msg=True,
|
||||||
|
),
|
||||||
|
ModelSettings(
|
||||||
|
"openrouter/deepseek/deepseek-coder",
|
||||||
"diff",
|
"diff",
|
||||||
use_repo_map=True,
|
use_repo_map=True,
|
||||||
send_undo_reply=True,
|
send_undo_reply=True,
|
||||||
|
|
|
@ -398,6 +398,32 @@ Hope you like it!
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def test_deepseek_coder_v2_filename_mangling(self):
|
||||||
|
edit = """
|
||||||
|
Here's the change:
|
||||||
|
|
||||||
|
```python
|
||||||
|
foo.txt
|
||||||
|
```
|
||||||
|
```python
|
||||||
|
<<<<<<< SEARCH
|
||||||
|
one
|
||||||
|
=======
|
||||||
|
two
|
||||||
|
>>>>>>> REPLACE
|
||||||
|
```
|
||||||
|
|
||||||
|
Hope you like it!
|
||||||
|
"""
|
||||||
|
|
||||||
|
edits = list(eb.find_original_update_blocks(edit))
|
||||||
|
self.assertEqual(
|
||||||
|
edits,
|
||||||
|
[
|
||||||
|
("foo.txt", "one\n", "two\n"),
|
||||||
|
],
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
unittest.main()
|
unittest.main()
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue