class_docstr: Manage shuffle execution for ray by resolve dependencies between mappers outputs and reducers inputs based on
  mapper and reducer index.
docstr: Check whether a subtask is a mapper subtask. Note the even this a mapper subtask, it can be a reducer subtask
  at the same time such as `DuplicateOperand`, see
  https://user-images.githubusercontent.com/12445254/174305282-f7c682a9-0346-47fe-a34c-1e384e6a1775.svg
docstr_tok: ["Check","whether","a","subtask","is","a","mapper","subtask",".","Note","the","even","this","a","mapper","subtask",",","it","can","be","a","reducer","subtask","at","the","same","time","such","as","`","DuplicateOperand","`",",","see","https",":","\/\/user-images.githubusercontent.com\/12445254\/174305282-f7c682a9-0346-47fe-a34c-1e384e6a1775.svg"]
code: def is_mapper(self, subtask: Subtask):
      """
      Check whether a subtask is a mapper subtask. Note the even this a mapper subtask, it can be a reducer subtask
      at the same time such as `DuplicateOperand`, see
      https://user-images.githubusercontent.com/12445254/174305282-f7c682a9-0346-47fe-a34c-1e384e6a1775.svg
      """
      return subtask in self._mapper_indices
  
file_path: mars/mars/services/task/execution/ray/shuffle.py
imports: import numpy
  from typing import List, Iterable
  from .....core.operand import MapReduceOperand, OperandStage
  from .....utils import lazy_import
  from ....subtask import Subtask, SubtaskGraph
label_desc: Use image node_id 7 for calling the ShuffleManager obj's underlying member method code with example usage: obj.is_mapper(subtask) and returns: unknown