#NEWLINE# def put_object( self , container , obj , contents , headers = None , query = None , cdn = False ) : #NEWLINE# #INDENT# '\n        PUTs the object and returns the results. This is used to\n        create or overwrite objects. X-Object-Meta-xxx can optionally\n        be sent to be stored with the object. Content-Type,\n        Content-Encoding and other standard HTTP headers can often\n        also be set, depending on the Swift cluster.\n\n        Note that you can set the ETag header to the MD5 sum of the\n        contents for extra verification the object was stored\n        correctly.\n\n        :param container: The name of the container.\n        :param obj: The name of the object.\n        :param contents: The contents of the object to store. This can\n            be a simple str, or a file-like-object with at least a\n            read function. If the file-like-object also has tell and\n            seek functions, the PUT can be reattempted on any server\n            error.\n        :param headers: Additional headers to send with the request.\n        :param query: Set to a dict of query values to send on the\n            query string of the request.\n        :param cdn: If set True, the CDN management interface will be\n            used.\n        :returns: A tuple of (status, reason, headers, contents).\n\n            :status: is an int for the HTTP status code.\n            :reason: is the str for the HTTP status (ex: "Ok").\n            :headers: is a dict with all lowercase keys of the HTTP\n                headers; if a header has multiple values, it will be a\n                list.\n            :contents: is the str for the HTTP body.\n        ' #NEWLINE# path = self . _object_path ( container , obj ) #NEWLINE# return self . request ( 'PUT' , path , contents , self , query = query , cdn = cdn )