| 123456789101112131415161718192021222324252627282930313233 | from argparse import Namespacefrom collections import defaultdictfrom typing import Dict, Listimport numpyfrom labours.objects import DevDaydef show_languages(    args: Namespace,    name: str,    start_date: int,    end_date: int,    people: List[str],    days: Dict[int, Dict[int, DevDay]],) -> None:    devlangs = defaultdict(lambda: defaultdict(lambda: numpy.zeros(3, dtype=int)))    for day, devs in days.items():        for dev, stats in devs.items():            for lang, vals in stats.Languages.items():                devlangs[dev][lang] += vals    devlangs = sorted(        devlangs.items(), key=lambda p: -sum(x.sum() for x in p[1].values())    )    for dev, ls in devlangs:        print()        print("#", people[dev])        ls = sorted(((vals.sum(), lang) for lang, vals in ls.items()), reverse=True)        for vals, lang in ls:            if lang:                print("%s: %d" % (lang, vals))
 |