code: def naturalsize(value, binary=False, gnu=False, format='%.1f'):
      
      if gnu: suffix = suffixes['gnu']
      elif binary: suffix = suffixes['binary']
      else: suffix = suffixes['decimal']
  
      base = 1024 if (gnu or binary) else 1000
      bytes = float(value)
  
      if bytes == 1 and not gnu: return '1 Byte'
      elif bytes < base and not gnu: return '%d Bytes' % bytes
      elif bytes < base and gnu: return '%dB' % bytes
  
      for i,s in enumerate(suffix):
          unit = base ** (i+2)
          if bytes < unit and not gnu:
              return (format + ' %s') % ((base * bytes / unit), s)
          elif bytes < unit and gnu:
              return (format + '%s') % ((base * bytes / unit), s)
      if gnu:
          return (format + '%s') % ((base * bytes / unit), s)
      return (format + ' %s') % ((base * bytes / unit), s)
docs: Format a number of byteslike a human readable filesize (eg. 10 kB).  By
      default, decimal suffixes (kB, MB) are used.  Passing binary=true will use
      binary suffixes (KiB, MiB) are used and the base will be 2**10 instead of
      10**3.  If ``gnu`` is True, the binary argument is ignored and GNU-style
      (ls -sh style) prefixes are used (K, M) with the 2**10 definition.
      Non-gnu modes are compatible with jinja2's ``filesizeformat`` filter.