From 75bc2dd564cfaffcccef3d123c62f0ddb8c6fe49 Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Tue, 26 Nov 2024 07:00:16 -0800 Subject: [PATCH] feat: add custom UnknownEditFormat exception with documentation link --- aider/coders/base_coder.py | 5 +++-- aider/main.py | 4 ++++ aider/urls.py | 1 + 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/aider/coders/base_coder.py b/aider/coders/base_coder.py index a68aca671..9893f475d 100755 --- a/aider/coders/base_coder.py +++ b/aider/coders/base_coder.py @@ -22,7 +22,7 @@ from typing import List from aider import __version__, models, prompts, urls, utils from aider.analytics import Analytics from aider.commands import Commands -from aider.exceptions import LiteLLMExceptions +from aider.exceptions import LiteLLMExceptions, UnknownEditFormat from aider.history import ChatSummary from aider.io import ConfirmGroup, InputOutput from aider.linter import Linter @@ -157,7 +157,8 @@ class Coder: res.original_kwargs = dict(kwargs) return res - raise ValueError(f"Unknown edit format {edit_format}") + valid_formats = [c.edit_format for c in coders.__all__ if hasattr(c, "edit_format")] + raise UnknownEditFormat(edit_format, valid_formats) def clone(self, **kwargs): new_coder = Coder.create(from_coder=self, **kwargs) diff --git a/aider/main.py b/aider/main.py index 4f98fac4a..1bc2e6f5d 100644 --- a/aider/main.py +++ b/aider/main.py @@ -765,6 +765,10 @@ def main(argv=None, input=None, output=None, force_git_root=None, return_coder=F chat_language=args.chat_language, detect_urls=args.detect_urls, ) + except UnknownEditFormat as err: + io.tool_error(str(err)) + io.offer_url(urls.edit_formats, "Open documentation about edit formats?") + return 1 except ValueError as err: io.tool_error(str(err)) return 1 diff --git a/aider/urls.py b/aider/urls.py index 87b91d3db..81c3558e8 100644 --- a/aider/urls.py +++ b/aider/urls.py @@ -13,3 +13,4 @@ git_index_version = "https://github.com/Aider-AI/aider/issues/211" install_properly = "https://aider.chat/docs/troubleshooting/imports.html" analytics = "https://aider.chat/docs/more/analytics.html" release_notes = "https://aider.chat/HISTORY.html#release-notes" +edit_formats = "https://aider.chat/docs/more/edit-formats.html"