From 0d7746c6d7a928d852912833a15c9ebb53a149ba Mon Sep 17 00:00:00 2001 From: Paul Gauthier Date: Fri, 12 Jul 2024 17:43:14 +0100 Subject: [PATCH] Improved the pip_install function to handle installation output more gracefully, including printing a simple text spinner during the installation process. --- aider/utils.py | 32 +++++++++++++++----------------- 1 file changed, 15 insertions(+), 17 deletions(-) diff --git a/aider/utils.py b/aider/utils.py index 78df252bd..2a399e190 100644 --- a/aider/utils.py +++ b/aider/utils.py @@ -189,26 +189,24 @@ def pip_install(args): ] cmd += args - process = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, text=True, bufsize=1, universal_newlines=True) - output = [] - try: + process = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, text=True, bufsize=1, universal_newlines=True) + output = [] + for line in process.stdout: - line = line.strip() - print(f"\r{line}", end='', flush=True) output.append(line) - + # todo output a simple text spinner + return_code = process.wait() - - if return_code != 0: - print("\nInstallation failed. Full output:") - for line in output: - print(line) - return False - - print() # Print a newline after successful installation - return True - + + if return_code == 0: + print() + print() + return True + except subprocess.CalledProcessError as e: print(f"\nError running pip install: {e}") - return False + + print("\nInstallation failed. Full output:") + for line in output: + print(line)