code: def _reporthook(count, block_size, total_size):
      global start_time
      if count == 0:
          start_time = time.time()
          print("  %   Total    Recv       Speed  Time left")
          return
      duration = time.time() - start_time
      progress_size = count * block_size
      try:
          speed = progress_size / duration
      except ZeroDivisionError:
          speed = float("inf")
      percent = progress_size / total_size * 100
      eta = int((total_size - progress_size) / speed)
      sys.stdout.write(
          "\r{:3.0f} {:4.0f}MiB {:4.0f}MiB {:6.0f}KiB/s {:4d}:{:02d}:{:02d}".format(
              percent,
              total_size / (1 << 20),
              progress_size / (1 << 20),
              speed / (1 << 10),
              eta // 60 // 60,
              (eta // 60) % 60,
              eta % 60,
          )
      )
      sys.stdout.flush()
  
file_path: chainercv/chainercv/utils/download.py
imports: from __future__ import division
  from __future__ import print_function
  from distutils.util import strtobool
  import hashlib
  import os
  import shutil
  import tarfile
  import tempfile
  import zipfile
  import filelock
  from six.moves.urllib import request
  import sys
  import time
  from chainer.dataset.download import get_dataset_directory
  from chainer.dataset.download import get_dataset_root
label_desc: Use image node_id 1 for calling a global function with example usage: _reporthook(count, block_size, total_size) without return types