docs: def upload_file(self, file_or_path, obj_name=None, content_type=None,
              etag=None, return_none=False, content_encoding=None, ttl=None,
              content_length=None, headers=None):
          """
          Uploads the specified file to this container. If no name is supplied,
          the file's name will be used. Either a file path or an open file-like
          object may be supplied. A StorageObject reference to the uploaded file
          will be returned, unless 'return_none' is set to True.
  
          You may optionally set the `content_type` and `content_encoding`
          parameters; pyrax will create the appropriate headers when the object
          is stored.
  
          If the size of the file is known, it can be passed as `content_length`.
  
          If you wish for the object to be temporary, specify the time it should
          be stored in seconds in the `ttl` parameter. If this is specified, the
          object will be deleted after that number of seconds.
  
          The 'extra_info' parameter is included for backwards compatibility. It
          is no longer used at all, and will not be modified with swiftclient
          info, since swiftclient is not used any more.
          """
          return self.create(file_or_path=file_or_path, obj_name=obj_name,
                  content_type=content_type, etag=etag,
                  content_encoding=content_encoding, headers=headers,
                  content_length=content_length, ttl=ttl,
                  return_none=return_none)