From 9cab570f87ab23a1d9d90b09209b3ba83be74302 Mon Sep 17 00:00:00 2001 From: Paul Gauthier Date: Wed, 5 Jul 2023 20:21:32 -0700 Subject: [PATCH] refactor to use io.read_text --- aider/coders/base_coder.py | 23 +++++++++++++++++++---- aider/utils.py | 18 ------------------ 2 files changed, 19 insertions(+), 22 deletions(-) diff --git a/aider/coders/base_coder.py b/aider/coders/base_coder.py index 8da1e6f9f..a2f8fc0cc 100755 --- a/aider/coders/base_coder.py +++ b/aider/coders/base_coder.py @@ -287,10 +287,20 @@ class Coder: ] fence = fences[0] + def get_abs_fnames_content(self): + for fname in list(self.abs_fnames): + content = self.io.read_text(fname) + if content is None: + relative_fname = self.get_rel_fname(fname) + self.tool_error(f"Dropping {relative_fname} from the chat.") + self.abs_fnames.remove(fname) + else: + yield fname, content + def choose_fence(self): all_content = "" - for fname in self.abs_fnames: - all_content += Path(fname).read_text() + "\n" + for _fname, content in self.get_abs_fnames_content(): + all_content += content + "\n" all_content = all_content.splitlines() @@ -317,9 +327,14 @@ class Coder: fnames = self.abs_fnames prompt = "" - for fname in fnames: + for fname, content in self.get_abs_fnames_content(): relative_fname = self.get_rel_fname(fname) - prompt += utils.quoted_file(fname, relative_fname, fence=self.fence) + prompt = "\n" + prompt += relative_fname + prompt += f"\n{self.fence[0]}\n" + prompt += content + prompt += f"{self.fence[1]}\n" + return prompt def recheck_abs_fnames(self): diff --git a/aider/utils.py b/aider/utils.py index cd805e7ab..15c3bfb71 100644 --- a/aider/utils.py +++ b/aider/utils.py @@ -1,24 +1,6 @@ -from pathlib import Path - from .dump import dump # noqa: F401 -def quoted_file(fname, display_fname, fence=("```", "```"), number=False): - prompt = "\n" - prompt += display_fname - prompt += f"\n{fence[0]}\n" - - file_content = Path(fname).read_text() - lines = file_content.splitlines() - for i, line in enumerate(lines, start=1): - if number: - prompt += f"{i:4d} " - prompt += line + "\n" - - prompt += f"{fence[1]}\n" - return prompt - - def show_messages(messages, title=None, functions=None): if title: print(title.upper(), "*" * 50)