docstr: Create massages
code: def _create_massages(
      self, log_groups: Dict[str, Dict[str, List[LogItem]]]
  ) -> List[str]:
      """Create massages"""
      massages = []
      for group_name, group_logs in log_groups.items():
          massages.append(group_name)
          for metric_name, log_items in group_logs.items():
              if len(log_items) == 0:
                  msg = "\t{metric_name:16} \t (no values!)".format(
                      metric_name=metric_name
                  )
              else:
                  values = [log_item.value for log_item in log_items]
                  min_val = min(values)
                  max_val = max(values)
                  current_val = values[-1]
                  msg = self.massage_template.format(
                      metric_name=metric_name,
                      min=min_val,
                      max=max_val,
                      current=current_val,
                  )
              massages.append(msg)
      return massages
  
file_path: livelossplot/livelossplot/outputs/extrema_printer.py
imports: from typing import Dict, List
  from livelossplot.main_logger import LogItem
  from livelossplot.main_logger import MainLogger
  from .base_output import BaseOutput
label_desc: Use image node_id 3 for calling the ExtremaPrinter obj's underlying member method code with example usage: obj._create_massages(log_groups) and returns: massages