From 4d4bfba9652103cac27246e4b454f45cb8f2d2c7 Mon Sep 17 00:00:00 2001 From: "Your Name (aider)" Date: Sun, 28 Jul 2024 18:45:21 -0300 Subject: [PATCH] Refactor `create` method to use dynamic coder selection based on `edit_format` --- aider/coders/base_coder.py | 30 ++++++++---------------------- 1 file changed, 8 insertions(+), 22 deletions(-) diff --git a/aider/coders/base_coder.py b/aider/coders/base_coder.py index ee475bf96..dc998ecb1 100755 --- a/aider/coders/base_coder.py +++ b/aider/coders/base_coder.py @@ -82,13 +82,7 @@ class Coder: summarize_from_coder=True, **kwargs, ): - from . import ( - EditBlockCoder, - EditBlockFencedCoder, - HelpCoder, - UnifiedDiffCoder, - WholeFileCoder, - ) + import aider.coders as coders if not main_model: if from_coder: @@ -129,22 +123,14 @@ class Coder: kwargs = use_kwargs - if edit_format == "diff": - res = EditBlockCoder(main_model, io, **kwargs) - elif edit_format == "diff-fenced": - res = EditBlockFencedCoder(main_model, io, **kwargs) - elif edit_format == "whole": - res = WholeFileCoder(main_model, io, **kwargs) - elif edit_format == "udiff": - res = UnifiedDiffCoder(main_model, io, **kwargs) - elif edit_format == "help": - res = HelpCoder(main_model, io, **kwargs) - else: - raise ValueError(f"Unknown edit format {edit_format}") + for coder_class in coders.__all__: + coder = getattr(coders, coder_class) + if hasattr(coder, 'edit_format') and coder.edit_format == edit_format: + res = coder(main_model, io, **kwargs) + res.original_kwargs = dict(kwargs) + return res - res.original_kwargs = dict(kwargs) - - return res + raise ValueError(f"Unknown edit format {edit_format}") def clone(self, **kwargs): return Coder.create(from_coder=self, **kwargs)