def remove_callback(self, callback: Callable[([EventLogEntry], None)]):
    'Observer has stopped watching this run;\n            Remove a callback from the list of callbacks to execute on new EventLogEntrys\n\n            Also kill thread if no callbacks remaining (i.e. no Observers are watching this run_id)\n\n        Args:\n            callback (Callable[[EventLogEntry], None]): callback to remove from list of callbacks\n        '
    callback = check.callable_param(callback, 'callback')
    with self._callback_fn_list_lock:
        self._callback_fn_list = [callback_with_cursor for callback_with_cursor in self._callback_fn_list if (callback_with_cursor.callback != callback)]
        if (not self._callback_fn_list):
            self._should_thread_exit.set()
Observer has stopped watching this run;
    Remove a callback from the list of callbacks to execute on new EventLogEntrys

    Also kill thread if no callbacks remaining (i.e. no Observers are watching this run_id)

Args:
    callback (Callable[[EventLogEntry], None]): callback to remove from list of callbacks
def remove_callback(self, callback: Callable[([EventLogEntry], None)]):
    'Observer has stopped watching this run;\n            Remove a callback from the list of callbacks to execute on new EventLogEntrys\n\n            Also kill thread if no callbacks remaining (i.e. no Observers are watching this run_id)\n\n        Args:\n            callback (Callable[[EventLogEntry], None]): callback to remove from list of callbacks\n        '
    callback = check.callable_param(callback, 'callback')
    with self._callback_fn_list_lock:
        self._callback_fn_list = [callback_with_cursor for callback_with_cursor in self._callback_fn_list if (callback_with_cursor.callback != callback)]
        if (not self._callback_fn_list):
            self._should_thread_exit.set()