Skip to content

Commit ff78ce3

Browse files
fixes
1 parent e32e93f commit ff78ce3

File tree

8 files changed

+48
-35
lines changed

8 files changed

+48
-35
lines changed

codeflash/api/cfapi.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,12 @@
1313
from pydantic.json import pydantic_encoder
1414

1515
from codeflash.cli_cmds.console import console, logger
16-
from codeflash.code_utils.env_utils import ensure_codeflash_api_key, get_codeflash_api_key, get_pr_number
16+
from codeflash.code_utils.env_utils import (
17+
ensure_codeflash_api_key,
18+
get_codeflash_api_key,
19+
get_pr_number,
20+
is_LSP_enabled,
21+
)
1722
from codeflash.code_utils.git_utils import get_current_branch, get_repo_owner_and_name, git_root_dir
1823
from codeflash.github.PrComment import FileDiffContent, PrComment
1924
from codeflash.version import __version__
@@ -101,7 +106,7 @@ def get_user_id() -> Optional[str]:
101106
if min_version and version.parse(min_version) > version.parse(__version__):
102107
msg = "Your Codeflash CLI version is outdated. Please update to the latest version using `pip install --upgrade codeflash`."
103108
console.print(f"[bold red]{msg}[/bold red]")
104-
if console.quiet: # lsp
109+
if is_LSP_enabled():
105110
logger.debug(msg)
106111
return f"Error: {msg}"
107112
sys.exit(1)

codeflash/code_utils/env_utils.py

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,11 @@
77
from pathlib import Path
88
from typing import Any, Optional
99

10-
from codeflash.cli_cmds.console import console, logger
10+
from codeflash.cli_cmds.console import logger
1111
from codeflash.code_utils.code_utils import exit_with_message
1212
from codeflash.code_utils.formatter import format_code
1313
from codeflash.code_utils.shell_utils import read_api_key_from_shell_config
14+
from codeflash.lsp.helpers import is_LSP_enabled
1415

1516

1617
def check_formatter_installed(formatter_cmds: list[str], exit_on_failure: bool = True) -> bool: # noqa
@@ -34,11 +35,12 @@ def check_formatter_installed(formatter_cmds: list[str], exit_on_failure: bool =
3435

3536
@lru_cache(maxsize=1)
3637
def get_codeflash_api_key() -> str:
37-
if console.quiet: # lsp
38-
# prefer shell config over env var in lsp mode
39-
api_key = read_api_key_from_shell_config()
40-
else:
41-
api_key = os.environ.get("CODEFLASH_API_KEY") or read_api_key_from_shell_config()
38+
# prefer shell config over env var in lsp mode
39+
api_key = (
40+
read_api_key_from_shell_config()
41+
if is_LSP_enabled()
42+
else os.environ.get("CODEFLASH_API_KEY") or read_api_key_from_shell_config()
43+
)
4244

4345
api_secret_docs_message = "For more information, refer to the documentation at [https://docs.codeflash.ai/getting-started/codeflash-github-actions#add-your-api-key-to-your-repository-secrets]." # noqa
4446
if not api_key:
@@ -125,11 +127,6 @@ def is_ci() -> bool:
125127
return bool(os.environ.get("CI") or os.environ.get("GITHUB_ACTIONS"))
126128

127129

128-
@lru_cache(maxsize=1)
129-
def is_LSP_enabled() -> bool:
130-
return console.quiet
131-
132-
133130
def is_pr_draft() -> bool:
134131
"""Check if the PR is draft. in the github action context."""
135132
event = get_cached_gh_event_data()

codeflash/code_utils/formatter.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import isort
1414

1515
from codeflash.cli_cmds.console import console, logger
16+
from codeflash.lsp.helpers import is_LSP_enabled
1617

1718

1819
def generate_unified_diff(original: str, modified: str, from_file: str, to_file: str) -> str:
@@ -109,8 +110,7 @@ def format_code(
109110
print_status: bool = True, # noqa
110111
exit_on_failure: bool = True, # noqa
111112
) -> str:
112-
if console.quiet:
113-
# lsp mode
113+
if is_LSP_enabled():
114114
exit_on_failure = False
115115
with tempfile.TemporaryDirectory() as test_dir_str:
116116
if isinstance(path, str):

codeflash/code_utils/git_utils.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,10 @@
1515
from rich.prompt import Confirm
1616
from unidiff import PatchSet
1717

18-
from codeflash.cli_cmds.console import console, logger
18+
from codeflash.cli_cmds.console import logger
1919
from codeflash.code_utils.compat import codeflash_cache_dir
2020
from codeflash.code_utils.config_consts import N_CANDIDATES
21+
from codeflash.lsp.helpers import is_LSP_enabled
2122

2223
if TYPE_CHECKING:
2324
from git import Repo
@@ -216,15 +217,16 @@ def create_detached_worktree(module_root: Path) -> Optional[Path]:
216217
["git", "worktree", "add", "-d", str(worktree_dir)],
217218
cwd=git_root,
218219
check=True,
219-
stdout=subprocess.DEVNULL if console.quiet else None,
220-
stderr=subprocess.DEVNULL if console.quiet else None,
220+
stdout=subprocess.DEVNULL if is_LSP_enabled() else None,
221+
stderr=subprocess.DEVNULL if is_LSP_enabled() else None,
221222
)
222223
if result.returncode != 0:
223224
logger.error(f"Failed to create worktree: {result.stderr}")
224225
return None
225226

226227
# Get uncommitted diff from the original repo
227228
repository = git.Repo(module_root, search_parent_directories=True)
229+
repository.git.add("-N", ".") # add the index for untracked files to be included in the diff
228230
uni_diff_text = repository.git.diff(None, "HEAD", ignore_blank_lines=True, ignore_space_at_eol=True)
229231

230232
if not uni_diff_text.strip():

codeflash/lsp/beta.py

Lines changed: 17 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -46,13 +46,7 @@ def get_optimizable_functions(
4646
file_path = Path(uris.to_fs_path(params.textDocument.uri))
4747
server.show_message_log(f"Getting optimizable functions for: {file_path}", "Info")
4848

49-
server.optimizer.worktree_mode()
50-
51-
args = server.optimizer.args
52-
53-
original_relative_file_path = file_path.relative_to(args.base_project_root)
54-
55-
server.optimizer.args.file = server.optimizer.current_worktree / original_relative_file_path
49+
server.optimizer.args.file = file_path
5650
server.optimizer.args.function = None # Always get ALL functions, not just one
5751
server.optimizer.args.previous_checkpoint_functions = False
5852

@@ -75,11 +69,15 @@ def initialize_function_optimization(
7569
) -> dict[str, str]:
7670
file_path = Path(uris.to_fs_path(params.textDocument.uri))
7771
server.show_message_log(f"Initializing optimization for function: {params.functionName} in {file_path}", "Info")
72+
if server.optimizer is None:
73+
_initialize_optimizer_if_valid(server)
7874
server.optimizer.worktree_mode()
75+
original_args, _ = server.optimizer.original_args_and_test_cfg
7976

8077
server.optimizer.args.function = params.functionName
81-
original_relative_file_path = file_path.relative_to(server.optimizer.args.base_project_root)
78+
original_relative_file_path = file_path.relative_to(original_args.project_root)
8279
server.optimizer.args.file = server.optimizer.current_worktree / original_relative_file_path
80+
server.optimizer.args.previous_checkpoint_functions = False
8381

8482
server.show_message_log(
8583
f"Args set - function: {server.optimizer.args.function}, file: {server.optimizer.args.file}", "Info"
@@ -338,10 +336,14 @@ def perform_function_optimization( # noqa: PLR0911
338336
"patch_path": patch_path,
339337
}
340338
finally:
341-
server.optimizer.cleanup_temporary_paths()
342-
# restore args and test cfg
343-
if server.optimizer.original_args_and_test_cfg:
344-
server.optimizer.args, server.optimizer.test_cfg = server.optimizer.original_args_and_test_cfg
345-
server.optimizer.args.function = None
346-
server.optimizer.current_worktree = None
347-
server.optimizer.current_function_optimizer = None
339+
cleanup_the_optimizer(server)
340+
341+
342+
def cleanup_the_optimizer(server: CodeflashLanguageServer) -> None:
343+
server.optimizer.cleanup_temporary_paths()
344+
# restore args and test cfg
345+
if server.optimizer.original_args_and_test_cfg:
346+
server.optimizer.args, server.optimizer.test_cfg = server.optimizer.original_args_and_test_cfg
347+
server.optimizer.args.function = None
348+
server.optimizer.current_worktree = None
349+
server.optimizer.current_function_optimizer = None

codeflash/lsp/helpers.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
from functools import lru_cache
2+
3+
from codeflash.cli_cmds.console import console
4+
5+
6+
@lru_cache(maxsize=1)
7+
def is_LSP_enabled() -> bool:
8+
return console.quiet

codeflash/optimization/optimizer.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -446,7 +446,6 @@ def mutate_args_for_worktree_mode(self, worktree_dir: Path) -> None:
446446
self.original_args_and_test_cfg = (saved_args, saved_test_cfg)
447447

448448
project_root = self.args.project_root
449-
self.args.base_project_root = project_root # keep a reference to the original project root
450449
module_root = self.args.module_root
451450
relative_module_root = module_root.relative_to(project_root)
452451
relative_optimized_file = self.args.file.relative_to(project_root) if self.args.file else None

codeflash/verification/concolic_testing.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,9 @@
1010
from codeflash.cli_cmds.console import console, logger
1111
from codeflash.code_utils.compat import SAFE_SYS_EXECUTABLE
1212
from codeflash.code_utils.concolic_utils import clean_concolic_tests
13-
from codeflash.code_utils.env_utils import is_LSP_enabled
1413
from codeflash.code_utils.static_analysis import has_typed_parameters
1514
from codeflash.discovery.discover_unit_tests import discover_unit_tests
15+
from codeflash.lsp.helpers import is_LSP_enabled
1616
from codeflash.telemetry.posthog_cf import ph
1717
from codeflash.verification.verification_utils import TestConfig
1818

0 commit comments

Comments
 (0)