1 | from typing import List
|
---|
2 | from pyson.JsonTypeInfo import Id, As
|
---|
3 | from pyson.JsonTypeInfo import JsonTypeInfo
|
---|
4 |
|
---|
5 | from geniusweb.protocol.tournament.Team import Team
|
---|
6 | from geniusweb.references.Parameters import Parameters
|
---|
7 | from geniusweb.references.PartyWithProfile import PartyWithProfile
|
---|
8 |
|
---|
9 |
|
---|
10 | @JsonTypeInfo(use=Id.NAME, include=As.WRAPPER_OBJECT)
|
---|
11 | class TeamInfo :
|
---|
12 | '''
|
---|
13 | Contains a functional team, eg in SHAOP a team would be a SHAOP together with
|
---|
14 | his COB partner. In SAOP this is just a SAOP party.
|
---|
15 | '''
|
---|
16 |
|
---|
17 | def __init__(self, parties: List[PartyWithProfile]):
|
---|
18 | self._parties = parties
|
---|
19 |
|
---|
20 |
|
---|
21 | def getParties(self) ->List[PartyWithProfile] :
|
---|
22 | '''
|
---|
23 | @return the list of all parties involved, which is the parties in all
|
---|
24 | teams combined.
|
---|
25 | '''
|
---|
26 | return list(self._parties)
|
---|
27 |
|
---|
28 |
|
---|
29 | def getSize(self)-> int:
|
---|
30 | '''
|
---|
31 | @return the number of parties in the team.
|
---|
32 | '''
|
---|
33 | return len(self._parties)
|
---|
34 |
|
---|
35 | def __repr__(self)->str:
|
---|
36 | return "TeamInfo[" +str( self._parties) + "]"
|
---|
37 |
|
---|
38 | def __hash__(self):
|
---|
39 | return hash(tuple(self._parties))
|
---|
40 |
|
---|
41 | def __eq__(self, other):
|
---|
42 | return isinstance(other, self.__class__) and \
|
---|
43 | self._parties == other._parties
|
---|
44 |
|
---|
45 | def With(self, parameters:Parameters ) ->"TeamInfo" :
|
---|
46 | '''
|
---|
47 | @param parameters a set of {@link Parameters} to be merged with the
|
---|
48 | existing parameters of the first team member.
|
---|
49 | @return updated TeamInfo
|
---|
50 | '''
|
---|
51 | updatedparties = list(self._parties)
|
---|
52 | party1 = updatedparties[0]
|
---|
53 | newparams1 = party1.getParty().getParameters().WithParameters(parameters)
|
---|
54 | party1update = PartyWithProfile(
|
---|
55 | party1.getParty().With(newparams1), party1.getProfile())
|
---|
56 | updatedparties[0]= party1update
|
---|
57 | return TeamInfo(updatedparties)
|
---|
58 |
|
---|
59 |
|
---|
60 | def getTeam(self)->Team:
|
---|
61 | '''
|
---|
62 | @return the Team, without the profiles
|
---|
63 | '''
|
---|
64 | return Team ([party.getParty() for party in self._parties])
|
---|
65 |
|
---|