class_docstr: Parallel file upload class.
  
  This manages uploading multiple files in parallel. It will restart a given file's
  upload job if it receives a notification that that file has been modified. The
  finish() method will block until all events have been processed and all uploads are
  complete.
class_docstr_tok: ["Parallel","file","upload","class",".","This","manages","uploading","multiple","files","in","parallel",".","It","will","restart","a","given","file's","upload","job","if","it","receives","a","notification","that","that","file","has","been","modified",".","The","finish","(",")","method","will","block","until","all","events","have","been","processed","and","all","uploads","are","complete","."]
code: def print_status(self, prefix: bool = True) -> None:
      step = 0
      spinner_states = ["-", "\\", "|", "/"]
      stop = False
      while True:
          if not self.is_alive():
              stop = True
          summary = self._stats.summary()
          line = " {:.2f}MB of {:.2f}MB uploaded ({:.2f}MB deduped)\r".format(
              summary.uploaded_bytes / 1048576.0,
              summary.total_bytes / 1048576.0,
              summary.deduped_bytes / 1048576.0,
          )
          line = spinner_states[step % 4] + line
          step += 1
          wandb.termlog(line, newline=False, prefix=prefix)
          if stop:
              break
          time.sleep(0.25)
      dedupe_fraction = (
          summary.deduped_bytes / float(summary.total_bytes)
          if summary.total_bytes > 0
          else 0
      )
      if dedupe_fraction > 0.01:
          wandb.termlog(
              "W&B sync reduced upload amount by %.1f%%             "
              % (dedupe_fraction * 100),
              prefix=prefix,
          )
      # clear progress line.
      wandb.termlog(" " * 79, prefix=prefix)
  
imports: import concurrent.futures
  import logging
  import os
  import queue
  import tempfile
  import threading
  import time
  from typing import TYPE_CHECKING, Optional, Tuple
  import wandb
  import wandb.util
  from wandb.filesync import stats, step_checksum, step_upload
  from wandb.sdk.lib.paths import LogicalPath
label_desc: Use image node_id 4 for calling the FilePusher obj's underlying member method code with example usage: obj.print_status(prefix) without return types