1 | from typing import Set
|
---|
2 |
|
---|
3 |
|
---|
4 | class Capabilities:
|
---|
5 | '''
|
---|
6 | The capabilities of a party
|
---|
7 | '''
|
---|
8 |
|
---|
9 |
|
---|
10 | knownprofileclasses = [
|
---|
11 | "geniusweb.profile.utilityspace.UtilitySpace",
|
---|
12 | "geniusweb.profile.utilityspace.LinearAdditive",
|
---|
13 | "geniusweb.profile.utilityspace.LinearAdditiveUtilitySpace",
|
---|
14 | "geniusweb.profile.utilityspace.SumOfGroupsUtilitySpace",
|
---|
15 | "geniusweb.profile.DefaultPartialOrdering",
|
---|
16 | "geniusweb.profile.FullOrdering",
|
---|
17 | "geniusweb.profile.DefaultProfile",
|
---|
18 | "geniusweb.profile.Profile",
|
---|
19 | "geniusweb.profile.PartialOrdering",
|
---|
20 | ]
|
---|
21 |
|
---|
22 | def __init__(self, behaviours:Set[str], profiles:Set[str]):
|
---|
23 | '''
|
---|
24 | @param behaviours the {@link ProtocolRef} that a Party can handle, as
|
---|
25 | returned by NegoProtocol.getRef()
|
---|
26 | @param profiles the {@link Profile} classes that Party acan handle
|
---|
27 | '''
|
---|
28 | if (behaviours == None):
|
---|
29 | raise ValueError("behaviours==null")
|
---|
30 |
|
---|
31 | prof:str
|
---|
32 | for prof in profiles:
|
---|
33 | if prof not in self.knownprofileclasses:
|
---|
34 | raise ValueError("profile " + prof + " must be a subclass of Profile")
|
---|
35 | self.__behaviours = behaviours
|
---|
36 | self.__profiles = profiles
|
---|
37 |
|
---|
38 | def getBehaviours(self)-> Set[str]:
|
---|
39 | '''
|
---|
40 | @return the behaviours (protocols) that are supported
|
---|
41 | '''
|
---|
42 | return self.__behaviours
|
---|
43 |
|
---|
44 | def getProfiles(self)-> Set[str]:
|
---|
45 | '''
|
---|
46 | @return the profile classes that are supported
|
---|
47 | '''
|
---|
48 | return self.__profiles
|
---|
49 |
|
---|
50 | def __repr__(self)-> str:
|
---|
51 | return "Capabilities[" + str(self.__profiles)+"," + str(self.__behaviours) + "]"
|
---|
52 |
|
---|
53 | def __hash__(self):
|
---|
54 | return hash((tuple(self.__profiles), tuple(self.__behaviours)))
|
---|
55 |
|
---|
56 | def __eq__(self, other):
|
---|
57 | return isinstance(other, self.__class__) \
|
---|
58 | and self.__profiles == other.__profiles \
|
---|
59 | and self.__behaviours==other.__behaviours
|
---|