code: def put_files(self, files, content_type=None, compress=None, cache_control=None, block=True):
      
      def base_uploadfn(path, content, interface):
        interface.put_file(path, content, content_type, compress, cache_control=cache_control)
  
      for path, content in files:
        content = compression.compress(content, method=compress)
        uploadfn = partial(base_uploadfn, path, content)
  
        if len(self._threads):
          self.put(uploadfn)
        else:
          uploadfn(self._interface)
  
      if block:
        desc = 'Uploading' if self.progress else None
        self.wait(desc)
  
      return self
docs: Put lots of files at once and get a nice progress bar. It'll also wait
      for the upload to complete, just like get_files.
  
      Required:
        files: [ (filepath, content), .... ]