class_docstr: A lazy execution plan for a Dataset.
class_docstr_tok: ["A","lazy","execution","plan","for","a","Dataset","."]
docstr: Get the number of rows after applying all plan optimizations, if possible.
  
  This method will never trigger any computation.
  
  Returns:
      The number of records of the result Dataset, or None.
docstr_tok: ["Get","the","number","of","rows","after","applying","all","plan","optimizations",",","if","possible",".","This","method","will","never","trigger","any","computation",".","Returns",":","The","number","of","records","of","the","result","Dataset",",","or","None","."]
code: def meta_count(self) -> Optional[int]:
      """Get the number of rows after applying all plan optimizations, if possible.
  
      This method will never trigger any computation.
  
      Returns:
          The number of records of the result Dataset, or None.
      """
      if self.needs_eager_execution():
          # If the plan is input/read only, we execute it, so snapshot has output.
          # This applies to newly created dataset. For example, initial dataset
          # from read, and output datasets of Dataset.split().
          self.execute()
      # Snapshot is now guaranteed to be the final block or None.
      return self._get_num_rows_from_blocks_metadata(
          self._snapshot_blocks
      )
  
imports: import copy
  import itertools
  from typing import TYPE_CHECKING, Any, Callable, Dict, Iterable, Iterator, List, Optional, Tuple, Union
  import ray
  from ray._private.internal_api import get_memory_info_reply, get_state_from_address
  from ray.data._internal.block_list import BlockList
  from ray.data._internal.compute import ActorPoolStrategy, BlockTransform, CallableClass, ComputeStrategy, TaskPoolStrategy, UserDefinedFunction, get_compute, is_task_compute
  from ray.data._internal.dataset_logger import DatasetLogger
  from ray.data._internal.execution.interfaces import TaskContext
  from ray.data._internal.lazy_block_list import LazyBlockList
  from ray.data._internal.logical.interfaces.logical_operator import LogicalOperator
  from ray.data._internal.logical.operators.from_operators import AbstractFrom
  from ray.data._internal.logical.operators.input_data_operator import InputData
  from ray.data._internal.logical.operators.read_operator import Read
  from ray.data._internal.logical.rules.operator_fusion import _are_remote_args_compatible
  from ray.data._internal.stats import DatasetStats, DatasetStatsSummary
  from ray.data._internal.util import create_dataset_tag, unify_block_metadata_schema
  from ray.data.block import Block, BlockMetadata
  from ray.data.context import DataContext
  from ray.types import ObjectRef
  from ray.util.debug import log_once
label_desc: Use image node_id 12 for calling the ExecutionPlan obj's underlying member method code with example usage: obj.meta_count() and returns: self