code: def __init__(self, input_blocks_list, shuffle_map, map_args):
      self._input_blocks_list = input_blocks_list
      self._shuffle_map = shuffle_map
      self._map_args = map_args
  
      self._mapper_idx = 0
      self._map_results = []
  
imports: import logging
  import math
  from typing import Any, Callable, Dict, List, Optional, Tuple, TypeVar, Union
  import ray
  from ray.data._internal.block_list import BlockList
  from ray.data._internal.execution.interfaces import TaskContext
  from ray.data._internal.progress_bar import ProgressBar
  from ray.data._internal.remote_fn import cached_remote_fn
  from ray.data._internal.shuffle import ShuffleOp
  from ray.data.block import Block, BlockAccessor, BlockExecStats, BlockMetadata
  from ray.data.context import DataContext
  from ray.types import ObjectRef
  from ray.util.scheduling_strategies import NodeAffinitySchedulingStrategy
label_desc: Use image node_id 1 to create a new _MapStageIterator object  with example: obj = _MapStageIterator(input_blocks_list, shuffle_map, map_args)