@@ -81,6 +81,19 @@ def make_ai_service_request(
8181 # response.raise_for_status() # Will raise an HTTPError if the HTTP request returned an unsuccessful status code
8282 return response
8383
84+ def _get_valid_candidates (self , optimizations_json : list [dict [str , Any ]]) -> list [OptimizedCandidate ]:
85+ candidates : list [OptimizedCandidate ] = []
86+ for opt in optimizations_json :
87+ code = CodeStringsMarkdown .parse_markdown_code (opt ["source_code" ])
88+ if not code .code_strings :
89+ continue
90+ candidates .append (
91+ OptimizedCandidate (
92+ source_code = code , explanation = opt ["explanation" ], optimization_id = opt ["optimization_id" ]
93+ )
94+ )
95+ return candidates
96+
8497 def optimize_python_code ( # noqa: D417
8598 self ,
8699 source_code : str ,
@@ -135,14 +148,7 @@ def optimize_python_code( # noqa: D417
135148 console .rule ()
136149 end_time = time .perf_counter ()
137150 logger .debug (f"Generating optimizations took { end_time - start_time :.2f} seconds." )
138- return [
139- OptimizedCandidate (
140- source_code = CodeStringsMarkdown .parse_markdown_code (opt ["source_code" ]),
141- explanation = opt ["explanation" ],
142- optimization_id = opt ["optimization_id" ],
143- )
144- for opt in optimizations_json
145- ]
151+ return self ._get_valid_candidates (optimizations_json )
146152 try :
147153 error = response .json ()["error" ]
148154 except Exception :
@@ -205,14 +211,7 @@ def optimize_python_code_line_profiler( # noqa: D417
205211 optimizations_json = response .json ()["optimizations" ]
206212 logger .info (f"Generated { len (optimizations_json )} candidate optimizations using line profiler information." )
207213 console .rule ()
208- return [
209- OptimizedCandidate (
210- source_code = CodeStringsMarkdown .parse_markdown_code (opt ["source_code" ]),
211- explanation = opt ["explanation" ],
212- optimization_id = opt ["optimization_id" ],
213- )
214- for opt in optimizations_json
215- ]
214+ return self ._get_valid_candidates (optimizations_json )
216215 try :
217216 error = response .json ()["error" ]
218217 except Exception :
@@ -262,14 +261,17 @@ def optimize_python_code_refinement(self, request: list[AIServiceRefinerRequest]
262261 refined_optimizations = response .json ()["refinements" ]
263262 logger .debug (f"Generated { len (refined_optimizations )} candidate refinements." )
264263 console .rule ()
264+
265+ refinements = self ._get_valid_candidates (refined_optimizations )
265266 return [
266267 OptimizedCandidate (
267- source_code = CodeStringsMarkdown . parse_markdown_code ( opt [ " source_code" ]) ,
268- explanation = opt [ " explanation" ] ,
269- optimization_id = opt [ " optimization_id" ] [:- 4 ] + "refi" ,
268+ source_code = c . source_code ,
269+ explanation = c . explanation ,
270+ optimization_id = c . optimization_id [:- 4 ] + "refi" ,
270271 )
271- for opt in refined_optimizations
272+ for c in refinements
272273 ]
274+
273275 try :
274276 error = response .json ()["error" ]
275277 except Exception :
0 commit comments