| Total Complexity | 12 |
| Total Lines | 42 |
| Duplicated Lines | 0 % |
| Coverage | 0% |
| Changes | 0 | ||
| 1 | import logging |
||
| 6 | class MethodManager(object): |
||
| 7 | def __init__(self, methods, single=True): |
||
| 8 | self.methods = [ |
||
| 9 | (m.name, m) for m in methods |
||
| 10 | ] |
||
| 11 | self.single = single |
||
| 12 | |||
| 13 | def filter(self, enabled): |
||
| 14 | for name, method in self.methods: |
||
| 15 | if enabled is not None and name not in enabled: |
||
| 16 | log.debug('Method %r has been disabled', name) |
||
| 17 | continue |
||
| 18 | |||
| 19 | if not hasattr(method, 'test'): |
||
| 20 | log.warn('Method %r is missing a test() method') |
||
| 21 | continue |
||
| 22 | |||
| 23 | if not method.test(): |
||
| 24 | log.info("Method %r is not available" % name) |
||
|
|
|||
| 25 | continue |
||
| 26 | |||
| 27 | yield method |
||
| 28 | |||
| 29 | def start(self, enabled=None): |
||
| 30 | started = [] |
||
| 31 | |||
| 32 | for method in self.filter(enabled): |
||
| 33 | obj = method() |
||
| 34 | |||
| 35 | # Store reference |
||
| 36 | started.append(obj) |
||
| 37 | |||
| 38 | if self.single: |
||
| 39 | break |
||
| 40 | |||
| 41 | log.info( |
||
| 42 | 'Started %s method(s): %s', |
||
| 43 | len(started), |
||
| 44 | ', '.join([m.__class__.__name__ for m in started]) |
||
| 45 | ) |
||
| 46 | |||
| 47 | return started |
||
| 48 |