@@ -88,6 +88,32 @@ def str_len(x):
8888 return len (str (x ))
8989
9090
91+ # issue 32790: Keep trailing zeros in precision for string format option g - Python tracker
92+ # https://bugs.python.org/issue32790
93+ def percent_str (num ):
94+ """
95+ Input => Output
96+ 1.4545 / 10 **-1 => 1455%
97+ 1.4545 / 10 ** 0 => 145%
98+ 1.4545 / 10 ** 1 => 14.5%
99+ 1.4545 / 10 ** 2 => 1.45%
100+ 1.4545 / 10 ** 3 => 0.145%
101+ 1.4545 / 10 ** 4 => 0.015%
102+ 1.4545 / 10 ** 5 => 0.001%
103+ 1.4545 / 10 ** 6 => 0.000%
104+ 1.4545 / 10 ** 7 => 0.000%
105+ """
106+ num = num * 100
107+ if num >= 100 :
108+ return '%.0f%%' % num
109+ elif num >= 10 :
110+ return '%.1f%%' % num
111+ elif num >= 1 :
112+ return '%.2f%%' % num
113+ else :
114+ return '%.3f%%' % num
115+
116+
91117def list_jar_file_under_lib_dirs (lib_dirs , recursive ):
92118 jar_files = set ()
93119
@@ -251,8 +277,8 @@ def print_duplicate_classes_info(class_paths_to_duplicate_classes, class_path_to
251277 max_idx_str_len = str_len (len (class_paths_to_duplicate_classes ))
252278 for idx , (class_paths , classes ) in enumerate (class_paths_to_duplicate_classes , start = 1 ):
253279 duplicate_ratio = len (classes ) / min ((len (class_path_to_classes [cp ]) for cp in class_paths ))
254- print ('[%*s] found %s(%.3g%% ) duplicate classes in %s class paths:' % (
255- max_idx_str_len , idx , len (classes ), duplicate_ratio * 100 , len (class_paths )))
280+ print ('[%*s] found %s(%s ) duplicate classes in %s class paths:' % (
281+ max_idx_str_len , idx , len (classes ), percent_str ( duplicate_ratio ) , len (class_paths )))
256282
257283 max_class_path_idx_str_len = str_len (len (class_paths ))
258284 max_classes_count_str_len = str_len (max (len (class_path_to_classes [cp ]) for cp in class_paths ))
0 commit comments