1 | from geniusweb.actions.ActionWithBid import ActionWithBid
|
---|
2 | from geniusweb.actions.PartyId import PartyId
|
---|
3 | from geniusweb.issuevalue.Bid import Bid
|
---|
4 |
|
---|
5 | class Vote ( ActionWithBid ):
|
---|
6 | '''
|
---|
7 | A vote is an indication by a party that it conditionally accepts a bid. It's
|
---|
8 | then up to the protocol to determine the outcome.
|
---|
9 | '''
|
---|
10 |
|
---|
11 | def __init__(self, actor:PartyId, bid:Bid ,minPower :int , maxPower:int):
|
---|
12 | '''
|
---|
13 | @param id the {@link PartyId} that does the action
|
---|
14 | @param bid the bid that is voted on
|
---|
15 | @param minPower the minimum power this bid must get in order for the vote
|
---|
16 | to be valid. Power is the sum of the powers of the
|
---|
17 | parties that are in the deal. If power=1 for all
|
---|
18 | participants (usually the default) power can be
|
---|
19 | interpreted as number of votes
|
---|
20 | @param maxPower the maximum power this bid must get in order for the vote
|
---|
21 | to be valid. See {@link #minPower}
|
---|
22 | '''
|
---|
23 | super().__init__(actor, bid)
|
---|
24 | self._minPower = minPower
|
---|
25 | self._maxPower = maxPower
|
---|
26 | if bid == None or minPower == None or minPower < 1 or maxPower == None or maxPower < minPower:
|
---|
27 | raise ValueError("Vote must have non-null bid and minVotes, and minPower must be >=1 and maxPower must be >=minPower")
|
---|
28 |
|
---|
29 | def getMinPower(self) -> int:
|
---|
30 | '''
|
---|
31 | @return the minimum power this bid must get in order for the vote to be
|
---|
32 | valid.
|
---|
33 | '''
|
---|
34 | return self._minPower
|
---|
35 |
|
---|
36 | def getMaxPower(self)->int:
|
---|
37 | '''
|
---|
38 | @return the max power this bid must get in order for the vote to be
|
---|
39 | valid.
|
---|
40 | '''
|
---|
41 | return self._maxPower;
|
---|
42 |
|
---|
43 | #Override
|
---|
44 | def __repr__(self) -> str:
|
---|
45 | return "Vote[" + repr(self.getActor()) + "," + repr(self.getBid()) + ","\
|
---|
46 | + repr(self._minPower) + "," + repr(self._maxPower) + "]"
|
---|
47 |
|
---|
48 | def __hash__(self):
|
---|
49 | return hash((self._actor, self._bid, self._minPower, self._maxPower))
|
---|
50 |
|
---|
51 | def __eq__(self, other):
|
---|
52 | return isinstance(other, self.__class__) and \
|
---|
53 | super().__eq__(other) and self._minPower==other._minPower \
|
---|
54 | and self._maxPower==other._maxPower
|
---|
55 |
|
---|
56 |
|
---|