docs: def put(self, path_or_tuple, folder_id='0', file_id=None, file_etag=None):
  		'''Upload a file, returning error if a file with the same "name" attribute exists,
  				unless valid file_id (and optionally file_etag,
  				to avoid race conditions, raises error 412) is provided.
  			folder_id is the id of a folder to put file into,
  				but only used if file_id keyword is not passed.'''
  		name, src = (basename(path_or_tuple), open(path_or_tuple))\
  			if isinstance(path_or_tuple, types.StringTypes)\
  			else (path_or_tuple[0], path_or_tuple[1])
  		folder_id = dict(parent_id=folder_id) if file_id is None else dict()
  		return self(
  			join('files', 'content') if file_id is None else join('files', bytes(file_id), 'content'),
  			method='post', upload=True,
  			headers={'If-Match': file_etag} if file_etag else dict(),
  			files=dict(filename=(name, src), **folder_id) )