Total Complexity | 8 |
Total Lines | 46 |
Duplicated Lines | 0 % |
Changes | 0 |
1 | import logging |
||
2 | |||
3 | import yorm |
||
|
|||
4 | from yorm.types import AttributeDictionary, List, String |
||
5 | |||
6 | from .. import exceptions |
||
7 | |||
8 | |||
9 | log = logging.getLogger(__name__) |
||
10 | |||
11 | |||
12 | @yorm.attr(name=String) |
||
13 | @yorm.attr(members=List.of_type(String)) |
||
14 | class Group(AttributeDictionary): |
||
15 | """A group with sources.""" |
||
16 | |||
17 | DIRTY = '<dirty>' |
||
18 | UNKNOWN = '<unknown>' |
||
19 | |||
20 | def __init__(self, name, members): |
||
21 | |||
22 | super().__init__() |
||
23 | self.name = name |
||
24 | self.members = members or [] |
||
25 | |||
26 | for key in ['name', 'members']: |
||
27 | if not self[key]: |
||
28 | msg = "'{}' required for {}".format(key, repr(self)) |
||
29 | raise exceptions.InvalidConfig(msg) |
||
30 | |||
31 | def __repr__(self): |
||
32 | return "<group {}>".format(self) |
||
33 | |||
34 | def __str__(self): |
||
35 | pattern = "['{n}']" |
||
36 | return pattern.format(n=self.name) |
||
37 | |||
38 | def __eq__(self, other): |
||
39 | return self.name == other.name |
||
40 | |||
41 | def __ne__(self, other): |
||
42 | return self.name != other.name |
||
43 | |||
44 | def __lt__(self, other): |
||
45 | return self.name < other.name |
||
46 |