code: def _batch_update(
      self,
      remaining_time: float,
      batch_number: int,
      metrics_str: str,
      steps: Union[int, None] = None,
  ) -> str:
      update = ""
      if self.progress_bar:
          update += self._get_formatted_step(batch_number, steps)
  
          self.steps_progress_bar.update()
  
          update += str(
              self.steps_progress_bar
          ) + self._get_formatted_time(remaining_time, steps)
      else:
          update += self._get_formatted_step(
              batch_number, steps
          ) + self._get_formatted_time(remaining_time, steps)
  
      if metrics_str != "":
          update += self._get_formatted_metrics(metrics_str)
  
      if self.style_reset and not jupyter:
          # We skip it for Jupyter since the color token appear and otherwise the
          # traceback will be colored using a shell or else.
          update += Style.RESET_ALL
  
      return 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 24 for calling the ColorProgress obj's underlying member method code with example usage: obj._batch_update(remaining_time, batch_number, metrics_str, steps) and returns: update