@@ -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}  )
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 )}  )
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 )}  )
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