(self, event, sender=None, level='info', formatted='', data={})
| 45 | self._registered_events[name] = parameters |
| 46 | |
| 47 | def emit(self, event, sender=None, level='info', formatted='', data={}): |
| 48 | if not sender: |
| 49 | raise ArgumentError('Event needs a sender!') |
| 50 | |
| 51 | levels = ['info', 'warning', 'error', 'critical', 'debug'] |
| 52 | if not level in levels: |
| 53 | raise ArgumentError('Event level needs to be in: {}'.format(levels)) |
| 54 | |
| 55 | if event not in self._registered_events: |
| 56 | raise EventNotRegisteredException("Event %s not registered..." % event) |
| 57 | |
| 58 | if self._limit_output: |
| 59 | if (event == self._last_event) and (event in ["moving_to_fort", "moving_to_lured_fort", "position_update", "moving_to_hunter_target"]): |
| 60 | stdout.write("\033[1A\033[0K\r") |
| 61 | stdout.flush() |
| 62 | |
| 63 | if level == "info" and formatted: |
| 64 | self._last_event = event |
| 65 | |
| 66 | # verify params match event |
| 67 | parameters = self._registered_events[event] |
| 68 | if parameters: |
| 69 | for k, v in data.iteritems(): |
| 70 | if k not in parameters: |
| 71 | raise EventMalformedException("Event %s does not require parameter %s" % (event, k)) |
| 72 | |
| 73 | formatted_msg = formatted.format(**data) |
| 74 | |
| 75 | # send off to the handlers |
| 76 | for handler in self._handlers: |
| 77 | handler.handle_event(event, sender, level, formatted_msg, data) |
no test coverage detected