class_docstr: Physical operator for limit.
class_docstr_tok: ["Physical","operator","for","limit","."]
code: def num_outputs_total(self) -> int:
      # Before inputs are completed (either because the limit is reached or
      # because the inputs operators are done), we don't know how many output
      # bundles we will have. We estimate based off the consumption so far.
      if self._inputs_complete:
          return self._cur_output_bundles
      elif self._estimated_output_blocks is not None:
          return self._estimated_output_blocks
      else:
          return self.input_dependencies[0].num_outputs_total()
  
imports: import copy
  from collections import deque
  from typing import Deque, List, Tuple
  import ray
  from ray.data._internal.execution.interfaces import PhysicalOperator, RefBundle
  from ray.data._internal.execution.operators.base_physical_operator import OneToOneOperator
  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 8 for calling the LimitOperator obj's underlying member method code with example usage: obj.num_outputs_total() and returns: self, self, self