class_docstr: This merges several maskers for different inputs together into a single composite masker.
  
  This is not yet implemented.
class_docstr_tok: ["This","merges","several","maskers","for","different","inputs","together","into","a","single","composite","masker",".","This","is","not","yet","implemented","."]
code: def __init__(self, *maskers):
      self.maskers = maskers
  
      self.arg_counts = []
      self.total_args = 0
      self.text_data = False
      self.image_data = False
      all_have_clustering = True
      for masker in self.maskers:
          all_args = masker.__call__.__code__.co_argcount
  
          if (
              masker.__call__.__defaults__ is not None
          ):  # in case there are no kwargs
              kwargs = len(masker.__call__.__defaults__)
          else:
              kwargs = 0
          num_args = all_args - kwargs - 2
          self.arg_counts.append(
              num_args
          )  # -2 is for the self and mask arg
          self.total_args += num_args
  
          if not hasattr(masker, "clustering"):
              all_have_clustering = False
  
          self.text_data = self.text_data or getattr(
              masker, "text_data", False
          )
          self.image_data = self.image_data or getattr(
              masker, "image_data", False
          )
  
      if all_have_clustering:
          self.clustering = types.MethodType(joint_clustering, self)
  
file_path: shap/shap/maskers/_composite.py
imports: import types
  from ..utils._exceptions import InvalidMaskerError
  from ._masker import Masker
label_desc: Use image node_id 1 to create a new Composite object from inherited base classes: Masker with example: obj = Composite()