def put(self, path_or_tuple, folder_id='<STR_LIT:0>', file_id=None, file_etag=None):
name, src = (basename(path_or_tuple), open(path_or_tuple))if isinstance(path_or_tuple, types.StringTypes)else (path_or_tuple[<NUM_LIT:0>], path_or_tuple[<NUM_LIT:1>])<EOL>folder_id = dict(parent_id=folder_id) if file_id is None else dict()<EOL>return self(<EOL>join('<STR_LIT>', '<STR_LIT:content>') if file_id is None else join('<STR_LIT>', bytes(file_id), '<STR_LIT:content>'),<EOL>method='<STR_LIT>', upload=True,<EOL>headers={'<STR_LIT>': file_etag} if file_etag else dict(),<EOL>files=dict(filename=(name, src), **folder_id) )<EOL>
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.