class_docstr: Base class for Arrow Datasets to provide columns used in record batches
  and corresponding output tensor types, shapes and classes.
code: def __init__(
      self,
      make_variant_fn,
      columns,
      output_types,
      output_shapes=None,
      batch_size=None,
      batch_mode="keep_remainder",
  ):
      self._columns = columns
      self._structure = structure_lib.convert_legacy_structure(
          output_types,
          output_shapes
          or nest.map_structure(
              lambda _: tf.TensorShape(None), output_types
          ),
          nest.map_structure(lambda _: tf.Tensor, output_types),
      )
      self._batch_size = tf.convert_to_tensor(
          batch_size or 0, dtype=dtypes.int64, name="batch_size"
      )
      if batch_mode not in self.batch_modes_supported:
          raise ValueError(
              "Unsupported batch_mode: '{}', must be one of {}".format(
                  batch_mode, self.batch_modes_supported
              )
          )
      self._batch_mode = tf.convert_to_tensor(
          batch_mode, dtypes.string, name="batch_mode"
      )
      if batch_size is not None or batch_mode == "auto":
          spec_batch_size = (
              batch_size if batch_mode == "drop_remainder" else None
          )
          # pylint: disable=protected-access
          self._structure = nest.map_structure(
              lambda component_spec: component_spec._batch(
                  spec_batch_size
              ),
              self._structure,
          )
      variant_tensor = make_variant_fn(
          columns=self._columns,
          batch_size=self._batch_size,
          batch_mode=self._batch_mode,
          **self._flat_structure,
      )
      super().__init__(variant_tensor)
  
imports: from functools import partial
  import io
  from itertools import chain
  import os
  import socket
  import threading
  import tempfile
  import tensorflow
  from tensorflow import dtypes
  from tensorflow.python.data.ops import dataset_ops
  from tensorflow.python.data.util import structure
  from tensorflow_io.python.ops import core_ops
label_desc: Use image node_id 1 to create a new ArrowBaseDataset object from inherited base classes: dataset_ops with example: obj = ArrowBaseDataset(make_variant_fn, columns, output_types, output_shapes, batch_size, batch_mode)