class_docstr: Provides accessor methods for a specific block.
  
  Ideally, we wouldn't need a separate accessor classes for blocks. However,
  this is needed if we want to support storing ``pyarrow.Table`` directly
  as a top-level Ray object, without a wrapping class (issue #17186).
class_docstr_tok: ["Provides","accessor","methods","for","a","specific","block",".","Ideally",",","we","would","n't","need","a","separate","accessor","classes","for","blocks",".","However",",","this","is","needed","if","we","want","to","support","storing","``","pyarrow.Table","``","directly","as","a","top-level","Ray","object",",","without","a","wrapping","class","(","issue","#","17186",")","."]
docstr: Return the number of rows contained in this block.
docstr_tok: ["Return","the","number","of","rows","contained","in","this","block","."]
code: def num_rows(self) -> int:
      """Return the number of rows contained in this block."""
      raise NotImplementedError
  
imports: import collections
  import os
  import time
  from dataclasses import dataclass
  from typing import TYPE_CHECKING, Callable, Dict, Iterator, List, Literal, Optional, Protocol, Tuple, TypeVar, Union
  import numpy
  import ray
  from ray import DynamicObjectRefGenerator
  from ray.data._internal.util import _check_pyarrow_version, _truncated_repr
  from ray.types import ObjectRef
  from ray.util.annotations import DeveloperAPI
  import psutil
label_desc: Use image node_id 1 for calling the BlockAccessor obj's underlying member method code with example usage: obj.num_rows() without return types