66
77from result import Result , ResultReader
88
9- ENHANCED_REPORT = os .environ .get ('ENHANCED_REPORT' , False )
9+ ENHANCED_REPORT = os .environ .get ('ENHANCED_REPORT' , True )
1010
1111
1212@dataclass
@@ -64,6 +64,9 @@ def mean_percent_of_original(self) -> float:
6464 def larger_than_original (self ) -> Iterable [Result ]:
6565 """Return those entries that have a larger minified size than the original size"""
6666 for result in self .entries .values ():
67+ if result .outcome != 'Minified' :
68+ continue
69+
6770 if result .original_size < result .minified_size :
6871 yield result
6972
@@ -91,10 +94,18 @@ def compare_size_increase(self, base: 'ResultSet') -> Iterable[Result]:
9194 """
9295
9396 for result in self .entries .values ():
97+ if result .outcome != 'Minified' :
98+ # This result was not minified, so we can't compare
99+ continue
100+
94101 if result .corpus_entry not in base .entries :
95102 continue
96103
97104 base_result = base .entries [result .corpus_entry ]
105+ if base_result .outcome != 'Minified' :
106+ # The base result was not minified, so we can't compare
107+ continue
108+
98109 if result .minified_size > base_result .minified_size :
99110 yield result
100111
@@ -104,10 +115,17 @@ def compare_size_decrease(self, base: 'ResultSet') -> Iterable[Result]:
104115 """
105116
106117 for result in self .entries .values ():
118+ if result .outcome != 'Minified' :
119+ continue
120+
107121 if result .corpus_entry not in base .entries :
108122 continue
109123
110124 base_result = base .entries [result .corpus_entry ]
125+ if base_result .outcome != 'Minified' :
126+ # The base result was not minified, so we can't compare
127+ continue
128+
111129 if result .minified_size < base_result .minified_size :
112130 yield result
113131
@@ -164,6 +182,103 @@ def format_difference(compare: Iterable[Result], base: Iterable[Result]) -> str:
164182 else :
165183 return s
166184
185+ def report_larger_than_original (results_dir : str , python_versions : str , minifier_sha : str ) -> str :
186+ yield '''
187+ ## Larger than original
188+
189+ | Corpus Entry | Original Size | Minified Size |
190+ |--------------|--------------:|--------------:|'''
191+
192+ for python_version in python_versions :
193+ try :
194+ summary = result_summary (results_dir , python_version , minifier_sha )
195+ except FileNotFoundError :
196+ continue
197+
198+ larger_than_original = sorted (summary .larger_than_original (), key = lambda result : result .original_size )
199+
200+ for entry in larger_than_original :
201+ yield f'| { entry .corpus_entry } | { entry .original_size } | { entry .minified_size } ({ entry .minified_size - entry .original_size :+} ) |'
202+
203+ def report_unstable (results_dir : str , python_versions : str , minifier_sha : str ) -> str :
204+ yield '''
205+ ## Unstable
206+
207+ | Corpus Entry | Python Version | Original Size |
208+ |--------------|----------------|--------------:|'''
209+
210+ for python_version in python_versions :
211+ try :
212+ summary = result_summary (results_dir , python_version , minifier_sha )
213+ except FileNotFoundError :
214+ continue
215+
216+ unstable = sorted (summary .unstable_minification (), key = lambda result : result .original_size )
217+
218+ for entry in unstable :
219+ yield f'| { entry .corpus_entry } | { python_version } | { entry .original_size } |'
220+
221+ def report_exceptions (results_dir : str , python_versions : str , minifier_sha : str ) -> str :
222+ yield '''
223+ ## Exceptions
224+
225+ | Corpus Entry | Python Version | Exception |
226+ |--------------|----------------|-----------|'''
227+
228+ exceptions_found = False
229+
230+ for python_version in python_versions :
231+ try :
232+ summary = result_summary (results_dir , python_version , minifier_sha )
233+ except FileNotFoundError :
234+ continue
235+
236+ exceptions = sorted (summary .exception (), key = lambda result : result .original_size )
237+
238+ for entry in exceptions :
239+ exceptions_found = True
240+ yield f'| { entry .corpus_entry } | { python_version } | { entry .outcome } |'
241+
242+ if not exceptions_found :
243+ yield ' None | | |'
244+
245+ def report_larger_than_base (results_dir : str , python_versions : str , minifier_sha : str , base_sha : str ) -> str :
246+ yield '''
247+ ## Top 10 Larger than base
248+
249+ | Corpus Entry | Original Size | Minified Size |
250+ |--------------|--------------:|--------------:|'''
251+
252+ there_are_some_larger_than_base = False
253+
254+ for python_version in python_versions :
255+ try :
256+ summary = result_summary (results_dir , python_version , minifier_sha )
257+ except FileNotFoundError :
258+ continue
259+
260+ base_summary = result_summary (results_dir , python_version , base_sha )
261+ larger_than_original = sorted (summary .compare_size_increase (base_summary ), key = lambda result : result .original_size )[:10 ]
262+
263+ for entry in larger_than_original :
264+ there_are_some_larger_than_base = True
265+ yield f'| { entry .corpus_entry } | { entry .original_size } | { entry .minified_size } ({ entry .minified_size - base_summary .entries [entry .corpus_entry ].minified_size :+} ) |'
266+
267+ if not there_are_some_larger_than_base :
268+ yield '| N/A | N/A | N/A |'
269+
270+ def report_slowest (results_dir : str , python_versions : str , minifier_sha : str ) -> str :
271+ yield '''
272+ ## Top 10 Slowest
273+
274+ | Corpus Entry | Original Size | Minified Size | Time |
275+ |--------------|--------------:|--------------:|-----:|'''
276+
277+ for python_version in python_versions :
278+ summary = result_summary (results_dir , python_version , minifier_sha )
279+
280+ for entry in sorted (summary .entries .values (), key = lambda entry : entry .time , reverse = True )[:10 ]:
281+ yield f'| { entry .corpus_entry } | { entry .original_size } | { entry .minified_size } | { entry .time :.3f} |'
167282
168283def report (results_dir : str , minifier_ref : str , minifier_sha : str , base_ref : str , base_sha : str ) -> Iterable [str ]:
169284 """
@@ -236,50 +351,11 @@ def format_size_change_detail() -> str:
236351 )
237352
238353 if ENHANCED_REPORT :
239- yield '''
240- ## Larger than original
241-
242- | Corpus Entry | Original Size | Minified Size |
243- |--------------|--------------:|--------------:|'''
244-
245- for python_version in ['3.11' ]:
246- summary = result_summary (results_dir , python_version , minifier_sha )
247- larger_than_original = sorted (summary .larger_than_original (), key = lambda result : result .original_size )
248-
249- for entry in larger_than_original :
250- yield f'| { entry .corpus_entry } | { entry .original_size } | { entry .minified_size } ({ entry .minified_size - entry .original_size :+} ) |'
251-
252- yield '''
253- ## Top 10 Larger than base
254-
255- | Corpus Entry | Original Size | Minified Size |
256- |--------------|--------------:|--------------:|'''
257-
258- there_are_some_larger_than_base = False
259-
260- for python_version in ['3.11' ]:
261- summary = result_summary (results_dir , python_version , minifier_sha )
262- base_summary = result_summary (results_dir , python_version , base_sha )
263- larger_than_original = sorted (summary .compare_size_increase (base_summary ), key = lambda result : result .original_size )[:10 ]
264-
265- for entry in larger_than_original :
266- there_are_some_larger_than_base = True
267- yield f'| { entry .corpus_entry } | { entry .original_size } | { entry .minified_size } ({ entry .minified_size - base_summary .entries [entry .corpus_entry ].minified_size :+} ) |'
268-
269- if not there_are_some_larger_than_base :
270- yield '| N/A | N/A | N/A |'
271-
272- yield '''
273- ## Top 10 Slowest
274-
275- | Corpus Entry | Original Size | Minified Size | Time |
276- |--------------|--------------:|--------------:|-----:|'''
277-
278- for python_version in ['3.11' ]:
279- summary = result_summary (results_dir , python_version , minifier_sha )
280-
281- for entry in sorted (summary .entries .values (), key = lambda entry : entry .time , reverse = True )[:10 ]:
282- yield f'| { entry .corpus_entry } | { entry .original_size } | { entry .minified_size } | { entry .time :.3f} |'
354+ yield from report_larger_than_original (results_dir , ['3.11' ], minifier_sha )
355+ yield from report_larger_than_base (results_dir , ['3.11' ], minifier_sha , base_sha )
356+ yield from report_slowest (results_dir , ['3.11' ], minifier_sha )
357+ yield from report_unstable (results_dir , ['2.7' , '3.3' , '3.4' , '3.5' , '3.6' , '3.7' , '3.8' , '3.9' , '3.10' , '3.11' ], minifier_sha )
358+ yield from report_exceptions (results_dir , ['3.6' , '3.7' , '3.8' , '3.9' , '3.10' , '3.11' ], minifier_sha )
283359
284360
285361def main ():
0 commit comments