code: def set_ids(self, dxid, project=None):
          '''
          :param dxid: Object ID
          :type dxid: string
          :param project: Project ID
          :type project: string
  
          Discards the currently stored ID and associates the handler with
          *dxid*. As a side effect, it also flushes the buffer for the
          previous file object if the buffer is nonempty.
          '''
          if self._dxid is not None:
              self.flush()
  
          DXDataObject.set_ids(self, dxid, project)
  
          # Reset state
          self._pos = 0
          self._file_length = None
          self._cur_part = 1
          self._num_uploaded_parts = f set_ids(self, dxid, project=None):
          '''
          :param dxid: Object ID
          :type dxid: string
          :param project: Project ID
          :type project: string
  
          Discards the currently stored ID and associates the handler with
          *dxid*. As a side effect, it also flushes the buffer for the
          previous file object if the buffer is nonempty.
          '''
          if self._dxid is not None:
              self.flush()
  
          DXDataObject.set_ids(self, dxid, project)
  
          # Reset state
          self._pos = 0
          self._file_length = None
          self._cur_part = 1
          self._num_uploaded_parts = 0
docs: :param dxid: Object ID
          :type dxid: string
          :param project: Project ID
          :type project: string
  
          Discards the currently stored ID and associates the handler with
          *dxid*. As a side effect, it also flushes the buffer for the
          previous file object if the buffer is nonempty.