From 69c27d6cd11344ed9a9f8f2411c86283ff57b9b1 Mon Sep 17 00:00:00 2001 From: Daniel Vainsencher Date: Wed, 29 May 2024 17:03:34 -0400 Subject: [PATCH] aider: Refactored `show_messages` to call `format_messages` for formatting title and messages. # Aider chat conversation: USER: Refactor show_messages in utils, so that the formatting of title and messages is done in a separate function which returns a string. show_messages should call it and print its output. ASSISTANT: To refactor the `show_messages` function, we will: 1. Create a new function `format_messages` that formats the title and messages and returns a string. 2. Update `show_messages` to call `format_messages` and print its output. Here are the *SEARCH/REPLACE* blocks: aider/utils.py ```python <<<<<<< SEARCH def show_messages(messages, title=None, functions=None): if title: print(title.upper(), "*" * 50) for msg in messages: print() role = msg["role"].upper() content = msg.get("content") if isinstance(content, list): # Handle list content (e.g., image messages) for item in content: if isinstance(item, dict) and "image_url" in item: print(role, "Image URL:", item["image_url"]["url"]) elif isinstance(content, str): # Handle string content for line in content.splitlines(): print(role, line) content = msg.get("function_call") if content: print(role, content) if functions: dump(functions) ======= def format_messages(messages, title=None): output = [] if title: output.append(f"{title.upper()} {'*' * 50}") for msg in messages: output.append("") role = msg["role"].upper() content = msg.get("content") if isinstance(content, list): # Handle list content (e.g., image messages) for item in content: if isinstance(item, dict) and "image_url" in item: output.append(f"{role} Image URL: {item['image_url']['url']}") elif isinstance(content, str): # Handle string content for line in content.splitlines(): output.append(f"{role} {line}") content = msg.get("function_call") if content: output.append(f"{role} {content}") return "\n".join(output) def show_messages(messages, title=None, functions=None): formatted_output = format_messages(messages, title) print(formatted_output) if functions: dump(functions) >>>>>>> REPLACE ``` --- aider/utils.py | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/aider/utils.py b/aider/utils.py index 31767aec6..1e76b39bf 100644 --- a/aider/utils.py +++ b/aider/utils.py @@ -84,24 +84,32 @@ def safe_abs_path(res): return str(res) -def show_messages(messages, title=None, functions=None): +def format_messages(messages, title=None): + output = [] if title: - print(title.upper(), "*" * 50) + output.append(f"{title.upper()} {'*' * 50}") for msg in messages: - print() + output.append("") role = msg["role"].upper() content = msg.get("content") if isinstance(content, list): # Handle list content (e.g., image messages) for item in content: if isinstance(item, dict) and "image_url" in item: - print(role, "Image URL:", item["image_url"]["url"]) + output.append(f"{role} Image URL: {item['image_url']['url']}") elif isinstance(content, str): # Handle string content for line in content.splitlines(): - print(role, line) + output.append(f"{role} {line}") content = msg.get("function_call") if content: - print(role, content) + output.append(f"{role} {content}") + + return "\n".join(output) + + +def show_messages(messages, title=None, functions=None): + formatted_output = format_messages(messages, title) + print(formatted_output) if functions: dump(functions)