docs: def _humanize_bytes(num_bytes, precision=1):
      """
      Return a humanized string representation of a number of num_bytes.
  
      from:
      http://code.activestate.com/recipes/
             577081-humanized-representation-of-a-number-of-num_bytes/
  
      Assumes `from __future__ import division`.
  
      >>> humanize_bytes(1)
      '1 byte'
      >>> humanize_bytes(1024)
      '1.0 kB'
      >>> humanize_bytes(1024*123)
      '123.0 kB'
      >>> humanize_bytes(1024*12342)
      '12.1 MB'
      >>> humanize_bytes(1024*12342,2)
      '12.05 MB'
      >>> humanize_bytes(1024*1234,2)
      '1.21 MB'
      >>> humanize_bytes(1024*1234*1111,2)
      '1.31 GB'
      >>> humanize_bytes(1024*1234*1111,1)
      '1.3 GB'
      """
      if num_bytes == 0:
          return 'no bytes'
      if num_bytes == 1:
          return '1 byte'
  
      factored_bytes = 0
      factor_suffix = 'bytes'
      for factor, suffix in ABBREVS:
          if num_bytes >= factor:
              factored_bytes = num_bytes / factor
              factor_suffix = suffix
              break
  
      if factored_bytes == 1:
          precision = 0
  
      return '{:.{prec}f} {}'.format(factored_bytes, factor_suffix,
                                     prec=precision)