objects.py 1.2 KB

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