class_docstr: The core component that manages LookupTables.
  
  This is designed to be a drop-in replacement for the original LookupTables class.
class_docstr_tok: ["The","core","component","that","manages","LookupTables",".","This","is","designed","to","be","a","drop-in","replacement","for","the","original","LookupTables","class","."]
docstr: After setup_tables are called, the tables are constructed and ready to use.
  
  HOWEVER, their internal drivers are not initialized until the tables are actually used.
  This delays the step where drivers initialize connections until right before they are used,
  preventing unnecessary memory usage.
docstr_tok: ["After","setup_tables","are","called",",","the","tables","are","constructed","and","ready","to","use",".","HOWEVER",",","their","internal","drivers","are","not","initialized","until","the","tables","are","actually","used",".","This","delays","the","step","where","drivers","initialize","connections","until","right","before","they","are","used",",","preventing","unnecessary","memory","usage","."]
code: def setup_tables(self):
      """
      After setup_tables are called, the tables are constructed and ready to use.
  
      HOWEVER, their internal drivers are not initialized until the tables are actually used.
      This delays the step where drivers initialize connections until right before they are used,
      preventing unnecessary memory usage.
      """
      if not self._configuration.is_enabled:
          LOGGER.debug("Skipping LookupTables as it is not enabled")
          return
  
      for (
          table_name,
          table_configuration,
      ) in self._configuration.table_configurations.items():
          driver = construct_persistence_driver(table_configuration)
          self._tables[table_name] = LookupTable(
              table_name, driver, table_configuration
          )
  
      LOGGER.info("LookupTablesCore initialized!")
  
file_path: streamalert/streamalert/shared/lookup_tables/core.py
imports: from streamalert.shared.config import load_config
  from streamalert.shared.logger import get_logger
  from streamalert.shared.lookup_tables.configuration import LookupTablesConfiguration
  from streamalert.shared.lookup_tables.drivers import NullDriver
  from streamalert.shared.lookup_tables.drivers_factory import construct_persistence_driver
  from streamalert.shared.lookup_tables.table import LookupTable
label_desc: Use image node_id 2 for calling the LookupTablesCore obj's underlying member method code with example usage: obj.setup_tables() without return types