async def process_event_callbacks(self, namespace, data):
    'Processes a pure event callback.\n\n        Locate any callbacks that may be registered for this event, check for filters and if appropriate,\n        dispatch the event for further checking and eventual action.\n\n        Args:\n            namespace (str): Namespace of the event.\n            data: Data associated with the event.\n\n        Returns:\n            None.\n\n        '
    self.logger.debug('process_event_callbacks() %s %s', namespace, data)
    removes = []
    async with self.AD.callbacks.callbacks_lock:
        for name in self.AD.callbacks.callbacks.keys():
            for uuid_ in self.AD.callbacks.callbacks[name]:
                callback = self.AD.callbacks.callbacks[name][uuid_]
                if ((callback['namespace'] == namespace) or (callback['namespace'] == 'global') or (namespace == 'global')):
                    if (('event' in callback) and (((callback['event'] is None) and (data['event_type'][:2] != '__')) or (data['event_type'] == callback['event']))):
                        _run = True
                        for key in callback['kwargs']:
                            if ((key in data['data']) and (callback['kwargs'][key] != data['data'][key])):
                                _run = False
                        if (data['event_type'] == '__AD_LOG_EVENT'):
                            if (('log' in callback['kwargs']) and (callback['kwargs']['log'] != data['data']['log_type'])):
                                _run = False
                        if _run:
                            if (name in self.AD.app_management.objects):
                                executed = (await self.AD.threading.dispatch_worker(name, {'id': uuid_, 'name': name, 'objectid': self.AD.app_management.objects[name]['id'], 'type': 'event', 'event': data['event_type'], 'function': callback['function'], 'data': data['data'], 'pin_app': callback['pin_app'], 'pin_thread': callback['pin_thread'], 'kwargs': callback['kwargs']}))
                                if (executed is True):
                                    remove = callback['kwargs'].get('oneshot', False)
                                    if (remove is True):
                                        removes.append({'name': name, 'uuid': uuid_})
    for remove in removes:
        (await self.cancel_event_callback(remove['name'], remove['uuid']))
Processes a pure event callback.

Locate any callbacks that may be registered for this event, check for filters and if appropriate,
dispatch the event for further checking and eventual action.

Args:
    namespace (str): Namespace of the event.
    data: Data associated with the event.

Returns:
    None.
async def process_event_callbacks(self, namespace, data):
    'Processes a pure event callback.\n\n        Locate any callbacks that may be registered for this event, check for filters and if appropriate,\n        dispatch the event for further checking and eventual action.\n\n        Args:\n            namespace (str): Namespace of the event.\n            data: Data associated with the event.\n\n        Returns:\n            None.\n\n        '
    self.logger.debug('process_event_callbacks() %s %s', namespace, data)
    removes = []
    async with self.AD.callbacks.callbacks_lock:
        for name in self.AD.callbacks.callbacks.keys():
            for uuid_ in self.AD.callbacks.callbacks[name]:
                callback = self.AD.callbacks.callbacks[name][uuid_]
                if ((callback['namespace'] == namespace) or (callback['namespace'] == 'global') or (namespace == 'global')):
                    if (('event' in callback) and (((callback['event'] is None) and (data['event_type'][:2] != '__')) or (data['event_type'] == callback['event']))):
                        _run = True
                        for key in callback['kwargs']:
                            if ((key in data['data']) and (callback['kwargs'][key] != data['data'][key])):
                                _run = False
                        if (data['event_type'] == '__AD_LOG_EVENT'):
                            if (('log' in callback['kwargs']) and (callback['kwargs']['log'] != data['data']['log_type'])):
                                _run = False
                        if _run:
                            if (name in self.AD.app_management.objects):
                                executed = (await self.AD.threading.dispatch_worker(name, {'id': uuid_, 'name': name, 'objectid': self.AD.app_management.objects[name]['id'], 'type': 'event', 'event': data['event_type'], 'function': callback['function'], 'data': data['data'], 'pin_app': callback['pin_app'], 'pin_thread': callback['pin_thread'], 'kwargs': callback['kwargs']}))
                                if (executed is True):
                                    remove = callback['kwargs'].get('oneshot', False)
                                    if (remove is True):
                                        removes.append({'name': name, 'uuid': uuid_})
    for remove in removes:
        (await self.cancel_event_callback(remove['name'], remove['uuid']))