class_docstr: An operator that zips its inputs together.
  
  NOTE: the implementation is bulk for now, which materializes all its inputs in
  object store, before starting execution. Should re-implement it as a streaming
  operator in the future.
class_docstr_tok: ["An","operator","that","zips","its","inputs","together",".","NOTE",":","the","implementation","is","bulk","for","now",",","which","materializes","all","its","inputs","in","object","store",",","before","starting","execution",".","Should","re-implement","it","as","a","streaming","operator","in","the","future","."]
docstr: Create a ZipOperator.
  
  Args:
      left_input_ops: The input operator at left hand side.
      right_input_op: The input operator at right hand side.
docstr_tok: ["Create","a","ZipOperator",".","Args",":","left_input_ops",":","The","input","operator","at","left","hand","side",".","right_input_op",":","The","input","operator","at","right","hand","side","."]
code: def __init__(
      self,
      left_input_op: PhysicalOperator,
      right_input_op: PhysicalOperator,
  ):
      """Create a ZipOperator.
  
      Args:
          left_input_ops: The input operator at left hand side.
          right_input_op: The input operator at right hand side.
      """
      self._left_buffer: List[RefBundle] = []
      self._right_buffer: List[RefBundle] = []
      self._output_buffer: List[RefBundle] = []
      self._stats: StatsDict = {}
      super().__init__(
          "Zip",
          [left_input_op, right_input_op],
          target_max_block_size=None,
      )
  
imports: import itertools
  from typing import List, Tuple
  import ray
  from ray.data._internal.delegating_block_builder import DelegatingBlockBuilder
  from ray.data._internal.execution.interfaces import PhysicalOperator, RefBundle
  from ray.data._internal.remote_fn import cached_remote_fn
  from ray.data._internal.split import _split_at_indices
  from ray.data._internal.stats import StatsDict
  from ray.data.block import Block, BlockAccessor, BlockExecStats, BlockMetadata, BlockPartition
label_desc: Use image node_id 1 to create a new ZipOperator object from inherited base classes: PhysicalOperator with example: obj = ZipOperator(left_input_op, right_input_op)