def delete_batch(self,
                     ids: List[str],
                     schema: str,
                     concurrency: Optional[int] = None,
                     timeout: int = 60) -> DeleteBatchResponse:
        """
        Delete a batch of documents by ID concurrently.

        Documents will be deleted with `concurrency` concurrent pooled connections.

        Args:
            ids: List of document IDs to delete
            schema: Schema to delete from
            concurrency: Number of concurrent delete requests
            timeout: Timeout in seconds per request

        Returns:
            A DeleteBatchResponse object
        """
        if not ids:
            return DeleteBatchResponse(responses=[], errors=False)

        if concurrency is None:
            concurrency = self.delete_pool_size

        batch_response = conc.run_coroutine(
            self._delete_batch_async(ids, schema, concurrency, timeout)
        )

        return batch_response

        Delete a batch of documents by ID concurrently.

        Documents will be deleted with `concurrency` concurrent pooled connections.

        Args:
            ids: List of document IDs to delete
            schema: Schema to delete from
            concurrency: Number of concurrent delete requests
            timeout: Timeout in seconds per request

        Returns:
            A DeleteBatchResponse object
        
src/marqo/vespa/vespa_client.py