class_docstr: Logical operator for input data.
  
  This may hold cached blocks from a previous Dataset execution, or
  the arguments for read tasks.
class_docstr_tok: ["Logical","operator","for","input","data",".","This","may","hold","cached","blocks","from","a","previous","Dataset","execution",",","or","the","arguments","for","read","tasks","."]
code: def __init__(
      self,
      input_data: Optional[List[RefBundle]] = None,
      input_data_factory: Optional[
          Callable[[], List[RefBundle]]
      ] = None,
  ):
      assert (input_data is None) != (
          input_data_factory is None
      ), "Only one of input_data and input_data_factory should be set."
      super().__init__(
          "InputData",
          [],
          len(input_data) if input_data is not None else None,
      )
      self.input_data = input_data
      self.input_data_factory = input_data_factory
  
imports: from typing import Callable, List, Optional
  from ray.data._internal.execution.interfaces import RefBundle
  from ray.data._internal.logical.interfaces import LogicalOperator
label_desc: Use image node_id 1 to create a new InputData object from inherited base classes: LogicalOperator with example: obj = InputData(input_data, input_data_factory)