code: def _get_metrics_string(self, logs: Dict) -> str:
      train_metrics_str_gen = (
          f"{k}: {logs[k]:f}"
          for k in self.metrics
          if logs.get(k) is not None
      )
      val_metrics_str_gen = (
          f"{'val_' + k}: {logs['val_' + k]:f}"
          for k in self.metrics
          if logs.get("val_" + k) is not None
      )
      return ", ".join(
          itertools.chain(train_metrics_str_gen, val_metrics_str_gen)
      )
  
imports: import itertools
  from typing import Callable, Dict
  from poutyne.framework.callbacks.callbacks import Callback
  from poutyne.framework.callbacks.color_formatting import ColorProgress
label_desc: Use image node_id 7 for calling the EpochProgressionCallback obj's underlying member method code with example usage: obj._get_metrics_string(logs) and returns: str