code: def iter_rows(
      self, public_row_format: bool
  ) -> Iterator[Union[Mapping, np.ndarray]]:
      outer = self
  
      class Iter:
          def __init__(self):
              self._cur = -1
  
          def __iter__(self):
              return self
  
          def __next__(self):
              self._cur += 1
              if self._cur < outer.num_rows():
                  row = outer._get_row(self._cur)
                  if public_row_format and isinstance(row, TableRow):
                      return row.as_pydict()
                  else:
                      return row
              raise StopIteration
  
      return Iter()
  
imports: import collections
  from typing import TYPE_CHECKING, Any, Dict, Iterator, List, Mapping, TypeVar, Union
  import numpy
  from ray.air.constants import TENSOR_COLUMN_NAME
  from ray.data._internal.block_builder import BlockBuilder
  from ray.data._internal.numpy_support import convert_udf_returns_to_numpy, is_array_like
  from ray.data._internal.size_estimator import SizeEstimator
  from ray.data.block import Block, BlockAccessor
  from ray.data.row import TableRow
label_desc: Use image node_id 8 for calling the TableBlockAccessor obj's underlying member method code with example usage: obj.iter_rows(public_row_format) and returns: Iter, self, row, row