class_docstr: Class to write a TFDS dataset sequentially.
  
  The SequentialWriter can be used to generate TFDS datasets by directly
  appending TF Examples to the desired splits.
  
  Once the user creates a SequentialWriter with a given DatasetInfo, they can
  create splits, append examples to them, and close them whenever they are
  finished.
  
  Note that:
  * Not closing a split may cause data to be lost.
  * The examples are written to disk in the same order that they are given to
    the writer.
  * Since the SequentialWriter doesn't know how many examples are going to be
    written, it can't estimate the optimal number of shards per split. Use the
    `max_examples_per_shard` parameter in the constructor to control how many
    elements there should be per shard.
  
  The datasets written with this writer can be read directly with
  `tfds.builder_from_directories`.
  
  Example:
  
  writer = SequentialWriter(ds_info=ds_info, max_examples_per_shard=1000)
  writer.initialize_splits(['train', 'test'])
  
  while (...):
    # Code that generates the examples
    writer.add_examples({'train': [example1, example2],
                         'test':  [example3]})
    ...
  
  writer.close_splits()
docstr: Adds new splits to the dataset.
  
  Args:
    splits: list of split names to add.
    fail_if_exists: will fail if this split already contains data.
  
  Raises:
    KeyError: if the split is already present.
docstr_tok: ["Adds","new","splits","to","the","dataset",".","Args",":","splits",":","list","of","split","names","to","add",".","fail_if_exists",":","will","fail","if","this","split","already","contains","data",".","Raises",":","KeyError",":","if","the","split","is","already","present","."]
code: def initialize_splits(
      self, splits: List[str], fail_if_exists: bool = True
  ) -> None:
      """Adds new splits to the dataset.
  
      Args:
        splits: list of split names to add.
        fail_if_exists: will fail if this split already contains data.
  
      Raises:
        KeyError: if the split is already present.
      """
      for split in splits:
          if split in self._splits:
              if fail_if_exists:
                  raise KeyError(
                      f"Split {split} was already initialized."
                  )
              else:
                  continue
          self._splits[split] = _initialize_split(
              split_name=split,
              data_directory=self._data_dir,
              ds_name=self._ds_name,
              filetype_suffix=self._filetype_suffix,
              file_format=self._file_format,
          )
      self._write_splits_metadata()
  
imports: from __future__ import annotations
  import dataclasses
  import os
  from typing import Any, Dict, List, Optional
  from tensorflow_datasets.core import dataset_info
  from tensorflow_datasets.core import example_serializer
  from tensorflow_datasets.core import features
  from tensorflow_datasets.core import file_adapters
  from tensorflow_datasets.core import naming
  from tensorflow_datasets.core import splits
  from tensorflow_datasets.core.utils import py_utils
  from tensorflow_datasets.core.utils.lazy_imports_utils import array_record_module
  from tensorflow_datasets.core.utils.lazy_imports_utils import tensorflow
label_desc: Use image node_id 2 for calling the SequentialWriter obj's underlying member method code with example usage: obj.initialize_splits(splits, fail_if_exists) without return types