From f0f4fb5957c586d3b0427012f68a9536af3f14fb Mon Sep 17 00:00:00 2001 From: Vikranth3140 Date: Fri, 7 Jun 2024 00:55:27 +0530 Subject: [PATCH 1/5] Added system information collection and output feature to CLI tool. --- gpt_engineer/applications/cli/main.py | 35 +++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/gpt_engineer/applications/cli/main.py b/gpt_engineer/applications/cli/main.py index 95158bc000..7754c05648 100644 --- a/gpt_engineer/applications/cli/main.py +++ b/gpt_engineer/applications/cli/main.py @@ -29,6 +29,9 @@ import logging import os import sys +import platform +import subprocess +import json from pathlib import Path @@ -237,6 +240,25 @@ def prompt_yesno() -> bool: print("Please respond with 'y' or 'n'") +def get_system_info(): + system_info = { + "os": platform.system(), + "os_version": platform.version(), + "architecture": platform.machine(), + "python_version": sys.version, + "packages": get_installed_packages() + } + return system_info + +def get_installed_packages(): + try: + result = subprocess.run([sys.executable, "-m", "pip", "list", "--format=json"], capture_output=True, text=True) + packages = json.loads(result.stdout) + return {pkg["name"]: pkg["version"] for pkg in packages} + except Exception as e: + return str(e) + + @app.command( help=""" GPT-engineer lets you: @@ -329,6 +351,11 @@ def main( "--no_execution", help="Run setup but to not call LLM or write any code. For testing purposes.", ), + sysinfo: bool = typer.Option( + False, + "--sysinfo", + help="Output system information for debugging", + ), ): """ The main entry point for the CLI tool that generates or improves a project. @@ -369,6 +396,8 @@ def main( Flag indicating whether to enable verbose logging. no_execution: bool Run setup but to not call LLM or write any code. For testing purposes. + sysinfo: bool + Flag indicating whether to output system information for debugging. Returns ------- @@ -380,6 +409,12 @@ def main( sys.excepthook = lambda *_: pdb.pm() + if sysinfo: + sys_info = get_system_info() + for key, value in sys_info.items(): + print(f"{key}: {value}") + raise typer.Exit() + # Validate arguments if improve_mode and (clarify_mode or lite_mode): typer.echo("Error: Clarify and lite mode are not compatible with improve mode.") From eee994b219716a8061a78abbc722aee735a81b64 Mon Sep 17 00:00:00 2001 From: Vikranth3140 Date: Fri, 7 Jun 2024 23:45:05 +0530 Subject: [PATCH 2/5] Apply ruff formatting changes from pre-commit hook --- gpt_engineer/applications/cli/main.py | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/gpt_engineer/applications/cli/main.py b/gpt_engineer/applications/cli/main.py index 7754c05648..4a28c42c57 100644 --- a/gpt_engineer/applications/cli/main.py +++ b/gpt_engineer/applications/cli/main.py @@ -26,12 +26,12 @@ """ import difflib +import json import logging import os -import sys import platform import subprocess -import json +import sys from pathlib import Path @@ -246,13 +246,18 @@ def get_system_info(): "os_version": platform.version(), "architecture": platform.machine(), "python_version": sys.version, - "packages": get_installed_packages() + "packages": get_installed_packages(), } return system_info + def get_installed_packages(): try: - result = subprocess.run([sys.executable, "-m", "pip", "list", "--format=json"], capture_output=True, text=True) + result = subprocess.run( + [sys.executable, "-m", "pip", "list", "--format=json"], + capture_output=True, + text=True, + ) packages = json.loads(result.stdout) return {pkg["name"]: pkg["version"] for pkg in packages} except Exception as e: From 1c70a2e8434c39366f5963a3b1b7a77774d2a68b Mon Sep 17 00:00:00 2001 From: Vikranth3140 Date: Tue, 18 Jun 2024 18:03:45 +0530 Subject: [PATCH 3/5] Improve formatting of system info output --- gpt_engineer/applications/cli/main.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/gpt_engineer/applications/cli/main.py b/gpt_engineer/applications/cli/main.py index 4a28c42c57..530a5612cc 100644 --- a/gpt_engineer/applications/cli/main.py +++ b/gpt_engineer/applications/cli/main.py @@ -246,7 +246,7 @@ def get_system_info(): "os_version": platform.version(), "architecture": platform.machine(), "python_version": sys.version, - "packages": get_installed_packages(), + "packages": format_installed_packages(get_installed_packages()) } return system_info @@ -264,6 +264,9 @@ def get_installed_packages(): return str(e) +def format_installed_packages(packages): + return "\n".join([f"{name}: {version}" for name, version in packages.items()]) + @app.command( help=""" GPT-engineer lets you: From 5824ffb174baf39677a28c43f2147f00960cc302 Mon Sep 17 00:00:00 2001 From: Vikranth3140 Date: Tue, 18 Jun 2024 18:06:54 +0530 Subject: [PATCH 4/5] Apply pre-commit hook formatting changes --- gpt_engineer/applications/cli/main.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gpt_engineer/applications/cli/main.py b/gpt_engineer/applications/cli/main.py index 530a5612cc..34d413c34c 100644 --- a/gpt_engineer/applications/cli/main.py +++ b/gpt_engineer/applications/cli/main.py @@ -246,7 +246,7 @@ def get_system_info(): "os_version": platform.version(), "architecture": platform.machine(), "python_version": sys.version, - "packages": format_installed_packages(get_installed_packages()) + "packages": format_installed_packages(get_installed_packages()), } return system_info From 30d9f5b0730c3ff6996bd1b92af925ebff2a0081 Mon Sep 17 00:00:00 2001 From: Vikranth3140 Date: Tue, 18 Jun 2024 18:08:46 +0530 Subject: [PATCH 5/5] Apply pre-commit hook formatting changes --- gpt_engineer/applications/cli/main.py | 1 + 1 file changed, 1 insertion(+) diff --git a/gpt_engineer/applications/cli/main.py b/gpt_engineer/applications/cli/main.py index 34d413c34c..a965bdc52d 100644 --- a/gpt_engineer/applications/cli/main.py +++ b/gpt_engineer/applications/cli/main.py @@ -267,6 +267,7 @@ def get_installed_packages(): def format_installed_packages(packages): return "\n".join([f"{name}: {version}" for name, version in packages.items()]) + @app.command( help=""" GPT-engineer lets you: