objects.py 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. from collections import defaultdict, namedtuple
  2. class DevDay(
  3. namedtuple("DevDay", ("Commits", "Added", "Removed", "Changed", "Languages"))
  4. ):
  5. def add(self, dd: 'DevDay') -> 'DevDay':
  6. langs = defaultdict(lambda: [0] * 3)
  7. for key, val in self.Languages.items():
  8. for i in range(3):
  9. langs[key][i] += val[i]
  10. for key, val in dd.Languages.items():
  11. for i in range(3):
  12. langs[key][i] += val[i]
  13. return DevDay(
  14. Commits=self.Commits + dd.Commits,
  15. Added=self.Added + dd.Added,
  16. Removed=self.Removed + dd.Removed,
  17. Changed=self.Changed + dd.Changed,
  18. Languages=dict(langs),
  19. )
  20. class ParallelDevData:
  21. def __init__(self):
  22. self.commits_rank = -1
  23. self.commits = -1
  24. self.lines_rank = -1
  25. self.lines = -1
  26. self.ownership_rank = -1
  27. self.ownership = -1
  28. self.couples_index = -1
  29. self.couples_cluster = -1
  30. self.commit_coocc_index = -1
  31. self.commit_coocc_cluster = -1
  32. def __str__(self):
  33. return str(self.__dict__)
  34. def __repr__(self):
  35. return str(self)