docstr: Format on epoch end: the epoch ratio (so far / to do), the total time for the epoch, the steps done and the
  metrics name and values.
docstr_tok: ["Format","on","epoch","end",":","the","epoch","ratio","(","so","far","\/","to","do",")",",","the","total","time","for","the","epoch",",","the","steps","done","and","the","metrics","name","and","values","."]
code: def on_epoch_end(
      self,
      total_time: float,
      train_last_steps: int,
      valid_last_steps: int,
      metrics_str: str,
  ) -> None:
      """
      Format on epoch end: the epoch ratio (so far / to do), the total time for the epoch, the steps done and the
      metrics name and values.
      """
      update = self.epoch_formatted_text
      steps_text = self._get_formatted_step(
          train_last_steps,
          train_last_steps,
          prefix="train ",
          suffix="s",
          ratio=False,
      )
      if valid_last_steps is not None:
          valid_steps = self._get_formatted_step(
              valid_last_steps,
              valid_last_steps,
              prefix="val ",
              suffix="s",
              ratio=False,
          )
          steps_text += valid_steps
      update += steps_text + self._get_formatted_total_time(total_time)
      update += self._get_formatted_metrics(metrics_str)
  
      if self.style_reset:
          update += Style.RESET_ALL
  
      self._end_print(update)
  
imports: import math
  import sys
  import time
  import warnings
  from typing import Dict, Union
  from poutyne.framework.callbacks.progress_bar import ProgressBar
  from poutyne.utils import is_in_jupyter_notebook
label_desc: Use image node_id 12 for calling the ColorProgress obj's underlying member method code with example usage: obj.on_epoch_end(total_time, train_last_steps, valid_last_steps, metrics_str) without return types