languages.py 942 B

123456789101112131415161718192021222324252627282930313233
  1. from argparse import Namespace
  2. from collections import defaultdict
  3. from typing import Dict, List
  4. import numpy
  5. from labours.objects import DevDay
  6. def show_languages(
  7. args: Namespace,
  8. name: str,
  9. start_date: int,
  10. end_date: int,
  11. people: List[str],
  12. days: Dict[int, Dict[int, DevDay]],
  13. ) -> None:
  14. devlangs = defaultdict(lambda: defaultdict(lambda: numpy.zeros(3, dtype=int)))
  15. for day, devs in days.items():
  16. for dev, stats in devs.items():
  17. for lang, vals in stats.Languages.items():
  18. devlangs[dev][lang] += vals
  19. devlangs = sorted(
  20. devlangs.items(), key=lambda p: -sum(x.sum() for x in p[1].values())
  21. )
  22. for dev, ls in devlangs:
  23. print()
  24. print("#", people[dev])
  25. ls = sorted(((vals.sum(), lang) for lang, vals in ls.items()), reverse=True)
  26. for vals, lang in ls:
  27. if lang:
  28. print("%s: %d" % (lang, vals))