code: def finish_upload(self, upload_id, hash_data, parent_data, remote_file_id):
          
          self.data_service.complete_upload(upload_id, hash_data.value, hash_data.alg)
          if remote_file_id:
              result = self.data_service.update_file(remote_file_id, upload_id)
              return result.json()
          else:
              result = self.data_service.create_file(parent_data.kind, parent_data.id, upload_id)
              return result.json()
docs: Complete the upload and create or update the file.
          :param upload_id: str: uuid of the upload we are completing
          :param hash_data: HashData: hash info about the file
          :param parent_data: ParentData: info about the parent of this file
          :param remote_file_id: str: uuid of this file if it already exists or None if it is a new file
          :return: dict: DukeDS details about this file