docstr: Runs publishers for all currently configured outputs on the given alert
  
  Args:
      alert (Alert): The alert
  
  Returns:
      dict: A dict keyed by output:descriptor strings, mapped to nested dicts.
          self._rules_engine._lookup_tables  The nested dicts have 2 keys:
            - publication (dict): The dict publication
            - success (bool): True if the publishing finished, False if it errored.
docstr_tok: ["Runs","publishers","for","all","currently","configured","outputs","on","the","given","alert","Args",":","alert","(","Alert",")",":","The","alert","Returns",":","dict",":","A","dict","keyed","by","output",":","descriptor","strings",",","mapped","to","nested","dicts",".","self._rules_engine._lookup_tables","The","nested","dicts","have","2","keys",":","-","publication","(","dict",")",":","The","dict","publication","-","success","(","bool",")",":","True","if","the","publishing","finished",",","False","if","it","errored","."]
code: def _run_publishers(alert):
      """Runs publishers for all currently configured outputs on the given alert
  
      Args:
          alert (Alert): The alert
  
      Returns:
          dict: A dict keyed by output:descriptor strings, mapped to nested dicts.
              self._rules_engine._lookup_tables  The nested dicts have 2 keys:
                - publication (dict): The dict publication
                - success (bool): True if the publishing finished, False if it errored.
      """
      configured_outputs = alert.outputs
  
      results = {}
      for configured_output in configured_outputs:
          [output_name, descriptor] = configured_output.split(":")
  
          try:
              output = MagicMock(
                  spec=OutputDispatcher, __service__=output_name
              )
              results[configured_output] = {
                  "publication": compose_alert(
                      alert, output, descriptor
                  ),
                  "success": True,
              }
          except (RuntimeError, TypeError, NameError) as err:
              results[configured_output] = {
                  "success": False,
                  "error": err,
              }
      return results
  
imports: import argparse
  import os
  import jmespath
  from mock import patch, MagicMock
  from streamalert.alert_processor import main
  from streamalert.alert_processor.helpers import compose_alert
  from streamalert.alert_processor.outputs.output_base import OutputDispatcher
  from streamalert.classifier import classifier
  from streamalert.rules_engine import rules_engine
  from streamalert.shared import rule
  from streamalert.shared.config import ConfigError
  from streamalert.shared.logger import get_logger
  from streamalert.shared.stats import RuleStatisticTracker
  from streamalert_cli.helpers import check_credentials
  from streamalert_cli.test.format import format_green, format_red, format_underline, format_yellow
  from streamalert_cli.test.mocks import LookupTableMocks, ThreatIntelMocks
  from streamalert_cli.test.event_file import TestEventFile
  from streamalert_cli.utils import CLICommand, DirectoryType, generate_subparser, UniqueSortedFileListAction, UniqueSortedListAction
label_desc: Use image node_id 2 for calling the PublisherTestRunner obj's underlying member method code with example usage: obj._run_publishers(alert) and returns: results