class_docstr: Base class for a dataset of classes. Each item from a `ClassDataset` is 
  a dataset containing examples from the same class.
  
  Parameters
  ----------
  meta_train : bool (default: `False`)
      Use the meta-train split of the dataset. If set to `True`, then the
      arguments `meta_val` and `meta_test` must be set to `False`. Exactly one 
      of these three arguments must be set to `True`.
  
  meta_val : bool (default: `False`)
      Use the meta-validation split of the dataset. If set to `True`, then the 
      arguments `meta_train` and `meta_test` must be set to `False`. Exactly one 
      of these three arguments must be set to `True`.
  
  meta_test : bool (default: `False`)
      Use the meta-test split of the dataset. If set to `True`, then the 
      arguments `meta_train` and `meta_val` must be set to `False`. Exactly one 
      of these three arguments must be set to `True`.
  
  meta_split : string in {'train', 'val', 'test'}, optional
      Name of the split to use. This overrides the arguments `meta_train`, 
      `meta_val` and `meta_test`.
  
  class_augmentations : list of callable, optional
      A list of functions that augment the dataset with new classes. These classes 
      are transformations of existing classes. E.g. `transforms.HorizontalFlip()`.
code: def __init__(
      self,
      meta_train=False,
      meta_val=False,
      meta_test=False,
      meta_split=None,
      class_augmentations=None,
  ):
      if meta_train + meta_val + meta_test == 0:
          if meta_split is None:
              raise ValueError(
                  "The meta-split is undefined. Use either the "
                  "argument `meta_train=True` (or `meta_val`/`meta_test`), or "
                  'the argument `meta_split="train"` (or "val"/"test").'
              )
          elif meta_split not in ["train", "val", "test"]:
              raise ValueError(
                  "Unknown meta-split name `{0}`. The meta-split "
                  "must be in [`train`, `val`, `test`].".format(
                      meta_split
                  )
              )
          meta_train = meta_split == "train"
          meta_val = meta_split == "val"
          meta_test = meta_split == "test"
      elif meta_train + meta_val + meta_test > 1:
          raise ValueError(
              "Multiple arguments among `meta_train`, `meta_val` "
              "and `meta_test` are set to `True`. Exactly one must be set to "
              "`True`."
          )
      self.meta_train = meta_train
      self.meta_val = meta_val
      self.meta_test = meta_test
      self._meta_split = meta_split
  
      if class_augmentations is not None:
          if not isinstance(class_augmentations, list):
              raise TypeError(
                  "Unknown type for `class_augmentations`. "
                  "Expected `list`, got `{0}`.".format(
                      type(class_augmentations)
                  )
              )
          unique_augmentations = OrderedSet()
          for augmentations in class_augmentations:
              for transform in augmentations:
                  if transform in unique_augmentations:
                      warnings.warn(
                          "The class augmentation `{0}` already "
                          "exists in the list of class augmentations (`{1}`). "
                          "To avoid any duplicate, this transformation is "
                          "ignored.".format(transform, repr(transform)),
                          UserWarning,
                          stacklevel=2,
                      )
                  unique_augmentations.add(transform)
          class_augmentations = list(unique_augmentations)
      else:
          class_augmentations = []
      self.class_augmentations = class_augmentations
  
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 1 to create a new ClassDataset object from inherited base classes: object with example: obj = ClassDataset(meta_train, meta_val, meta_test, meta_split, class_augmentations)