Skip to content

Commit 2e8414f

Browse files
committed
todo cleanup
1 parent aefedda commit 2e8414f

File tree

3 files changed

+52
-22
lines changed

3 files changed

+52
-22
lines changed

codeflash/api/aiservice.py

Lines changed: 45 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,9 @@
44
import os
55
import platform
66
import time
7-
from typing import TYPE_CHECKING, Any, Literal
87
from pathlib import Path
8+
from typing import TYPE_CHECKING, Any, cast
9+
910
import requests
1011
from pydantic.json import pydantic_encoder
1112

@@ -23,6 +24,7 @@
2324
from codeflash.discovery.functions_to_optimize import FunctionToOptimize
2425
from codeflash.models.ExperimentMetadata import ExperimentMetadata
2526
from codeflash.models.models import AIServiceRefinerRequest
27+
from codeflash.result.explanation import Explanation
2628

2729

2830
class AiServiceClient:
@@ -512,28 +514,53 @@ def generate_regression_tests( # noqa: D417
512514
ph("cli-testgen-error-response", {"response_status_code": response.status_code, "error": response.text})
513515
return None
514516

515-
def get_optimization_impact(self, original_code, new_code, explanation, existing_tests_source, generated_original_test_source, function_trace_id, coverage_message, replay_tests, concolic_tests, root_dir, original_line_profiler_results, optimized_line_profiler_results) -> str:
517+
def get_optimization_impact(
518+
self,
519+
original_code: dict[Path, str],
520+
new_code: dict[Path, str],
521+
explanation: Explanation,
522+
existing_tests_source: str,
523+
generated_original_test_source: str,
524+
function_trace_id: str,
525+
coverage_message: str,
526+
replay_tests: str,
527+
concolic_tests: str,
528+
root_dir: Path,
529+
original_line_profiler_results: str,
530+
optimized_line_profiler_results: str,
531+
) -> str:
516532
"""Optimize the given python code for performance by making a request to the Django endpoint.
517533
518534
Args:
519-
PrComment args
535+
original_code: dict,
536+
new_code: dict,
537+
explanation: Explanation,
538+
existing_tests_source: str,
539+
generated_original_test_source: str,
540+
function_trace_id: str,
541+
coverage_message: str,
542+
replay_tests: str,
543+
concolic_tests: str,
544+
root_dir: Path,
545+
original_line_profiler_results: str,
546+
optimized_line_profiler_results: str,
520547
521548
Returns:
522549
-------
523550
- 'high','medium' or 'low' optimization impact
524551
525552
"""
526553
logger.info("!lsp|Computing Optimization Impact…")
527-
original_code_str = ''
528-
new_code_str = ''
529-
for p in original_code:
554+
original_code_str = ""
555+
new_code_str = ""
556+
for p, code in original_code.items():
530557
original_code_str += f"```python:{Path(p).relative_to(root_dir).as_posix()}"
531-
original_code_str += '\n'
532-
original_code_str += original_code[p]
533-
for p in new_code:
558+
original_code_str += "\n"
559+
original_code_str += code
560+
for p, code in new_code.items():
534561
new_code_str += f"```python:{Path(p).relative_to(root_dir).as_posix()}"
535-
new_code_str += '\n'
536-
new_code_str += new_code[p]
562+
new_code_str += "\n"
563+
new_code_str += code
537564

538565
payload = {
539566
"original_code": original_code_str,
@@ -544,33 +571,32 @@ def get_optimization_impact(self, original_code, new_code, explanation, existing
544571
"coverage_message": coverage_message,
545572
"replay_tests": replay_tests,
546573
"concolic_tests": concolic_tests,
547-
"speedup": f"{1+float(explanation.speedup):.2f}x",
574+
"speedup": f"{1 + float(explanation.speedup):.2f}x",
548575
"loop_count": explanation.winning_benchmarking_test_results.number_of_loops(),
549576
"benchmark_details": explanation.benchmark_details if explanation.benchmark_details else None,
550577
"optimized_runtime": humanize_runtime(explanation.best_runtime_ns),
551578
"original_runtime": humanize_runtime(explanation.original_runtime_ns),
552-
"original_line_profiler_results":original_line_profiler_results,
553-
"optimized_line_profiler_results":optimized_line_profiler_results
579+
"original_line_profiler_results": original_line_profiler_results,
580+
"optimized_line_profiler_results": optimized_line_profiler_results,
554581
}
555582
console.rule()
556583
try:
557584
response = self.make_ai_service_request("/optimization_impact", payload=payload, timeout=600)
558585
except requests.exceptions.RequestException as e:
559586
logger.exception(f"Error generating optimization refinements: {e}")
560587
ph("cli-optimize-error-caught", {"error": str(e)})
561-
return ''
588+
return ""
562589

563590
if response.status_code == 200:
564-
impact = response.json()["impact"]
565-
return impact
591+
return cast("str", response.json()["impact"])
566592
try:
567-
error = response.json()["error"]
593+
error = cast("str", response.json()["error"])
568594
except Exception:
569595
error = response.text
570596
logger.error(f"Error generating impact candidates: {response.status_code} - {error}")
571597
ph("cli-optimize-error-response", {"response_status_code": response.status_code, "error": error})
572598
console.rule()
573-
return ''
599+
return ""
574600

575601

576602
class LocalAiServiceClient(AiServiceClient):

codeflash/code_utils/env_utils.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ def get_codeflash_api_key() -> str:
4242
if env_api_key and not shell_api_key:
4343
try:
4444
from codeflash.either import is_successful
45+
4546
result = save_api_key_to_rc(env_api_key)
4647
if is_successful(result):
4748
logger.debug(f"Automatically saved API key from environment to shell config: {result.unwrap()}")

codeflash/optimization/function_optimizer.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1407,9 +1407,12 @@ def process_review(
14071407

14081408
if raise_pr:
14091409
# modify argument of staging vs pr based on the impact
1410-
opt_impact_response = self.aiservice_client.get_optimization_impact(**data, original_line_profiler_results=original_code_baseline.line_profile_results["str_out"],
1411-
optimized_line_profiler_results=best_optimization.line_profiler_test_results["str_out"],)
1412-
if opt_impact_response in ['low', 'medium']:
1410+
opt_impact_response = self.aiservice_client.get_optimization_impact(
1411+
**data,
1412+
original_line_profiler_results=original_code_baseline.line_profile_results["str_out"],
1413+
optimized_line_profiler_results=best_optimization.line_profiler_test_results["str_out"],
1414+
)
1415+
if opt_impact_response in ["low", "medium"]:
14131416
raise_pr = False
14141417
self.args.staging_review = True
14151418

0 commit comments

Comments
 (0)