class_docstr: Defines the input data for the operator DAG.
  
  For example, this may hold cached blocks from a previous Dataset execution, or
  the arguments for read tasks.
docstr: Create an InputDataBuffer.
  
  Args:
      input_data: The list of bundles to output from this operator.
      input_data_factory: The factory to get input data, if input_data is None.
      num_output_blocks: The number of output blocks. If not specified, progress
          bars total will be set based on num output bundles instead.
docstr_tok: ["Create","an","InputDataBuffer",".","Args",":","input_data",":","The","list","of","bundles","to","output","from","this","operator",".","input_data_factory",":","The","factory","to","get","input","data",",","if","input_data","is","None",".","num_output_blocks",":","The","number","of","output","blocks",".","If","not","specified",",","progress","bars","total","will","be","set","based","on","num","output","bundles","instead","."]
code: def __init__(
      self,
      input_data: Optional[List[RefBundle]] = None,
      input_data_factory: Callable[[int], List[RefBundle]] = None,
      num_output_blocks: Optional[int] = None,
  ):
      """Create an InputDataBuffer.
  
      Args:
          input_data: The list of bundles to output from this operator.
          input_data_factory: The factory to get input data, if input_data is None.
          num_output_blocks: The number of output blocks. If not specified, progress
              bars total will be set based on num output bundles instead.
      """
      if input_data is not None:
          assert input_data_factory is None
          # Copy the input data to avoid mutating the original list.
          self._input_data = input_data[:]
          self._is_input_initialized = True
          self._initialize_metadata()
      else:
          # Initialize input lazily when execution is started.
          assert input_data_factory is not None
          self._input_data_factory = input_data_factory
          self._is_input_initialized = False
      self._num_output_blocks = num_output_blocks
      super().__init__("Input", [], target_max_block_size=None)
  
file_path: ray/python/ray/data/_internal/execution/operators/input_data_buffer.py
imports: from typing import Callable, List, Optional
  from ray.data._internal.execution.interfaces import ExecutionOptions, PhysicalOperator, RefBundle
  from ray.data._internal.stats import StatsDict
label_desc: Use image node_id 1 to create a new InputDataBuffer object from inherited base classes: PhysicalOperator with example: obj = InputDataBuffer(input_data, input_data_factory, num_output_blocks)