docs: def compress(d, output, fmt='gz', logger=None):
      '''
      Creates a compressed/uncompressed tar file.
  
      Args:
  
          d: Can be one of three things:
  
              1. the path to a single file, as a string
  
              2. the path to a single directory, as a string
  
              3. an iterable of file or directory paths
  
          output (str): Output file path.
  
          fmt: Compression method. Options are ``'gz'`` (gzip),
              ``'bz2'`` (bzip2) and ``'none'`` (uncompressed). Default is ``'gz'``.
      '''
      if not logger:
          logger = log.get_logger('s3')
      if type(d) not in [list, tuple]:
          d = [d, ]
      d = [os.path.expanduser(_d) for _d in d]
      print_compress_info(d, output, compress, logger)
      if fmt.lower() == 'none':
          fmt = ''
      elif fmt.lower() not in ['gz', 'bz2']:
          logger.info('Compression option ("{}") is invalid.\nFalling back to uncompressed.'.format(fmt))
          fmt = ''
      output = os.path.expanduser(output)
      tar = tarfile.open(output, 'w:{}'.format(fmt))
      for obj in d:
          tar.add(obj)
      tar.close()
      return output