Changeset 3001 for scripts/xml-stats


Ignore:
Timestamp:
Jul 20, 2015, 10:19:39 PM (10 years ago)
Author:
Александър Шопов
Message:

статистика и подредба, липсва антетка и крайни стойности

File:
1 edited

Legend:

Unmodified
Added
Removed
  • scripts/xml-stats/stats.py

    r3000 r3001  
    99import sys
    1010
     11titles = {'count': 'Номе',
     12          'name': 'Име',
     13          'branch': 'Клон',
     14          'work':'Работ',
     15          'untranslated': 'Непре',
     16          'fuzzy': 'Мъгля',
     17          'translated': 'Превед',
     18          'total': 'Всичко'}
    1119
    1220def get_versions():
     
    3846                name = stat_id
    3947            elif dom_id.startswith('po-'):
    40                 name = stat_id + ' • ' + dom_id[3:]
     48                name = '{}-{}'.format(stat_id, dom_id[3:])
    4149            else:
    42                 name = stat_id + ' • ' + dom_id
     50                name = '{}-{}'.format(stat_id ,dom_id)
    4351            translated = int(dom.findtext('./translated'))
    4452            fuzzy = int(dom.findtext('./fuzzy'))
    4553            untranslated  = int(dom.findtext('./untranslated'))
    4654            work = fuzzy + untranslated
     55            total = work + translated
    4756            s = {'name': name,
    4857                 'branch': stat_branch,
     
    5059                 'fuzzy': fuzzy,
    5160                 'untranslated': untranslated,
    52                  'work': work}
     61                 'work': work,
     62                 'total': total}
    5363            results.append(s)
    5464    return results
    5565
    56 def max_lengths(stats):
    57     result = {'name': 0,
    58               'branch': 0,
    59               'translated': 0,
    60               'fuzzy': 0,
    61               'untranslated': 0,
    62               'work': 0}
     66def 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}
    6371    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}
    6674
    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
     80def display_max_lengths(lengths):
     81    result = {k:max(len(titles[k]), lengths[k]) for k,v in titles.items()}
     82    return result
     83
     84def 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
     97def ljust(length, sth):
     98    s = str(sth)
     99    result = (s + ' ' * length)[:length+1]
     100    #print('ljust', length, sth, '>'+result+'<')
     101    return result
     102
     103def rjust(length, sth):
     104    s = str(sth)
     105    result = (' ' * length + s)[-length:]
     106    #print('rjust', length, sth, '>'+result+'<')
     107    return result
     108
     109def 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
    68119
    69120def main():
     
    74125    #    print('Will use {}'.format(versions[0]))
    75126    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)
    76132    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)
    79145             
    80146if __name__ == '__main__':
Note: See TracChangeset for help on using the changeset viewer.