code: def allocate_ids(self, incomplete_key, num_ids):
          
          if not incomplete_key.is_partial:
              raise ValueError(("Key is not partial.", incomplete_key))
  
          incomplete_key_pb = incomplete_key.to_protobuf()
          incomplete_key_pbs = [incomplete_key_pb] * num_ids
  
          response_pb = self._datastore_api.allocate_ids(
              incomplete_key.project, incomplete_key_pbs
          )
          allocated_ids = [
              allocated_key_pb.path[-1].id for allocated_key_pb in response_pb.keys
          ]
          return [
              incomplete_key.completed_key(allocated_id) for allocated_id in allocated_ids
          ]
docs: Allocate a list of IDs from a partial key.
  
          :type incomplete_key: :class:`google.cloud.datastore.key.Key`
          :param incomplete_key: Partial key to use as base for allocated IDs.
  
          :type num_ids: int
          :param num_ids: The number of IDs to allocate.
  
          :rtype: list of :class:`google.cloud.datastore.key.Key`
          :returns: The (complete) keys allocated with ``incomplete_key`` as
                    root.
          :raises: :class:`ValueError` if ``incomplete_key`` is not a
                   partial key.