From b497210465cd91178a1f403a5120b90ce97612d8 Mon Sep 17 00:00:00 2001 From: aseembits93 Date: Thu, 29 May 2025 14:44:31 -0700 Subject: [PATCH 1/6] refactoring --- codeflash/code_utils/env_utils.py | 17 ++--------------- 1 file changed, 2 insertions(+), 15 deletions(-) diff --git a/codeflash/code_utils/env_utils.py b/codeflash/code_utils/env_utils.py index ee18cfa00..be02ca9a8 100644 --- a/codeflash/code_utils/env_utils.py +++ b/codeflash/code_utils/env_utils.py @@ -9,6 +9,7 @@ from typing import Optional from codeflash.cli_cmds.console import logger +from codeflash.code_utils.formatter import format_code from codeflash.code_utils.shell_utils import read_api_key_from_shell_config @@ -28,22 +29,8 @@ def check_formatter_installed(formatter_cmds: list[str]) -> bool: f.write(tmp_code) f.flush() tmp_file = Path(f.name) - file_token = "$file" # noqa: S105 - for command in set(formatter_cmds): - formatter_cmd_list = shlex.split(command, posix=os.name != "nt") - formatter_cmd_list = [tmp_file.as_posix() if chunk == file_token else chunk for chunk in formatter_cmd_list] - try: - result = subprocess.run(formatter_cmd_list, capture_output=True, check=False) - except (FileNotFoundError, NotADirectoryError): - return_code = False - break - if result.returncode: - return_code = False - break + format_code(formatter_cmds, tmp_file) tmp_file.unlink(missing_ok=True) - if not return_code: - msg = f"Error running formatter command: {command}" - raise FormatterNotFoundError(msg) return return_code From 35e889724c69b1345d577a9ece4edda5e06c0fbc Mon Sep 17 00:00:00 2001 From: aseembits93 Date: Thu, 29 May 2025 14:47:40 -0700 Subject: [PATCH 2/6] precommit fix --- codeflash/code_utils/env_utils.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/codeflash/code_utils/env_utils.py b/codeflash/code_utils/env_utils.py index be02ca9a8..b70b2d456 100644 --- a/codeflash/code_utils/env_utils.py +++ b/codeflash/code_utils/env_utils.py @@ -1,8 +1,6 @@ from __future__ import annotations import os -import shlex -import subprocess import tempfile from functools import lru_cache from pathlib import Path From f74bef7ab1d56740361faaf752dab8d8db9d917f Mon Sep 17 00:00:00 2001 From: aseembits93 Date: Thu, 29 May 2025 15:05:17 -0700 Subject: [PATCH 3/6] precommit fix --- codeflash/code_utils/env_utils.py | 10 ++++++++-- codeflash/code_utils/formatter.py | 2 +- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/codeflash/code_utils/env_utils.py b/codeflash/code_utils/env_utils.py index b70b2d456..4b185811b 100644 --- a/codeflash/code_utils/env_utils.py +++ b/codeflash/code_utils/env_utils.py @@ -1,6 +1,7 @@ from __future__ import annotations import os +import sys import tempfile from functools import lru_cache from pathlib import Path @@ -27,8 +28,13 @@ def check_formatter_installed(formatter_cmds: list[str]) -> bool: f.write(tmp_code) f.flush() tmp_file = Path(f.name) - format_code(formatter_cmds, tmp_file) - tmp_file.unlink(missing_ok=True) + try: + format_code(formatter_cmds, tmp_file) + except Exception: + print( + "⚠️ Failed to format code since formatter was not found in the environment. Please install it and try again." + ) + sys.exit(1) return return_code diff --git a/codeflash/code_utils/formatter.py b/codeflash/code_utils/formatter.py index 875fd0a1f..15fb148a0 100644 --- a/codeflash/code_utils/formatter.py +++ b/codeflash/code_utils/formatter.py @@ -31,7 +31,7 @@ def format_code(formatter_cmds: list[str], path: Path) -> str: console.rule(f"Formatted Successfully with: {formatter_name.replace('$file', path.name)}") else: logger.error(f"Failed to format code with {' '.join(formatter_cmd_list)}") - except FileNotFoundError as e: + except (FileNotFoundError, NotADirectoryError) as e: from rich.panel import Panel from rich.text import Text From f6ec81df9b66e6494fb6ae91407ac096f59959c7 Mon Sep 17 00:00:00 2001 From: aseembits93 Date: Thu, 29 May 2025 15:14:22 -0700 Subject: [PATCH 4/6] change error message --- codeflash/code_utils/env_utils.py | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/codeflash/code_utils/env_utils.py b/codeflash/code_utils/env_utils.py index 4b185811b..f4e51cad8 100644 --- a/codeflash/code_utils/env_utils.py +++ b/codeflash/code_utils/env_utils.py @@ -12,13 +12,6 @@ from codeflash.code_utils.shell_utils import read_api_key_from_shell_config -class FormatterNotFoundError(Exception): - """Exception raised when a formatter is not found.""" - - def __init__(self, formatter_cmd: str) -> None: - super().__init__(f"Formatter command not found: {formatter_cmd}") - - def check_formatter_installed(formatter_cmds: list[str]) -> bool: return_code = True if formatter_cmds[0] == "disabled": @@ -32,7 +25,7 @@ def check_formatter_installed(formatter_cmds: list[str]) -> bool: format_code(formatter_cmds, tmp_file) except Exception: print( - "⚠️ Failed to format code since formatter was not found in the environment. Please install it and try again." + "⚠️ Codeflash requires a code formatter to be installed in your environment, but none was found. Please install a supported formatter, verify the formatter-cmds in your codeflash pyproject.toml config and try again." ) sys.exit(1) return return_code From d74c92077ed575d7d6075c57aaa50f30b093163b Mon Sep 17 00:00:00 2001 From: aseembits93 Date: Thu, 29 May 2025 15:28:23 -0700 Subject: [PATCH 5/6] precommit fix --- codeflash/cli_cmds/cmd_init.py | 2 +- codeflash/code_utils/env_utils.py | 5 +++-- codeflash/code_utils/formatter.py | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/codeflash/cli_cmds/cmd_init.py b/codeflash/cli_cmds/cmd_init.py index aaa8cbe53..ee188e4ae 100644 --- a/codeflash/cli_cmds/cmd_init.py +++ b/codeflash/cli_cmds/cmd_init.py @@ -721,7 +721,7 @@ def configure_pyproject_toml(setup_info: SetupInfo) -> None: ) elif formatter == "don't use a formatter": formatter_cmds.append("disabled") - check_formatter_installed(formatter_cmds) + check_formatter_installed(formatter_cmds, exit_on_failure="no") codeflash_section["formatter-cmds"] = formatter_cmds # Add the 'codeflash' section, ensuring 'tool' section exists tool_section = pyproject_data.get("tool", tomlkit.table()) diff --git a/codeflash/code_utils/env_utils.py b/codeflash/code_utils/env_utils.py index f4e51cad8..4d874eee5 100644 --- a/codeflash/code_utils/env_utils.py +++ b/codeflash/code_utils/env_utils.py @@ -12,7 +12,7 @@ from codeflash.code_utils.shell_utils import read_api_key_from_shell_config -def check_formatter_installed(formatter_cmds: list[str]) -> bool: +def check_formatter_installed(formatter_cmds: list[str], exit_on_failure: str = "yes") -> bool: return_code = True if formatter_cmds[0] == "disabled": return return_code @@ -27,7 +27,8 @@ def check_formatter_installed(formatter_cmds: list[str]) -> bool: print( "⚠️ Codeflash requires a code formatter to be installed in your environment, but none was found. Please install a supported formatter, verify the formatter-cmds in your codeflash pyproject.toml config and try again." ) - sys.exit(1) + if exit_on_failure == "yes": + sys.exit(1) return return_code diff --git a/codeflash/code_utils/formatter.py b/codeflash/code_utils/formatter.py index 15fb148a0..875fd0a1f 100644 --- a/codeflash/code_utils/formatter.py +++ b/codeflash/code_utils/formatter.py @@ -31,7 +31,7 @@ def format_code(formatter_cmds: list[str], path: Path) -> str: console.rule(f"Formatted Successfully with: {formatter_name.replace('$file', path.name)}") else: logger.error(f"Failed to format code with {' '.join(formatter_cmd_list)}") - except (FileNotFoundError, NotADirectoryError) as e: + except FileNotFoundError as e: from rich.panel import Panel from rich.text import Text From bbf852df0991a40cd39e1948b13ae30ded55b02b Mon Sep 17 00:00:00 2001 From: aseembits93 Date: Thu, 29 May 2025 15:31:54 -0700 Subject: [PATCH 6/6] revert to bool arg --- codeflash/cli_cmds/cmd_init.py | 2 +- codeflash/code_utils/env_utils.py | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/codeflash/cli_cmds/cmd_init.py b/codeflash/cli_cmds/cmd_init.py index ee188e4ae..bfe600fa4 100644 --- a/codeflash/cli_cmds/cmd_init.py +++ b/codeflash/cli_cmds/cmd_init.py @@ -721,7 +721,7 @@ def configure_pyproject_toml(setup_info: SetupInfo) -> None: ) elif formatter == "don't use a formatter": formatter_cmds.append("disabled") - check_formatter_installed(formatter_cmds, exit_on_failure="no") + check_formatter_installed(formatter_cmds, exit_on_failure=False) codeflash_section["formatter-cmds"] = formatter_cmds # Add the 'codeflash' section, ensuring 'tool' section exists tool_section = pyproject_data.get("tool", tomlkit.table()) diff --git a/codeflash/code_utils/env_utils.py b/codeflash/code_utils/env_utils.py index 4d874eee5..8bf8a506c 100644 --- a/codeflash/code_utils/env_utils.py +++ b/codeflash/code_utils/env_utils.py @@ -12,7 +12,7 @@ from codeflash.code_utils.shell_utils import read_api_key_from_shell_config -def check_formatter_installed(formatter_cmds: list[str], exit_on_failure: str = "yes") -> bool: +def check_formatter_installed(formatter_cmds: list[str], exit_on_failure: bool = True) -> bool: # noqa return_code = True if formatter_cmds[0] == "disabled": return return_code @@ -27,7 +27,7 @@ def check_formatter_installed(formatter_cmds: list[str], exit_on_failure: str = print( "⚠️ Codeflash requires a code formatter to be installed in your environment, but none was found. Please install a supported formatter, verify the formatter-cmds in your codeflash pyproject.toml config and try again." ) - if exit_on_failure == "yes": + if exit_on_failure: sys.exit(1) return return_code