Changeset 3001
- Timestamp:
- Jul 20, 2015, 10:19:39 PM (10 years ago)
- File:
-
- 1 edited
-
scripts/xml-stats/stats.py (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
scripts/xml-stats/stats.py
r3000 r3001 9 9 import sys 10 10 11 titles = {'count': 'Номе', 12 'name': 'Име', 13 'branch': 'Клон', 14 'work':'Работ', 15 'untranslated': 'Непре', 16 'fuzzy': 'Мъгля', 17 'translated': 'Превед', 18 'total': 'Всичко'} 11 19 12 20 def get_versions(): … … 38 46 name = stat_id 39 47 elif dom_id.startswith('po-'): 40 name = stat_id + ' • ' + dom_id[3:]48 name = '{}-{}'.format(stat_id, dom_id[3:]) 41 49 else: 42 name = stat_id + ' • ' + dom_id50 name = '{}-{}'.format(stat_id ,dom_id) 43 51 translated = int(dom.findtext('./translated')) 44 52 fuzzy = int(dom.findtext('./fuzzy')) 45 53 untranslated = int(dom.findtext('./untranslated')) 46 54 work = fuzzy + untranslated 55 total = work + translated 47 56 s = {'name': name, 48 57 'branch': stat_branch, … … 50 59 'fuzzy': fuzzy, 51 60 'untranslated': untranslated, 52 'work': work} 61 'work': work, 62 'total': total} 53 63 results.append(s) 54 64 return results 55 65 56 def max_lengths(stats): 57 result = {'name': 0, 58 'branch': 0, 59 'translated': 0, 60 'fuzzy': 0, 61 'untranslated': 0, 62 'work': 0} 66 def stats_max_lengths_sums(stats): 67 string_keys = [ 'name', 'branch'] 68 number_keys = ['translated', 'fuzzy', 'untranslated', 'work', 'total'] 69 string_lengths = {k: 0 for k in string_keys} 70 number_sums = {k: 0 for k in number_keys} 63 71 for s in stats: 64 print(s)65 result = {k:max(result[k], len(str(s[k]))) for k,v in result.items()}72 string_lengths = {k: max(string_lengths[k], len(s[k])) for k in ['name', 'branch']} 73 number_sums = {k: number_sums[k] + s[k] for k in number_keys} 66 74 67 result['count']=int(str(len(stats))) 75 lengths = {k: len(str(number_sums[k])) for k in number_keys} 76 lengths.update(string_lengths) 77 lengths['count']=len(str(len(stats))) 78 return lengths, number_sums 79 80 def display_max_lengths(lengths): 81 result = {k:max(len(titles[k]), lengths[k]) for k,v in titles.items()} 82 return result 83 84 def divider(lengths): 85 86 result = ('-' * (1 + lengths['count']) + '+' + 87 '-' * (1 + lengths['name']) + '+' + 88 '-' * (1 + lengths['branch']) + '+' + 89 '-' * (1 + lengths['work']) + '+' + 90 '-' * (1 + lengths['untranslated']) + '+' + 91 '-' * (1 + lengths['fuzzy']) + '+' + 92 '-' * (1 + lengths['translated']) + '+' + 93 '-' * (1 + lengths['total'])) 94 95 return result 96 97 def ljust(length, sth): 98 s = str(sth) 99 result = (s + ' ' * length)[:length+1] 100 #print('ljust', length, sth, '>'+result+'<') 101 return result 102 103 def rjust(length, sth): 104 s = str(sth) 105 result = (' ' * length + s)[-length:] 106 #print('rjust', length, sth, '>'+result+'<') 107 return result 108 109 def line(lengths, stat): 110 result = (rjust(lengths['count'], stat['count']) + '|' + 111 ljust(lengths['name'], stat['name']) + '|' + 112 ljust(lengths['branch'], stat['branch']) + '|' + 113 rjust(lengths['work'], stat['work']) + '|' + 114 rjust(lengths['untranslated'], stat['untranslated']) + '|' + 115 rjust(lengths['fuzzy'], stat['fuzzy']) + '|' + 116 rjust(lengths['translated'], stat['translated']) + '|' + 117 rjust(lengths['total'], stat['total'])) 118 return result 68 119 69 120 def main(): … … 74 125 # print('Will use {}'.format(versions[0])) 75 126 stats = get_stats('gnome-3-18') 127 # sorts are stable 128 stats.sort(key=lambda s: s['name']) 129 stats.sort(key=lambda s: s['fuzzy'], reverse=True) 130 stats.sort(key=lambda s: s['untranslated'], reverse=True) 131 stats.sort(key=lambda s: s['work'], reverse=True) 76 132 print(stats) 77 print(max_lengths(stats)) 78 133 lengths, sums = stats_max_lengths_sums(stats) 134 print(lengths) 135 print(divider(lengths)) 136 lengths = display_max_lengths(lengths) 137 print(lengths) 138 print(divider(lengths)) 139 i = 1 140 for s in stats: 141 s['count'] = i 142 i+=1 143 print(line(lengths, s)) 144 print(sums) 79 145 80 146 if __name__ == '__main__':
Note:
See TracChangeset
for help on using the changeset viewer.
![(please configure the [header_logo] section in trac.ini)](/project/gtp/chrome/site/your_project_logo.png)