class_docstr: An operator that splits the given data into `n` output splits.
  
  The output bundles of this operator will have a `bundle.output_split_idx` attr
  set to an integer from [0..n-1]. This operator tries to divide the rows evenly
  across output splits. If the `equal` option is set, the operator will furthermore
  guarantee an exact split of rows across outputs, truncating the Dataset.
  
  Implementation wise, this operator keeps an internal buffer of bundles. The buffer
  has a minimum size calculated to enable a good locality hit rate, as well as ensure
  we can satisfy the `equal` requirement.
  
  OutputSplitter does not provide any ordering guarantees.
class_docstr_tok: ["An","operator","that","splits","the","given","data","into","`","n","`","output","splits",".","The","output","bundles","of","this","operator","will","have","a","`","bundle.output_split_idx","`","attr","set","to","an","integer","from","[","0","..","n-1","]",".","This","operator","tries","to","divide","the","rows","evenly","across","output","splits",".","If","the","`","equal","`","option","is","set",",","the","operator","will","furthermore","guarantee","an","exact","split","of","rows","across","outputs",",","truncating","the","Dataset",".","Implementation","wise",",","this","operator","keeps","an","internal","buffer","of","bundles",".","The","buffer","has","a","minimum","size","calculated","to","enable","a","good","locality","hit","rate",",","as","well","as","ensure","we","can","satisfy","the","`","equal","`","requirement",".","OutputSplitter","does","not","provide","any","ordering","guarantees","."]
code: def _select_output_index(self) -> int:
      # Greedily dispatch to the consumer with the least data so far.
      i, _ = min(enumerate(self._num_output), key=lambda t: t[1])
      return i
  
imports: import math
  from collections import deque
  from typing import Any, Dict, List, Optional
  from ray.data._internal.execution.interfaces import ExecutionOptions, ExecutionResources, NodeIdStr, PhysicalOperator, RefBundle
  from ray.data._internal.execution.util import locality_string
  from ray.data._internal.remote_fn import cached_remote_fn
  from ray.data._internal.stats import StatsDict
  from ray.data.block import Block, BlockAccessor, BlockMetadata
  from ray.types import ObjectRef
label_desc: Use image node_id 14 for calling the OutputSplitter obj's underlying member method code with example usage: obj._select_output_index() and returns: i