class_docstr: Performs sampling based on input seeds grouped into batches by
  a batch id.  Writes the output minibatches to parquet, with
  partition sizes specified by the user.  Allows controlling the
  number of input seeds per sampling function call.  Supports
  basic logging.
  
  Batches in each partition that are empty are discarded, and the remaining non-empty
  batches are renumbered to be contiguous starting from the first
  batch id in the partition.
  This means that the output batch ids may not match the input batch ids.
  See GitHub issue #3794 for more details.
class_docstr_tok: ["Performs","sampling","based","on","input","seeds","grouped","into","batches","by","a","batch","id",".","Writes","the","output","minibatches","to","parquet",",","with","partition","sizes","specified","by","the","user",".","Allows","controlling","the","number","of","input","seeds","per","sampling","function","call",".","Supports","basic","logging",".","Batches","in","each","partition","that","are","empty","are","discarded",",","and","the","remaining","non-empty","batches","are","renumbered","to","be","contiguous","starting","from","the","first","batch","id","in","the","partition",".","This","means","that","the","output","batch","ids","may","not","match","the","input","batch","ids",".","See","GitHub","issue","#","3794","for","more","details","."]
docstr: Adds batches to this BulkSampler.
  
  Parameters
  ----------
  df: cudf.DataFrame or dask_cudf.DataFrame
      Contains columns for vertex ids, batch id
  start_col_name: str
      Name of the column containing the start vertices
  batch_col_name: str
      Name of the column containing the batch ids
  
  Returns
  -------
  None
  
  Examples
  --------
  >>> import cudf
  >>> from cugraph.gnn import BulkSampler
  >>> from cugraph.datasets import karate
  >>> import tempfile
  >>> df = cudf.DataFrame({
  ...     "start_vid": [0, 4, 2, 3, 9, 11],
  ...     "start_batch": cudf.Series(
  ...         [0, 0, 0, 1, 1, 1], dtype="int32")})
  >>> output_tempdir = tempfile.TemporaryDirectory()
  >>> bulk_sampler = BulkSampler(
  ...     batch_size=3,
  ...     output_path=output_tempdir.name,
  ...     graph=karate.get_graph(download=True))
  >>> bulk_sampler.add_batches(
  ...     df,
  ...     start_col_name="start_vid",
  ...     batch_col_name="start_batch")
docstr_tok: ["Adds","batches","to","this","BulkSampler",".","Parameters","--","--","--","--","--","df",":","cudf.DataFrame","or","dask_cudf.DataFrame","Contains","columns","for","vertex","ids",",","batch","id","start_col_name",":","str","Name","of","the","column","containing","the","start","vertices","batch_col_name",":","str","Name","of","the","column","containing","the","batch","ids","Returns","--","--","--","-","None","Examples","--","--","--","--",">",">",">","import","cudf",">",">",">","from","cugraph.gnn","import","BulkSampler",">",">",">","from","cugraph.datasets","import","karate",">",">",">","import","tempfile",">",">",">","df","=","cudf.DataFrame","(","{","...","``","start_vid","''",":","[","0",",","4",",","2",",","3",",","9",",","11","]",",","...","``","start_batch","''",":","cudf.Series","(","...","[","0",",","0",",","0",",","1",",","1",",","1","]",",","dtype=","''","int32","''",")","}",")",">",">",">","output_tempdir","=","tempfile.TemporaryDirectory","(",")",">",">",">","bulk_sampler","=","BulkSampler","(","...","batch_size=3",",","...","output_path=output_tempdir.name",",","...","graph=karate.get_graph","(","download=True",")",")",">",">",">","bulk_sampler.add_batches","(","...","df",",","...","start_col_name=","''","start_vid","''",",","...","batch_col_name=","''","start_batch","''",")"]
code: def add_batches(
      self,
      df: Union[cudf.DataFrame, dask_cudf.DataFrame],
      start_col_name: str,
      batch_col_name: str,
  ) -> None:
      """
      Adds batches to this BulkSampler.
  
      Parameters
      ----------
      df: cudf.DataFrame or dask_cudf.DataFrame
          Contains columns for vertex ids, batch id
      start_col_name: str
          Name of the column containing the start vertices
      batch_col_name: str
          Name of the column containing the batch ids
  
      Returns
      -------
      None
  
      Examples
      --------
      >>> import cudf
      >>> from cugraph.gnn import BulkSampler
      >>> from cugraph.datasets import karate
      >>> import tempfile
      >>> df = cudf.DataFrame({
      ...     "start_vid": [0, 4, 2, 3, 9, 11],
      ...     "start_batch": cudf.Series(
      ...         [0, 0, 0, 1, 1, 1], dtype="int32")})
      >>> output_tempdir = tempfile.TemporaryDirectory()
      >>> bulk_sampler = BulkSampler(
      ...     batch_size=3,
      ...     output_path=output_tempdir.name,
      ...     graph=karate.get_graph(download=True))
      >>> bulk_sampler.add_batches(
      ...     df,
      ...     start_col_name="start_vid",
      ...     batch_col_name="start_batch")
      """
      df = df[[start_col_name, batch_col_name]].rename(
          columns={
              start_col_name: self.start_col_name,
              batch_col_name: self.batch_col_name,
          }
      )
  
      if self.__batches is None:
          self.__batches = df
      else:
          if isinstance(df, type(self.__batches)):
              if isinstance(df, dask_cudf.DataFrame):
                  concat_fn = dask_cudf.concat
              else:
                  concat_fn = cudf.concat
              self.__batches = concat_fn([self.__batches, df])
          else:
              raise TypeError(
                  "Provided batches must match the dataframe"
                  " type of previous batches!"
              )
  
      if self.size >= self.seeds_per_call:
          self.__logger.info(
              f"Number of input seeds ({self.size})"
              f" is >= seeds per call ({self.seeds_per_call})."
              " Calling flush() to compute and write minibatches."
          )
          self.flush()
  
imports: import os
  from typing import Union
  import cudf
  import dask_cudf
  from dask.distributed import wait
  from dask.distributed import futures_of
  import cugraph
  import pylibcugraph
  from cugraph.gnn.data_loading.bulk_sampler_io import write_samples
  import warnings
  import logging
  import time
label_desc: Use image node_id 7 for calling the BulkSampler obj's underlying member method code with example usage: obj.add_batches(df, start_col_name, batch_col_name) without return types