Skip to content

Commit bdf1770

Browse files
feat: optimize current diff
1 parent 1500869 commit bdf1770

File tree

2 files changed

+21
-3
lines changed

2 files changed

+21
-3
lines changed

codeflash/discovery/functions_to_optimize.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -208,7 +208,7 @@ def get_functions_to_optimize(
208208
logger.info("Finding all functions modified in the current git diff ...")
209209
console.rule()
210210
ph("cli-optimizing-git-diff")
211-
functions = get_functions_within_git_diff()
211+
functions = get_functions_within_git_diff(uncommitted_changes=False)
212212
filtered_modified_functions, functions_count = filter_functions(
213213
functions, test_cfg.tests_root, ignore_paths, project_root, module_root, previous_checkpoint_functions
214214
)
@@ -224,8 +224,8 @@ def get_functions_to_optimize(
224224
return filtered_modified_functions, functions_count, trace_file_path
225225

226226

227-
def get_functions_within_git_diff() -> dict[str, list[FunctionToOptimize]]:
228-
modified_lines: dict[str, list[int]] = get_git_diff(uncommitted_changes=False)
227+
def get_functions_within_git_diff(uncommitted_changes: bool) -> dict[str, list[FunctionToOptimize]]: # noqa: FBT001
228+
modified_lines: dict[str, list[int]] = get_git_diff(uncommitted_changes=uncommitted_changes)
229229
modified_functions: dict[str, list[FunctionToOptimize]] = {}
230230
for path_str, lines_in_file in modified_lines.items():
231231
path = Path(path_str)

codeflash/lsp/beta.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
from codeflash.api.cfapi import get_codeflash_api_key, get_user_id
1212
from codeflash.code_utils.git_utils import create_diff_patch_from_worktree
1313
from codeflash.code_utils.shell_utils import save_api_key_to_rc
14+
from codeflash.discovery.functions_to_optimize import filter_functions, get_functions_within_git_diff
1415
from codeflash.either import is_successful
1516
from codeflash.lsp.server import CodeflashLanguageServer, CodeflashLanguageServerProtocol
1617
from codeflash.result.explanation import Explanation
@@ -40,6 +41,23 @@ class ProvideApiKeyParams:
4041
server = CodeflashLanguageServer("codeflash-language-server", "v1.0", protocol_cls=CodeflashLanguageServerProtocol)
4142

4243

44+
@server.feature("getOptimizableFunctionsInCurrentDiff")
45+
def get_functions_in_current_git_diff(
46+
server: CodeflashLanguageServer, _params: OptimizableFunctionsParams
47+
) -> dict[str, str | list[str]]:
48+
functions = get_functions_within_git_diff(uncommitted_changes=True)
49+
file_to_funcs_to_optimize, _ = filter_functions(
50+
modified_functions=functions,
51+
tests_root=server.optimizer.test_cfg.tests_root,
52+
ignore_paths=[],
53+
project_root=server.optimizer.args.project_root,
54+
module_root=server.optimizer.args.module_root,
55+
previous_checkpoint_functions={},
56+
)
57+
qualified_names: list[str] = [func.qualified_name for funcs in file_to_funcs_to_optimize.values() for func in funcs]
58+
return {"functions": qualified_names, "status": "success"}
59+
60+
4361
@server.feature("getOptimizableFunctions")
4462
def get_optimizable_functions(
4563
server: CodeflashLanguageServer, params: OptimizableFunctionsParams

0 commit comments

Comments
 (0)