code: def add_task(
      self,
      description: str = "Progress",
      start: bool = True,
      total: float = 100.0,
      completed: int = 0,
      visible: bool = True,
      **fields: Any,
  ) -> TaskID:
      from .tqdm_progress import f_tqdm_progress
  
      assert (
          not f_tqdm_progress.not_empty()
      ), "Cannot use rich before tqdm finish loop."
  
      # 如果需要替换，应该是由于destroy的时候给换掉了
      if self._need_renew_live:
          self.live = Live(
              console=get_console(),
              auto_refresh=self.auto_refresh,
              refresh_per_second=self.refresh_per_second,
              transient=self.transient,
              redirect_stdout=self.redirect_stdout,
              redirect_stderr=self.redirect_stderr,
              get_renderable=self.get_renderable,
          )
          self._need_renew_live = False
      if not self.live.is_started:
          self.start()
      post_desc = fields.pop("post_desc", "")
      return super().add_task(
          description=description,
          start=start,
          total=total,
          completed=completed,
          visible=visible,
          post_desc=post_desc,
          **fields,
      )
  
imports: import sys
  from typing import Any, Union, Optional
  from rich.progress import Progress, Console, GetTimeCallable, get_console, TaskID, Live, Text, ProgressSample
  from rich.progress import ProgressColumn, TimeRemainingColumn, BarColumn, TimeElapsedColumn, TextColumn
  from fastNLP.envs import get_global_rank
  from .utils import is_notebook
label_desc: Use image node_id 4 for calling the FRichProgress obj's underlying member method code with example usage: obj.add_task(description, start, total, completed, visible) and returns: super