From 02c9a30c45d0c4310509857b70c63c49da89b301 Mon Sep 17 00:00:00 2001 From: Paul Gauthier Date: Tue, 20 Jun 2023 16:47:37 -0700 Subject: [PATCH] refac --- aider/coders/__init__.py | 4 +++- aider/coders/base.py | 22 ++++++++++++---------- aider/coders/wholefile.py | 8 ++++++++ aider/main.py | 3 ++- 4 files changed, 25 insertions(+), 12 deletions(-) create mode 100644 aider/coders/wholefile.py diff --git a/aider/coders/__init__.py b/aider/coders/__init__.py index 342afdc3a..e577a0f77 100644 --- a/aider/coders/__init__.py +++ b/aider/coders/__init__.py @@ -1,3 +1,5 @@ from .base import Coder +from .editblock import EditBlockCoder +from .wholefile import WholeFileCoder -__all__ = [Coder] +__all__ = [Coder, EditBlockCoder, WholeFileCoder] diff --git a/aider/coders/base.py b/aider/coders/base.py index f186cb56c..b1e043683 100755 --- a/aider/coders/base.py +++ b/aider/coders/base.py @@ -14,7 +14,7 @@ from rich.console import Console from rich.live import Live from rich.markdown import Markdown -from aider import diffs, editors, models, prompts, utils +from aider import diffs, models, prompts, utils from aider.commands import Commands from aider.repomap import RepoMap @@ -32,6 +32,17 @@ class Coder: last_asked_for_commit_time = 0 repo_map = None + @classmethod + def create(self, edit_format, *args, **kwargs): + from . import EditBlockCoder, WholeFileCoder + + if edit_format == "whole": + return EditBlockCoder(*args, **kwargs) + elif edit_format == "diff": + return WholeFileCoder(*args, **kwargs) + else: + raise ValueError(f"Unknown edit format {edit_format}") + def check_model_availability(self, main_model): available_models = openai.Model.list() model_ids = [model.id for model in available_models["data"]] @@ -93,15 +104,6 @@ class Coder: self.main_model = main_model self.edit_format = self.main_model.edit_format - if self.edit_format == "whole": - self.gpt_prompts = editors.WholeFilePrompts() - elif self.edit_format == "diff": - self.gpt_prompts = editors.EditBlockPrompts() - else: - raise ValueError( - f"Model {main_model} requesting unknown edit format {self.edit_format}" - ) - self.io.tool_output(f"Model: {main_model.name}") self.show_diffs = show_diffs diff --git a/aider/coders/wholefile.py b/aider/coders/wholefile.py new file mode 100644 index 000000000..c05cdcc0c --- /dev/null +++ b/aider/coders/wholefile.py @@ -0,0 +1,8 @@ +from ..editors import WholeFilePrompts +from .base import Coder + + +class WholeFileCoder(Coder): + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + self.gpt_prompts = WholeFilePrompts() diff --git a/aider/main.py b/aider/main.py index b8485d44f..169d747f6 100644 --- a/aider/main.py +++ b/aider/main.py @@ -227,7 +227,8 @@ def main(args=None, input=None, output=None): io.tool_error("No OpenAI API key provided. Use --openai-api-key or env OPENAI_API_KEY.") return 1 - coder = Coder( + coder = Coder.create( + "diff", io, main_model=args.model, fnames=args.files,