class_docstr: A repository mapping names -> publishers
  
  As a usability optimization, using this Repository will eagerly load and register all
  publishers in the application.
class_docstr_tok: ["A","repository","mapping","names","-",">","publishers","As","a","usability","optimization",",","using","this","Repository","will","eagerly","load","and","register","all","publishers","in","the","application","."]
docstr: Returns the publisher with the given name
  
  Args:
      name (str): The name of the publisher.
  
  Returns:
      AlertPublisher|None
docstr_tok: ["Returns","the","publisher","with","the","given","name","Args",":","name","(","str",")",":","The","name","of","the","publisher",".","Returns",":","AlertPublisher|None"]
code: def get_publisher(cls, name):
      """Returns the publisher with the given name
  
      Args:
          name (str): The name of the publisher.
  
      Returns:
          AlertPublisher|None
      """
      if cls.has_publisher(name):
          return cls._publishers[name]
  
      LOGGER.error("Publisher [%s] does not exist", name)
  
imports: from abc import abstractmethod
  from copy import deepcopy
  from inspect import isclass
  from streamalert.shared.config import load_config
  from streamalert.shared.importer import import_folders
  from streamalert.shared.logger import get_logger
label_desc: Use image node_id 5 for calling the AlertPublisherRepository obj's underlying member method code with example usage: obj.get_publisher(cls, name) and returns: cls