class_docstr: Rule engine to processes rules
class_docstr_tok: ["Rule","engine","to","processes","rules"]
docstr: Standardizes a requested publisher into a string name
  
  Requested publishers can be either the fully qualified string name, OR it can be a
  direct reference to the function or class.
docstr_tok: ["Standardizes","a","requested","publisher","into","a","string","name","Requested","publishers","can","be","either","the","fully","qualified","string","name",",","OR","it","can","be","a","direct","reference","to","the","function","or","class","."]
code: def standardize_publisher_name(cls, string_or_reference):
      """Standardizes a requested publisher into a string name
  
      Requested publishers can be either the fully qualified string name, OR it can be a
      direct reference to the function or class.
      """
      if not cls.is_publisher_declaration(string_or_reference):
          LOGGER.error(
              "Invalid publisher requested: %s", string_or_reference
          )
          return None
  
      if isinstance(string_or_reference, str):
          publisher_name = string_or_reference
      else:
          publisher_name = AlertPublisherRepository.get_publisher_name(
              string_or_reference
          )
  
      if AlertPublisherRepository.has_publisher(publisher_name):
          return publisher_name
  
      LOGGER.warning(
          "Requested publisher named (%s) is not registered.",
          publisher_name,
      )
  
imports: from datetime import datetime, timedelta
  from os import environ
  from streamalert.shared.publisher import AlertPublisherRepository
  from streamalert.rules_engine.alert_forwarder import AlertForwarder
  from streamalert.rules_engine.threat_intel import ThreatIntel
  from streamalert.shared import resources, RULES_ENGINE_FUNCTION_NAME
  from streamalert.shared.alert import Alert
  from streamalert.shared.config import load_config
  from streamalert.shared.importer import import_folders
  from streamalert.shared.logger import get_logger
  from streamalert.shared.lookup_tables.core import LookupTables
  from streamalert.shared.metrics import MetricLogger
  from streamalert.shared.rule import Rule
  from streamalert.shared.rule_table import RuleTable
  from streamalert.shared.stats import RuleStatisticTracker
label_desc: Use image node_id 14 for calling the RulesEngine obj's underlying member method code with example usage: obj.standardize_publisher_name(cls, string_or_reference) and returns: None, publisher_name