Skip to content

Commit 3c8d0e5

Browse files
committed
second step
1 parent e54ada6 commit 3c8d0e5

File tree

3 files changed

+23
-22
lines changed

3 files changed

+23
-22
lines changed

codeflash/code_utils/code_utils.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -216,7 +216,5 @@ def restore_conftest(path_to_content_map: dict[Path, str]) -> None:
216216
path.write_text(file_content, encoding="utf8")
217217

218218

219-
def exit_with_message(message: str, *, error_on_exit: bool = False) -> None:
220-
paneled_text(message, panel_args={"style": "red"})
221-
222-
sys.exit(1 if error_on_exit else 0)
219+
async def dummy_async_function() -> None:
220+
"""Provide a dummy async function for testing purposes."""

codeflash/lsp/beta.py

Lines changed: 11 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
from pygls import uris
88

9+
from codeflash.either import is_successful
910
from codeflash.lsp.server import CodeflashLanguageServer, CodeflashLanguageServerProtocol
1011

1112
if TYPE_CHECKING:
@@ -80,30 +81,23 @@ def third_step_in_optimize_function(server: CodeflashLanguageServer, params: Opt
8081
)
8182

8283
server.optimizer.current_function_optimizer = function_optimizer
84+
if not function_optimizer:
85+
return {"functionName": params.functionName, "status": "error", "message": "No function optimizer found"}
86+
87+
initialization_result = function_optimizer.can_be_optimized()
88+
if not is_successful(initialization_result):
89+
return {"functionName": params.functionName, "status": "error", "message": initialization_result.failure()}
90+
91+
should_run_experiment, code_context, original_helper_code = initialization_result.unwrap()
8392

8493
return {
8594
"functionName": params.functionName,
8695
"status": "success",
87-
"message": "Function optimizer created successfully",
88-
"extra": function_optimizer.function_to_tests,
96+
"message": "Function can be optimized",
97+
"extra": original_helper_code,
8998
}
9099

91100

92-
@server.feature("fourth_step_in_optimize_function")
93-
def fourth_step_in_optimize_function(server: CodeflashLanguageServer, params: OptimizeFunctionParams) -> dict[str, str]:
94-
current_function_optimizer = server.optimizer.current_function_optimizer
95-
96-
if not current_function_optimizer:
97-
return {"functionName": params.functionName, "status": "error", "message": "No function optimizer found"}
98-
99-
optimized_code = current_function_optimizer.optimize_function()
100-
101-
if not optimized_code:
102-
return {"functionName": params.functionName, "status": "error", "message": "Optimization failed"}
103-
104-
return {"functionName": params.functionName, "status": "success", "optimized_code": optimized_code}
105-
106-
107101
if __name__ == "__main__":
108102
from codeflash.cli_cmds.console import console
109103

codeflash/optimization/function_optimizer.py

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,7 @@ def __init__(
144144
self.total_benchmark_timings = total_benchmark_timings if total_benchmark_timings else {}
145145
self.replay_tests_dir = replay_tests_dir if replay_tests_dir else None
146146

147-
def optimize_function(self) -> Result[BestOptimization, str]: # noqa: PLR0911
147+
def can_be_optimized(self) -> Result[tuple[bool, CodeOptimizationContext, dict[Path, str]], str]:
148148
should_run_experiment = self.experiment_id is not None
149149
logger.debug(f"Function Trace ID: {self.function_trace_id}")
150150
ph("cli-optimize-function-start", {"function_trace_id": self.function_trace_id})
@@ -171,6 +171,15 @@ def optimize_function(self) -> Result[BestOptimization, str]: # noqa: PLR0911
171171
):
172172
return Failure("Function optimization previously attempted, skipping.")
173173

174+
return Success((should_run_experiment, code_context, original_helper_code))
175+
176+
def optimize_function(self) -> Result[BestOptimization, str]:
177+
initialization_result = self.can_be_optimized()
178+
if not is_successful(initialization_result):
179+
return Failure(initialization_result.failure())
180+
181+
should_run_experiment, code_context, original_helper_code = initialization_result.unwrap()
182+
174183
code_print(code_context.read_writable_code)
175184
generated_test_paths = [
176185
get_test_file_path(

0 commit comments

Comments
 (0)