@@ -67,11 +67,16 @@ def __init__(
6767 def handle_result (self , result : AnalyzerResultType ):
6868 raise NotImplementedError
6969
70- def _create_summary (self , result : AnalyzerResultType , view_key : ViewKey ) -> OutputSummary :
71- flat_view = result .flat_views [view_key ]
70+ def _compute_raw_stats (self , result : AnalyzerResultType ) -> RawStats :
7271 raw_stats = dask .compute (result .raw_stats )[0 ]
7372 if isinstance (raw_stats , dict ):
7473 raw_stats = RawStats (** raw_stats )
74+ return raw_stats
75+
76+ def _create_summary (self , result : AnalyzerResultType , view_key : ViewKey , raw_stats : Optional [RawStats ] = None ) -> OutputSummary :
77+ flat_view = result .flat_views [view_key ]
78+ if raw_stats is None :
79+ raw_stats = self ._compute_raw_stats (result )
7580 summary = OutputSummary (
7681 job_time = float (raw_stats .job_time ),
7782 layer_metrics = {},
@@ -165,11 +170,12 @@ def __init__(
165170 self .show_header = show_header
166171
167172 def handle_result (self , result : AnalyzerResultType ):
173+ raw_stats = self ._compute_raw_stats (result )
168174 print_objects = []
169175 for view_key in result .flat_views :
170176 if view_key [- 1 ] not in result .view_types :
171177 continue
172- summary = self ._create_summary (result = result , view_key = view_key )
178+ summary = self ._create_summary (result = result , view_key = view_key , raw_stats = raw_stats )
173179 summary_table = self ._create_summary_table (summary = summary , view_key = view_key )
174180 layer_breakdown_table = self ._create_layer_breakdown_table (summary = summary , view_key = view_key )
175181 print_objects .append (summary_table )
@@ -341,15 +347,16 @@ def __init__(
341347 self .file_path = file_path
342348
343349 def handle_result (self , result : AnalyzerResultType ):
350+ raw_stats = self ._compute_raw_stats (result )
344351 output = {
345352 "schema_version" : "1" ,
346- "raw_stats" : self ._create_raw_stats (result = result ),
353+ "raw_stats" : self ._create_raw_stats (raw_stats = raw_stats ),
347354 "views" : {},
348355 }
349356 for view_key in result .flat_views :
350357 if view_key [- 1 ] not in result .view_types :
351358 continue
352- summary = self ._create_summary (result = result , view_key = view_key )
359+ summary = self ._create_summary (result = result , view_key = view_key , raw_stats = raw_stats )
353360 output ["views" ][view_name (view_key , separator = "/" )] = {
354361 "summary" : self ._create_summary_payload (summary = summary ),
355362 "additional_metrics" : self ._create_additional_metrics_payload (result = result , view_key = view_key ),
@@ -382,10 +389,7 @@ def _to_float_or_none(value):
382389 return None
383390 return float (value )
384391
385- def _create_raw_stats (self , result : AnalyzerResultType ):
386- raw_stats = dask .compute (result .raw_stats )[0 ]
387- if isinstance (raw_stats , dict ):
388- raw_stats = RawStats (** raw_stats )
392+ def _create_raw_stats (self , raw_stats : RawStats ):
389393 return {
390394 "job_time_s" : self ._to_float_or_none (raw_stats .job_time ),
391395 "time_granularity_s" : self ._to_float_or_none (raw_stats .time_granularity ),
0 commit comments