group_info.py 671 B

1234567891011121314151617181920
  1. from dataclasses import dataclass
  2. from typing import Tuple
  3. from hivemind.p2p import PeerID
  4. @dataclass(frozen=True)
  5. class GroupInfo:
  6. """A group of peers assembled through decentralized matchmaking"""
  7. group_id: bytes # random unique bytestring that describes the current group, generated by group leader
  8. peer_ids: Tuple[PeerID, ...] # an ordered sequence of peer_ids of each groupmate
  9. gathered: Tuple[bytes, ...] # binary metadata gathered from all peers by leader, same order as peer_ids
  10. @property
  11. def group_size(self):
  12. return len(self.peer_ids)
  13. def __contains__(self, peer_id: PeerID):
  14. return peer_id in self.peer_ids