1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 from collections import defaultdict
20
21
23
24 - def __init__(self, methods_kvp, default_method=None):
25 self._default_method = default_method
26 if self._all_keys_are_booleans(methods_kvp):
27 if self._first_truthy_method(methods_kvp):
28 self._container = defaultdict(self._default, [(True, self._first_truthy_method(methods_kvp))])
29 else:
30 self._container = defaultdict(self._default, [])
31 else:
32 self._container = defaultdict(self._default, methods_kvp)
33
35 return self._container[key]
36
38 return len([m for k, m in methods_kvp if not isinstance(k, bool)]) == 0
39
41 for key, method in methods_kvp:
42 if key:
43 return method
44
46 if self._default_method is None:
47 return self._noop
48 else:
49 return self._default_method
50
51 - def _noop(self, *args, **kwargs):
53