class_docstr: Base class for a meta-dataset, where the classification tasks are over 
  multiple classes from a `ClassDataset`.
  
  Parameters
  ----------
  dataset : `ClassDataset` instance
      A dataset of classes. Each item of `dataset` is a dataset, containing 
      all the examples from the same class.
  
  num_classes_per_task : int
      Number of classes per tasks. This corresponds to `N` in `N-way` 
      classification.
  
  target_transform : callable, optional
      A function/transform that takes a target, and returns a transformed 
      version. See also `torchvision.transforms`.
  
  dataset_transform : callable, optional
      A function/transform that takes a dataset (ie. a task), and returns a 
      transformed version of it. E.g. `transforms.ClassSplitter()`.
code: def __getitem__(self, index):
      if isinstance(index, int):
          raise ValueError(
              "The index of a `CombinationMetaDataset` must be "
              "a tuple of integers, and not an integer. For example, call "
              "`dataset[({0})]` to get a task with classes from 0 to {1} "
              "(got `{2}`).".format(
                  ", ".join(
                      [
                          str(idx)
                          for idx in range(self.num_classes_per_task)
                      ]
                  ),
                  self.num_classes_per_task - 1,
                  index,
              )
          )
      assert len(index) == self.num_classes_per_task
      datasets = [self.dataset[i] for i in index]
      # Use deepcopy on `Categorical` target transforms, to avoid any side
      # effect across tasks.
      task = ConcatTask(
          datasets,
          self.num_classes_per_task,
          target_transform=wrap_transform(
              self.target_transform,
              self._copy_categorical,
              transform_type=Categorical,
          ),
      )
  
      if self.dataset_transform is not None:
          task = self.dataset_transform(task)
  
      return task
  
imports: import sys
  import numpy
  import warnings
  from copy import deepcopy
  from itertools import combinations
  from ordered_set import OrderedSet
  from torchvision.transforms import Compose
  from torchmeta.utils.data.task import ConcatTask
  from torchmeta.transforms import FixedCategory, Categorical, DefaultTargetTransform
  from torchmeta.transforms.utils import wrap_transform
label_desc: Use image node_id 4 for calling the CombinationMetaDataset obj's underlying member method code with example usage: obj.__getitem__(index) and returns: task